Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
CycleCloud offre due meccanismi per controllare l'integrità delle macchine virtuali: i controlli di integrità dei nodi sono funzionalità più recenti che eseguono i controlli durante la fase di provisioning e impediscono l'aggiunta delle macchine virtuali non integre, mentre HealthCheck li esegue periodicamente dopo che la macchina virtuale viene aggiunta al cluster come nodo.
Controlli di integrità dei nodi
I controlli di integrità del nodo rilevano l'hardware non integro prima che una macchina virtuale unisce un cluster CycleCloud. Questa funzionalità esegue script di controllo integrità incorporati nelle immagini ufficiali di AzureHPC disponibili in /opt/azurehpc/test/azurehpc-health-checks/. L'origine di questi script si trova nel repository AzureHPC Node Health Checks, ma la versione incorporata nella versione del cluster dell'immagine AzureHPC potrebbe non essere quella più recente disponibile nel repository.
Requisiti
La versione corrente dei controlli di integrità dei nodi supporta solo le immagini AzureHPC rilasciate dopo il 7 novembre 2023 (contenente azurehpc-health-checks versione 2.0.6 o successiva) e immagini personalizzate derivate da essi. I controlli di integrità dei nodi attualmente non supportano Windows.
Abilitare i controlli di integrità dei nodi per i cluster Slurm
Il modulo di creazione del cluster Slurm offre una casella di controllo per abilitare i controlli di integrità dei nodi che si trovano nella scheda Impostazioni avanzate . Quando si seleziona la casella di controllo, si abilitano i controlli di integrità dei nodi nella matrice di nodi HPC del cluster. Per abilitare i controlli di integrità dei nodi in altre matrici di nodi o per altri tipi di cluster, usare un modello di cluster personalizzato.
È possibile disabilitare i controlli di integrità dei nodi in un cluster in esecuzione deselezionando la casella di controllo. Non è necessario ridimensionare la matrice di nodi per rendere effettive le modifiche.

Informazioni sui risultati del controllo dell'integrità dei nodi
Dopo che una macchina virtuale supera i controlli di integrità, passa alla fase di configurazione software.
Se una macchina virtuale non supera uno degli script di controllo dell'integrità, invia un messaggio di errore a CycleCloud e impedisce automaticamente alla macchina virtuale di partecipare al cluster.

Se si avvia la macchina virtuale in un NodeArray con over-provisioning abilitato (ad esempio, l'array di nodi hpc Slurm), la macchina virtuale viene sostituita automaticamente come parte del provisioning eccessivo. In questo caso, non è necessario eseguire alcuna azione. Le macchine virtuali integre vengono unite al cluster, anche se nella pagina del cluster viene visualizzato un messaggio di errore che indica che una o più macchine virtuali non sono riuscite.
Se si avvia la macchina virtuale per un singolo nodo ma si disabilita l'over-provisioning nella matrice di nodi (ad esempio la matrice di nodi htc Slurm), o se più macchine virtuali falliscono i controlli di integrità rispetto a quanto supportato dall'over-provisioning, il nodo passa allo stato Fallito e l'allocazione ha esito negativo. CycleCloud potrebbe provare a creare nuovamente l'immagine della macchina virtuale per risolvere il problema. Se la ricreazione dell'immagini ha esito negativo, è necessario terminare e sostituire il nodo. Un amministratore può eseguire questo passaggio manualmente oppure l'utilità di scalabilità automatica può eseguire questa operazione automaticamente.
Annotazioni
Se si abilitano i controlli di integrità dei nodi, ma l'immagine della macchina virtuale non soddisfa i requisiti, tutte le macchine virtuali possono essere unite al cluster. Tuttavia, lo stato mostra un avviso che indica che i controlli non sono supportati.

Riferimento attributo
| Attributo | TIPO | Definizione |
|---|---|---|
| EnableNodeHealthChecks | Boolean | (Facoltativo) Abilitare i controlli di integrità dei nodi all'avvio per questo nodo o matrice di nodi |
HealthCheck
Azure CycleCloud fornisce un meccanismo per terminare macchine virtuali (VM) in uno stato non integro denominato HealthCheck. Sia gli script di sistema che gli script definiti dall'utente (Python e Bash) vengono eseguiti periodicamente (cinque minuti in Windows, 10 minuti in Linux) per determinare l'integrità complessiva di una macchina virtuale. HealthCheck consente agli amministratori di definire le condizioni in cui le macchine virtuali devono essere terminate senza dover monitorare e correggere manualmente.
Script HealthCheck predefiniti
Le macchine virtuali abilitate per CycleCloud includono due script HealthCheck predefiniti:
- Lo script converge_timeout termina un'istanza che non completa la configurazione del software entro quattro ore dall'avvio. È possibile controllare questo periodo di timeout con l'impostazione
cyclecloud.keepalive.timeout(definita in secondi). - Lo script scheduled_shutdown cerca i file marcatori in $JETPACK_HOME/run/scheduled_shutdown che contengono una singola riga che fornisce un'ora di arresto in secondi di timestamp Unix e una seconda riga facoltativa con una spiegazione. Quando l'ora corrente è successiva al timestamp più antico nei file, la macchina virtuale viene considerata non sana.
Come funziona
Gli script HealthCheck si trovano nella directory $JETPACK_HOME/config/healthcheck.d . Linux supporta sia script Python che Bash, mentre Windows supporta solo gli script Python. Lo script controlla l'integrità della macchina virtuale. Se lo script trova la macchina virtuale non integra, viene chiusa con lo stato 254. Questo stato indica a CycleCloud che la macchina virtuale non è in buone condizioni e deve essere interrotta.
Quando si accede a una macchina virtuale che esegue HealthCheck, è possibile impedire che la macchina virtuale venga arrestata eseguendo il comando jetpack keepalive. Nelle istanze di Linux è possibile specificare un intervallo di tempo in ore o forever. In Windows forever è l'unica opzione.
Annotazioni
Quando l'agente HealthCheck determina che una VM è in uno stato di malfunzionamento, richiede a CycleCloud di terminare la VM. L'agente non arresta la macchina virtuale in locale usando il shutdown comando . Se la macchina virtuale non riesce a comunicare con CycleCloud, la macchina virtuale rimane attiva anche se non è integra fino a quando la macchina virtuale non riesce a raggiungere CycleCloud.
Esempio
Come semplice esempio, si scrive uno script HealthCheck che garantisce che una macchina virtuale Linux non sia attiva per più di 24 ore. Usare questo script per simulare le eliminazioni con priorità bassa e testare la reazione di un flusso di lavoro a una macchina virtuale rimossa. Inserire questo script in /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh.
#!/bin/bash
# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
exit 254
fi
Annotazioni
Inserire questo script in una macchina virtuale usando CycleCloud Project o aggiungendolo direttamente durante la creazione di un'immagine personalizzata.