Errori del pool e del nodo di Azure Batch

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux vicina allo stato end of life (EOL). Prendere in considerazione l'uso e la pianificazione di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Alcune operazioni di creazione e gestione del pool di Azure Batch vengono eseguite immediatamente. Il rilevamento degli errori per queste operazioni è semplice, perché gli errori in genere restituiscono immediatamente dall'API, dalla riga di comando o dall'interfaccia utente. Tuttavia, alcune operazioni sono asincrone, eseguite in background e richiedono alcuni minuti per il completamento. Questo articolo descrive i modi per rilevare ed evitare errori che possono verificarsi nelle operazioni in background per pool e nodi.

Assicurarsi di impostare le applicazioni per implementare un controllo degli errori completo, in particolare per le operazioni asincrone. Il controllo completo degli errori consente di identificare e diagnosticare tempestivamente i problemi.

Errori dei pool

Gli errori del pool possono essere correlati al timeout o all'errore di ridimensionamento, all'errore di ridimensionamento automatico o all'eliminazione del pool.

Timeout o fallimento del ridimensionamento

Quando si crea un nuovo pool o si ridimensiona un pool esistente, si specifica il numero di nodi di destinazione. L'operazione di creazione o ridimensionamento viene completata immediatamente, ma l'allocazione effettiva di nuovi nodi o la rimozione dei nodi esistenti potrebbe richiedere alcuni minuti. È possibile specificare il timeout di ridimensionamento nelle API Pool - Aggiungi o Pool - Ridimensionamento . Se Batch non è in grado di allocare il numero di nodi di destinazione durante il periodo di timeout di ridimensionamento, il pool passa a uno stato stabile e segnala errori di ridimensionamento.

La proprietà resizeError elenca gli errori che si sono verificati per la valutazione più recente.

Ecco alcune cause comuni degli errori di ridimensionamento:

  • Ridimensionare il timeout troppo breve. In genere, il timeout predefinito di 15 minuti è sufficiente per allocare o rimuovere i nodi del pool. Se si alloca un numero elevato di nodi, ad esempio più di 1.000 nodi da un'immagine di Azure Marketplace o più di 300 nodi da un'immagine di macchina virtuale personalizzata, è possibile impostare il timeout di ridimensionamento su 30 minuti.

  • Quota core insufficiente. Un account Batch è limitato nel numero di core che può allocare in tutti i pool e interrompe l'allocazione dei nodi una volta raggiunta tale quota. È possibile aumentare la quota di core in modo che Batch possa allocare più nodi. Per altre informazioni, vedere Quote e limiti del servizio Batch.

  • Indirizzi IP subnet insufficienti quando un pool si trova in una rete virtuale. Una subnet di rete virtuale deve avere un numero sufficiente di indirizzi IP da allocare a ogni nodo del pool richiesto. In caso contrario non è possibile creare i nodi. Per altre informazioni, vedere Creare un pool di Azure Batch in una rete virtuale.

  • Risorse insufficienti quando un pool si trova in una rete virtuale. Quando si crea un pool in una rete virtuale, è possibile creare risorse come servizi di bilanciamento del carico, indirizzi IP pubblici e gruppi di sicurezza di rete nella stessa sottoscrizione dell'account Batch. Assicurarsi che le quote delle sottoscrizioni siano sufficienti per queste risorse.

  • Pool di grandi dimensioni con immagini di macchine virtuali personalizzate. I pool di grandi dimensioni che usano immagini di macchine virtuali personalizzate possono richiedere più tempo per allocare e ridimensionare i timeout possono verificarsi. Per consigli sui limiti e sulla configurazione, vedere Creare un pool con la raccolta di calcolo di Azure.

Errori di ridimensionamento automatico

È possibile impostare Azure Batch per ridimensionare automaticamente il numero di nodi in un pool e definire i parametri per la formula di ridimensionamento automatico per il pool. Il servizio Batch usa quindi la formula per valutare periodicamente il numero di nodi nel pool e impostare nuovi numeri di destinazione. Per altre informazioni, vedere Creare una formula automatica per ridimensionare i nodi di calcolo in un pool di Batch.

