Condividi tramite


Nodi e pool in Azure Batch

In un flusso di lavoro Azure Batch un nodo di calcolo (o nodo) è una macchina virtuale per l'elaborazione di una parte del carico di lavoro dell'applicazione. Un pool è una raccolta di questi nodi in cui viene eseguita l'applicazione. Questo articolo illustra in modo più approfondito nodi e pool, insieme alle considerazioni relative alla creazione e all'uso in un flusso di lavoro in Azure Batch.

Nodi

Un nodo è una macchina virtuale (VM) di Azure o una VM del servizio cloud dedicata all'elaborazione di una parte del carico di lavoro dell'applicazione. Le dimensioni di un nodo determinano il numero di core CPU, la capacità di memoria e le dimensioni del file system locale allocati al nodo.

È possibile creare pool di nodi Windows o Linux usando i servizi cloud di Azure, immagini di Marketplace per Macchine virtuali di Azure oppure immagini personalizzate preparate dall'utente.

I nodi possono eseguire qualsiasi eseguibile o script supportato dall'ambiente del sistema operativo del nodo, I file eseguibili o gli script includono *.exe, *.cmd, *.bat, script di PowerShell (per Windows) e file binari, shell e script di Python (per Linux).

Tutti i nodi di Calcolo in Batch includono anche:

Per impostazione predefinita, i nodi possono comunicare tra loro, ma non possono comunicare con le macchine virtuali che non fanno parte dello stesso pool. Per consentire ai nodi di comunicare in modo sicuro con altre macchine virtuali o con una rete locale, è possibile effettuare il provisioning del pool in una subnet di una rete virtuale di Azure. In questo caso, è possibile accedere ai nodi tramite indirizzi IP pubblici. Questi indirizzi IP pubblici vengono creati da Batch e possono cambiare nel corso della durata del pool. È anche possibile creare un pool con indirizzi IP pubblici statici che si controllano, assicurandosi che non cambieranno in modo imprevisto.

Pool

Un pool è la raccolta di nodi in cui viene eseguita l'applicazione.

I pool di Azure Batch sono basati sulla piattaforma di calcolo Azure. Offrono allocazione su larga scala, installazione di applicazioni, distribuzione dei dati, monitoraggio dell'integrità e regolazione flessibile (ridimensionamento) del numero di nodi di calcolo in un pool.

A ogni nodo aggiunto a un pool viene assegnato un nome univoco e un indirizzo IP. Quando un nodo viene rimosso da un pool, vengono perse tutte le modifiche apportate al sistema operativo o ai file e il relativo nome e indirizzo IP vengono rilasciati per uso futuro. Quando un nodo esce da un pool, la sua durata è terminata.

Un pool può essere usato solo dall'account Batch in cui è stato creato. Un account batch può creare più pool per soddisfare i requisiti delle risorse delle applicazioni in cui verrà eseguito.

Il pool può essere creato manualmente o automaticamente dal servizio Batch quando si specifica il lavoro da eseguire. Quando si crea un pool, è possibile specificare gli attributi seguenti:

Importante

Gli account Batch hanno una quota predefinita che limita il numero di core in ogni account. Il numero di core corrisponde al numero di nodi di calcolo. Le quote predefinite e le istruzioni su come aumentare una quota sono disponibili in Quote e limiti del servizio Batch. Se il pool non raggiungere il numero di nodi di destinazione, la causa potrebbe essere la quota di core.

Sistema operativo e la sua versione

Quando si crea un pool di Batch, specificare la configurazione delle macchine virtuali di Azure e il tipo di sistema operativo da eseguire in ogni nodo di calcolo nel pool.

Configurazioni

Configurazione macchina virtuale

La Configurazione macchina virtuale, specifica che il pool è composto da macchine virtuali di Azure. È possibile creare queste VM da immagini Linux o Windows.

L'agente del nodo Batch è un programma in esecuzione in ogni nodo del pool e fornisce l'interfaccia di comando e controllo tra il nodo e il servizio Batch. Sono disponibili diverse implementazioni dell'agente del nodo, definite SKU, per sistemi operativi diversi. Quando si crea un pool basato su Configurazione macchina virtuale, è necessario specificare non solo le dimensioni dei nodi e l'origine delle immagini usate per crearli, ma anche il riferimento a un'immagine della macchina virtuale e lo SKU dell'agente del nodo Batch da installare nei nodi. Per altre informazioni sulla specifica di queste proprietà del pool, vedere Effettuare il provisioning di nodi di calcolo Linux nei pool di Azure Batch. È anche possibile collegare uno o più dischi di dati vuoti a VM in pool create da immagini del Marketplace oppure includere i dischi di dati nelle immagini personalizzate usate per creare le macchine virtuali. Quando si includono dischi dati è necessario montare e formattare i dischi all'interno di una macchina virtuale per poterli usare.