Quando si usa il ridimensionamento automatico, possono verificarsi i problemi seguenti:

  • La valutazione del ridimensionamento automatico non riesce.
  • L'operazione di ridimensionamento risultante non riesce con conseguente timeout.
  • Un problema nella formula di ridimensionamento automatico genera valori di destinazione dei nodi non corretti. Il ridimensionamento potrebbe funzionare o scadere.

Per ottenere informazioni sull'ultima valutazione della scalabilità automatica, usare la proprietà autoScaleRun . Questa proprietà indica il periodo della valutazione, i valori e il risultato, oltre agli eventuali errori di prestazioni.

L'evento di completamento del ridimensionamento del pool acquisisce le informazioni su tutte le valutazioni.

Errori di eliminazione del pool

Per eliminare un pool contenente nodi, Batch elimina prima di tutto i nodi, che possono richiedere alcuni minuti. Batch elimina quindi l'oggetto pool stesso.

Batch imposta poolState su deleting durante il processo di eliminazione. L'applicazione chiamante può rilevare se l'eliminazione del pool richiede troppo tempo usando le state proprietà e stateTransitionTime .

Se l'eliminazione del pool richiede più tempo del previsto, Batch ritenta periodicamente fino a quando il pool non viene eliminato correttamente. In alcuni casi, il ritardo è dovuto a un'interruzione del servizio di Azure o ad altri problemi temporanei. Altri fattori che impediscono l'eliminazione corretta del pool potrebbero richiedere l'azione necessaria per risolvere il problema. Questi fattori possono includere i problemi seguenti:

  • È possibile che i blocchi delle risorse vengano inseriti nelle risorse create da Batch o nelle risorse di rete usate da Batch.

  • Le risorse create potrebbero dipendere da una risorsa creata da Batch. Ad esempio, se si crea un pool in una rete virtuale, Batch crea un gruppo di sicurezza di rete, un indirizzo IP pubblico e un servizio di bilanciamento del carico. Se si usano queste risorse all'esterno del pool, non è possibile eliminare il pool.

  • Il Microsoft.Batch provider di risorse potrebbe non essere registrato dalla sottoscrizione che contiene il pool.

  • Per gli account Batch in modalità sottoscrizione utente, Microsoft Azure Batch potrebbe non avere più il ruolo Collaboratore o Proprietario per la sottoscrizione che contiene il pool. Per altre informazioni, vedere Consentire a Batch di accedere alla sottoscrizione.

Errori del nodo

Anche quando Batch alloca correttamente i nodi in un pool, vari problemi possono causare la mancata integrità di alcuni nodi e l'impossibilità di eseguire attività. Questi nodi comportano comunque addebiti, quindi è importante rilevare i problemi per evitare di pagare i nodi che non è possibile usare. Conoscere gli errori comuni dei nodi e conoscere lo stato di processo corrente è utile per la risoluzione dei problemi.

Errori dell'attività di avvio

È possibile specificare un startTask facoltativo per un pool. Come per qualsiasi attività, l'attività di avvio usa una riga di comando e può scaricare i file di risorse dall'archiviazione. L'attività di avvio viene eseguita per ogni nodo all'avvio del nodo. La waitForSuccess proprietà specifica se Batch attende il completamento dell'attività di avvio prima di pianificare tutte le attività in un nodo. Se si configura il nodo in modo che attenda il completamento dell'attività di avvio, ma l'attività di avvio ha esito negativo, il nodo non è utilizzabile ma comporta comunque addebiti.

È possibile rilevare gli errori delle attività di avvio usando le proprietà taskExecutionResult e taskFailureInformation della proprietà del nodo startTaskInformation di primo livello.

Un'attività di avvio non riuscita causa anche l'impostazione di Batch di computeNodeState su starttaskfailed, se waitForSuccess è stato impostato su true.

Come per qualsiasi attività, possono verificarsi molte cause di un errore dell'attività di avvio. Per risolvere i problemi, controllare stdout, stderr e qualsiasi altro file di log specifico dell'attività.

Le attività di avvio devono essere nuovamente partecipanti, perché l'attività di avvio può essere eseguita più volte nello stesso nodo, ad esempio quando il nodo viene ricreato o riavviato. In rari casi, quando un'attività di avvio viene eseguita dopo un evento causa un riavvio del nodo, un sistema operativo o un disco temporaneo ricrea l'immagine mentre l'altra non lo fa. Poiché Batch avvia attività e tutte le attività batch vengono eseguite dal disco temporaneo, questa situazione non è in genere un problema. Tuttavia, nei casi in cui l'attività di avvio installa un'applicazione nel disco del sistema operativo e mantiene altri dati sul disco temporaneo, possono verificarsi problemi di sincronizzazione. Proteggere l'applicazione di conseguenza se si usano entrambi i dischi.

Errore di download del pacchetto dell'applicazione

È possibile specificare uno o più pacchetti dell'applicazione per un pool. Batch scarica i file di pacchetto specificati in ogni nodo e decomprime i file dopo l'avvio del nodo, ma prima di pianificare le attività. È comune usare un comando dell'attività di avvio con i pacchetti dell'applicazione, ad esempio per copiare i file in un percorso diverso o per eseguire l'installazione.

Se un pacchetto dell'applicazione non riesce a scaricare e decomprimere, la proprietà computeNodeError segnala l'errore e imposta lo stato del nodo su unusable.

Errore di download del contenitore

È possibile specificare uno o più riferimenti a contenitori in un pool. Batch scarica i contenitori specificati in ogni nodo. Se il contenitore non riesce a scaricare, la proprietà computeNodeError segnala l'errore e imposta lo stato del nodo su unusable.

Aggiornamenti del sistema operativo del nodo

Per i pool di Windows, enableAutomaticUpdates è impostato su per true impostazione predefinita. Sebbene sia consigliabile consentire gli aggiornamenti automatici, gli aggiornamenti possono interrompere lo stato dell'attività, soprattutto se le attività sono a esecuzione prolungata. È possibile impostare questo valore su false se è necessario assicurarsi che un aggiornamento del sistema operativo non si verifichi in modo imprevisto.

Nodo in stato inutilizzabile

Batch potrebbe impostare computeNodeState su unusable per molti motivi. Non è possibile pianificare le attività in un unusable nodo, ma il nodo comporta comunque addebiti.

Se Batch può determinare la causa, la proprietà computeNodeError lo segnala. Se un nodo è in unusable uno stato, ma non ha computeNodeError, significa che Batch non è in grado di comunicare con la macchina virtuale. In questo caso, Batch tenta sempre di recuperare la macchina virtuale. Batch, tuttavia, non tenta automaticamente di ripristinare le macchine virtuali che non sono riuscite a installare i pacchetti o i contenitori dell'applicazione, anche se il relativo stato è unusable.

Altri motivi per unusable i nodi possono includere le cause seguenti:

  • Un'immagine di macchina virtuale personalizzata non è valida. Ad esempio, l'immagine non è preparata correttamente.
  • Una macchina virtuale viene spostata a causa di un errore di infrastruttura o un aggiornamento di basso livello. Batch recupera il nodo.
  • Un'immagine della macchina virtuale è stata distribuita nell'hardware, che non la supporta. Ad esempio, un'immagine HPC CentOS viene distribuita in una macchina virtuale Standard_D1_v2 .
  • Le macchine virtuali si trovano in una rete virtuale di Azure e il traffico è stato bloccato sulle porte chiave.
  • Le macchine virtuali si trovano in una rete virtuale, ma il traffico in uscita verso Archiviazione di Azure è bloccato.
  • Le macchine virtuali si trovano in una rete virtuale con una configurazione DNS personalizzata e il server DNS non è in grado di risolvere l'archiviazione di Azure.

File di log dell'agente del nodo

Il processo dell'agente Batch eseguito in ogni nodo del pool fornisce file di log che potrebbero risultare utili se è necessario contattare il supporto tecnico relativo a un problema di nodo del pool. È possibile caricare i file di log per un nodo tramite l'API portale di Azure, Batch Explorer o il nodo di calcolo - Caricare i log del servizio Batch. Dopo aver caricato e salvato i file di log, è possibile eliminare il nodo o il pool per risparmiare il costo dell'esecuzione dei nodi.