SKU dell'agente nodo

Quando si crea un pool, è necessario selezionare il valore appropriato di nodeAgentSkuId, a seconda del sistema operativo dell'immagine di base del disco rigido virtuale. È possibile ottenere un mapping tra gli ID SKU dell'agente del nodo e i relativi riferimenti all'immagine del sistema operativo, chiamando l'operazione di elenco degli SKU degli agenti nodo supportati.

Immagini personalizzate per pool di macchine virtuali

Per informazioni su come creare un pool con immagini personalizzate, vedere Usare la Raccolta di calcolo di Azure per creare un pool personalizzato.

Supporto dei contenitori nei pool di macchine virtuali

Quando si crea un pool Configurazione macchina virtuale usando le API di Batch, è possibile impostare il pool per eseguire attività in contenitori Docker. Attualmente è necessario creare il pool usando un'immagine che supporti contenitori Docker. Usare l'immagine Windows Server 2016 Datacenter con contenitori di Azure Marketplace oppure specificare un'immagine di VM personalizzata che includa Docker Community Edition o Enterprise Edition e tutti i driver necessari. Le impostazioni del pool devono includere una configurazione del contenitore che copia le immagini del contenitore nelle macchine virtuali quando viene creato il pool. Le attività eseguite nel pool potranno quindi fare riferimento a immagini del contenitore e opzioni di esecuzione del contenitore.

Per altre informazioni, vedere Eseguire applicazioni contenitore Docker in Azure Batch.

Tipo e destinazione del nodo

Quando si crea un pool, è possibile specificare i tipi di nodo desiderati e il numero di destinazione di ognuno. I due tipi di nodo sono i seguenti:

  • Nodi dedicati. I nodi di calcolo dedicati sono riservati per i carichi di lavoro. Sono più costosi dei nodi Spot, ma non vengono mai superati.
  • Nodi spot. I nodi Spot sfruttano la capacità in eccesso di Azure per l'esecuzione dei carichi di lavoro di Batch. I nodi Spot hanno un costo orario inferiore a quello dei nodi dedicati e supportano carichi di lavoro che richiedono una potenza di calcolo significativa. Per altre informazioni, vedere Usare macchine virtuali spot con Batch.

Può verificarsi il superamento dei nodi Spot quando Azure ha capacità in eccesso insufficiente. In caso di superamento di un nodo durante l'esecuzione di attività, le attività vengono accodate ed eseguite di nuovo quando il nodo di calcolo torna disponibile. I nodi Spot sono utili per i carichi di lavoro con tempi di completamento del processo flessibili e in cui il lavoro è distribuito tra più nodi. Prima di scegliere di usare nodi Spot per lo scenario, assicurarsi che l'eventuale quantità di lavoro persa a causa del processo di prelazione sia minima e facile da ricreare.

Lo stesso pool può includere nodi di calcolo Spot e nodi di calcolo dedicati. Ogni tipo di nodo ha un'impostazione di destinazione propria, per cui è possibile specificare il numero desiderato di nodi.

Il numero di nodi di calcolo viene definito numero di destinazione, perché in alcuni casi il pool può non raggiungere il numero desiderato di nodi. Ad esempio, un pool potrebbe non realizzare la destinazione se prima raggiunge la quota core per l'account Batch. Il pool potrebbe non realizzare la destinazione, inoltre, se al pool è stata applicata una formula di ridimensionamento automatico che limita il numero massimo di nodi.

Per informazioni sui prezzi per i nodi dedicati e Spot, vedere Prezzi di Batch.

Dimensioni nodo

Quando si crea un pool di Azure Batch, è possibile scegliere tra quasi tutte le famiglie e le dimensioni di VM disponibili in Azure. Azure offre una serie di dimensioni delle macchine virtuali per diversi carichi di lavoro, incluse le dimensioni specializzate HPC o con supporto per GPU. Si noti che le dimensioni del nodo possono essere scelte solo al momento della creazione di un pool. In altre parole, una volta creato un pool, le dimensioni del nodo non possono essere modificate.

Per altre informazioni, vedere Scegliere le dimensioni delle macchine virtuali per i nodi di calcolo in un pool di Azure Batch.

Criteri di ridimensionamento automatico

Per carichi di lavoro dinamici, è possibile applicare un criterio di ridimensionamento automatico a un pool. Il servizio Batch valuta periodicamente la formula e modifica dinamicamente il numero di nodi in un pool in base al carico di lavoro corrente e all'uso delle risorse dello scenario di calcolo. In questo modo è possibile ridurre il costo complessivo dell'esecuzione dell'applicazione usando solo le risorse necessarie e rilasciando quelle non necessarie.