Disco del nodo pieno

Batch usa l'unità temporanea in una macchina virtuale del pool di nodi per archiviare file come i file di processo, i file di attività e i file condivisi seguenti:

  • File del pacchetto dell'applicazione
  • File di risorse dell'attività
  • File specifici dell'applicazione scaricati in una delle cartelle di Batch
  • File Stdout e stderr per ogni esecuzione dell'applicazione di attività
  • File di output specifici dell'applicazione

I file come i pacchetti dell'applicazione o i file di risorse dell'attività di avvio scrivono una sola volta quando Batch crea il nodo del pool. Anche se scrivono una sola volta, se questi file sono troppo grandi potrebbero riempire l'unità temporanea.

Altri file, ad esempio stdout e stderr, vengono scritti per ogni attività eseguita da un nodo. Se un numero elevato di attività viene eseguito nello stesso nodo o se i file di attività sono troppo grandi, è possibile riempire l'unità temporanea.

Il nodo richiede anche una piccola quantità di spazio sul disco del sistema operativo per creare utenti dopo l'avvio.

Le dimensioni dell'unità temporanea dipendono dalle dimensioni della macchina virtuale. Una considerazione quando si selezionano le dimensioni di una macchina virtuale è assicurarsi che l'unità temporanea disponga di spazio sufficiente per il carico di lavoro pianificato.

Quando si aggiunge un pool nella portale di Azure, è possibile visualizzare l'elenco completo delle dimensioni delle macchine virtuali, inclusa una colonna Dimensioni disco risorsa. Gli articoli che descrivono le dimensioni delle macchine virtuali includono tabelle con una colonna Temp Archiviazione. Per altre informazioni, vedere Dimensioni delle macchine virtuali ottimizzate per il calcolo. Per una tabella di dimensioni di esempio, vedere Serie Fsv2.

È possibile specificare un tempo di conservazione per i file scritti da ogni attività. Il tempo di conservazione determina per quanto tempo conservare i file di attività prima di pulirli automaticamente. È possibile ridurre il tempo di conservazione per ridurre i requisiti di archiviazione.

Se il disco temporaneo o del sistema operativo esaurisce lo spazio o è quasi esaurito, il nodo passa a unusablecomputeNoteState e l'errore del nodo indica che il disco è pieno.

Se non si è certi di ciò che occupa spazio nel nodo, provare a connettersi in remoto al nodo ed esaminare manualmente. È anche possibile usare l'API File - Elenco da nodo di calcolo per esaminare i file, ad esempio gli output delle attività, nelle cartelle gestite di Batch. Questa API elenca solo i file nelle directory gestite di Batch. Se le attività hanno creato file altrove, questa API non le mostra.

Dopo aver verificato di recuperare i dati necessari dal nodo o caricarli in un archivio durevole, è possibile eliminare i dati in base alle esigenze per liberare spazio.

È possibile eliminare i vecchi processi completati o le attività i cui dati delle attività sono ancora presenti nei nodi. Cercare nella raccolta nell'attivitàInformation recentTaskssul nodo oppure usare l'API File - Elenco da nodo di calcolo. L'eliminazione di un processo elimina tutte le attività nel processo. L'eliminazione delle attività nel processo attiva l'eliminazione dei dati nelle directory delle attività nei nodi e libera spazio. Dopo aver liberato spazio sufficiente, riavviare il nodo. Il nodo deve uscire dallo unusable stato e entrare idle di nuovo.

Per ripristinare un nodo inutilizzabile nei pool VirtualMachineConfiguration , è possibile rimuovere il nodo dal pool usando l'API Pool - Rimuovi nodi . È quindi possibile aumentare di nuovo il pool per sostituire il nodo non valido con un nuovo nodo. Per i pool CloudServiceConfiguration , è possibile creare nuovamente l'immagine del nodo usando l'API Compute Node - Reimage per pulire l'intero disco. La ricreazione dell'immagine non è attualmente supportata per i pool VirtualMachineConfiguration .

Passaggi successivi