Per abilitare il ridimensionamento automatico, scrivere una formula di ridimensionamento automatico e associarla a un pool. Il servizio Batch usa la formula per determinare il numero di nodi di destinazione nel pool per l'intervallo di ridimensionamento successivo (un intervallo che è possibile configurare). È possibile specificare le impostazioni di ridimensionamento automatico per un pool quando lo si crea oppure abilitare il ridimensionamento in un pool in seguito. È anche possibile aggiornare le impostazioni di ridimensionamento in un pool abilitato per il ridimensionamento.

Ad esempio, un processo richiede l'invio di un numero elevato di attività da eseguire. È possibile assegnare al pool una formula di ridimensionamento che regola il numero di nodi nel pool in base al numero corrente di attività accodate e alla percentuale di completamento delle attività nel processo. Il servizio Batch valuta periodicamente la formula e ridimensiona il pool in base al carico di lavoro e alle altre impostazioni della formula. Il servizio aggiunge nodi in base alle necessità quando c'è un numero elevato di attività in coda e rimuove i nodi quando non sono presenti attività in coda o in esecuzione.

Una formula può essere basata sulle metriche seguenti:

  • Metriche temporali: basate sulle statistiche raccolte ogni cinque minuti nel numero di ore specificato.
  • Metriche delle risorse: basate su utilizzo di CPU, larghezza di banda, memoria e numero di nodi.
  • Metriche delle attività: basate sullo stato delle attività, ad esempio Attiva (in coda), In esecuzione o Completata.

Quando il ridimensionamento automatico riduce il numero di nodi di calcolo in un pool, è necessario considerare come gestire le attività in esecuzione al momento dell'operazione di riduzione. A questo scopo, il servizio Batch offre un'opzione di deallocazione dei nodi che è possibile includere nelle formule. Ad esempio, è possibile specificare che le attività in esecuzione devono essere arrestate immediatamente e quindi riaccodate per l'esecuzione in un altro nodo o che ne deve essere consentita la fine prima della rimozione del nodo dal pool. Si noti che l'impostazione dell'opzione di deallocazione del nodo come taskcompletion o retaineddata impedisce le operazioni di ridimensionamento del pool fino al completamento di tutte le attività o fino a che tutti i periodi di memorizzazione delle attività siano scaduti, rispettivamente.

Per altre informazioni sulla scalabilità automatica di un'applicazione, vedere Ridimensionare automaticamente i nodi di calcolo in un pool di Azure Batch.

Suggerimento

Per massimizzare l'utilizzo delle risorse di calcolo, impostare il numero di nodi su zero alla fine di un processo, ma consentire il completamento delle attività in esecuzione.

Criteri di pianificazione attività

L'opzione di configurazione Numero massimo attività per nodo determina il numero massimo di attività che è possibile eseguire in parallelo in ogni nodo di calcolo del pool.

La configurazione predefinita specifica che viene eseguita una sola attività alla volta in un nodo, ma in alcuni scenari risulta utile eseguire due o più attività contemporaneamente in un nodo. Vedere lo scenario di esempio nell'articolo Ottimizzare l'utilizzo delle risorse di calcolo di Azure Batch con attività dei nodi simultanee per informazioni su come sfruttare al meglio più attività per nodo.

È anche possibile specificare un tipo di riempimento che determina se Batch distribuisce le attività in modo uniforme a tutti i nodi di un pool o se satura ogni nodo con il numero massimo di attività prima di assegnarle ad altri nodi.

Stato della comunicazione

Nella maggior parte degli scenari le attività funzionano in modo indipendente e non devono comunicare tra loro. È tuttavia possibile che siano presenti applicazioni in cui le attività devono comunicare, ad esempio negli scenari MPI.

È possibile configurare un pool per consentire la comunicazione tra nodi in modo che i nodi all'interno di un pool passano comunicare durante l'esecuzione. Quando la comunicazione tra nodi è abilitata, i nodi nei pool Cloud Services Configuration (Configurazione servizi cloud) possono comunicare tra loro tramite porte superiori alla 1100 e i pool Configurazione macchina virtuale non limitano il traffico su nessuna porta.

L'abilitazione della comunicazione tra nodi ha effetto anche sul posizionamento dei nodi nel cluster e potrebbe limitare il numero massimo di nodi in un pool a causa di restrizioni relative alla distribuzione. Se l'applicazione non richiede la comunicazione tra nodi, il servizio Batch può allocare al pool un numero potenzialmente elevato di nodi da diversi cluster e data center per consentire una maggiore capacità di elaborazione parallela.

Attività di avvio

Se lo si desidera, è possibile aggiungere un'attività di avvio facoltativa che viene eseguita in ogni nodo aggiunto al pool e ogni volta che si riavvia o si ricrea l'immagine del nodo. L'attività di avvio è utile soprattutto per preparare i nodi di calcolo per l'esecuzione di attività, ad esempio l'installazione delle applicazioni eseguite dalle attività nei nodi di calcolo.

Pacchetti dell'applicazione

È possibile specificare pacchetti dell'applicazione da distribuire nei nodi di calcolo del pool. I pacchetti dell'applicazione consentono una distribuzione e un controllo delle versioni più semplici delle applicazioni eseguite dalle attività. I pacchetti dell'applicazione specificati per un pool vengono installati in ogni nodo di calcolo aggiunto al pool e ogni volta che un nodo viene riavviato o ne viene ricreata l'immagine.

Per altre informazioni sull'uso di pacchetti dell'applicazione per distribuire applicazioni ai nodi Batch, vedere Distribuire le applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.

Configurazione della rete virtuale e del firewall

Quando si effettua il provisioning di un pool di nodi di calcolo in Batch di Azure, è possibile associare il pool a una subnet di una rete virtuale di Azure. Per usare una rete virtuale di Azure, l'API client Batch deve usare l'autenticazione di Microsoft Entra. Il supporto di Azure Batch per Microsoft Entra ID è documentato in Autenticare le soluzioni del servizio Batch con Active Directory.

Requisiti per la rete virtuale

Per altre informazioni sulla configurazione di un pool di Batch in una rete virtuale, vedere Creare un pool di macchine virtuali con la rete virtuale.

Suggerimento

Per assicurarsi che gli indirizzi IP pubblici usati per accedere ai nodi non vengano modificati, è possibile creare un pool con indirizzi IP pubblici specificati che si controllano.

Durata del pool e dei nodi di calcolo

Quando si progetta una soluzione Azure Batch, bisogna specificare come e quando vengono creati i pool e per quanto tempo vengono mantenuti disponibili i nodi di calcolo all'interno dei pool.

Da un lato, è possibile creare un pool per ogni processo inviato ed eliminare il pool al termine dell'esecuzione dell'attività. In questo modo è possibile massimizzare l'uso, perché i nodi vengono allocati solo quando è necessario e vengono arrestati non appena risultano inattivi. Mentre ciò significa che il processo deve attendere l'allocazione dei nodi, è importante notare che le attività vengono pianificate per l'esecuzione non appena i nodi risultano allocati individualmente e dopo il completamento dell'attività di avvio. Il servizio Batch non attende che tutti i nodi di un pool siano disponibili prima di assegnare le attività ai nodi, assicurando quindi il massimo utilizzo di tutti i nodi disponibili.

Dall'altro lato, se l'avvio immediato dei processi ha la priorità più alta, è possibile può creare subito un pool e rendere disponibili i relativi nodi prima dell'invio dei processi. In questo scenario le attività possono essere avviate immediatamente, ma i nodi possono rimanere inattivi in attesa che vengano assegnate.

Un approccio combinato viene in genere usato per la gestione di un carico variabile ma continuo. È possibile disporre di un pool in cui vengono inviati più processi e che può ridimensionare il numero di nodi in base al carico di lavoro. Questa operazione può essere eseguita in modo reattivo in base al carico corrente o in modo proattivo se è possibile prevedere il carico. Per altre informazioni, vedere Ridimensionamento automatico del sistema operativo.

Pool automatici

Un pool automatico è un pool creato dal servizio Batch quando viene inviato un processo, anziché essere creato prima dei processi che verranno eseguiti nel pool. Il servizio Batch gestirà la durata di un pool automatico in base alle caratteristiche specificate. Nella maggior parte dei casi, questi pool vengono impostati anche per l'eliminazione automatica dopo il completamento dei processi.

Sicurezza con certificati

È in genere necessario usare certificati per crittografare o decrittografare informazioni riservate per le attività, ad esempio la chiave per un account di archiviazione di Azure. Per supportare questa funzionalità, è possibile installare certificati nei nodi. I segreti crittografati vengono passati alle attività nei parametri della riga di comando o incorporati in una delle risorse dell'attività e i certificati installati possono essere usati per decrittografarli.

Per aggiungere un certificato a un account Batch, usare l'operazione Aggiungi certificato (Batch REST) o il metodo CertificateOperations.CreateCertificate (Batch .NET). È quindi possibile associare il certificato a un pool nuovo o esistente.

Quando un certificato è associato a un pool, il servizio Batch installa il certificato in ogni nodo del pool. Il servizio Batch installa i certificati appropriati all'avvio del nodo, prima di avviare le attività, incluse quelle di avvio e del gestore di processi.

Se si aggiunge un certificato a un pool esistente, è necessario riavviare i relativi nodi di calcolo per applicare il certificato ai nodi.

Passaggi successivi