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. Batch crea questi indirizzi IP pubblici e può cambiare nel corso della durata del pool. È anche possibile creare un pool con indirizzi IP pubblici statici che si controllano, assicurandosi che non vengano modificati in modo imprevisto.

Piscine

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 che devono essere eseguite.

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 VHD. È possibile ottenere una mappatura tra gli ID SKU dell'agente del nodo disponibili e i loro riferimenti alle immagini 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. In genere sono più costosi rispetto ai nodi Spot, ma è garantito che non vengano 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.

I nodi Spot possono essere interrotti quando Azure ha capacità surplus insufficiente. Se un nodo viene preemptato mentre esegue attività, le attività vengono riaccodate ed eseguite nuovamente quando un nodo di calcolo diventa nuovamente 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 decidere di usare i nodi Spot per il vostro scenario, è importante assicurarsi che qualsiasi lavoro perso a causa dell'interruzione sia minimo e facile da riprendere o 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. In alternativa, il pool potrebbe non raggiungere la destinazione se è stata applicata una formula di ridimensionamento automatico al pool che limita il numero massimo di nodi.

Annotazioni

Quando i nodi di calcolo spot di Batch vengono interrotti, passano prima allo stato unusable. Dopo qualche tempo, questi nodi di calcolo verranno quindi trasferiti in modo da riflettere lo stato preempted. Batch abilita automaticamente il comportamento Prova a ripristinare per ripristinare le istanze spot rimosse con un obiettivo ottimale per mantenere i conteggi delle istanze di destinazione.

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. Le dimensioni delle macchine virtuali del nodo possono essere scelte solo al momento della creazione di un pool. In altre parole, dopo aver creato un pool, le dimensioni della macchina virtuale 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.

Politica 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 regola in modo dinamico il numero di nodi all'interno del pool in base al carico di lavoro corrente e all'utilizzo 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, forse un lavoro richiede di inviare 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 di scaling 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. L'impostazione dell'opzione di deallocazione del nodo come taskcompletion o retaineddata impedisce il ridimensionamento del pool fino al completamento di tutte le attività o alla scadenza di tutti i periodi di conservazione delle attività.

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 un'attività alla volta viene eseguita in un nodo, ma esistono scenari in cui è utile eseguire due o più attività in un nodo contemporaneamente. Vedere lo scenario di esempio nell'articolo attività dei nodi simultanee su come è possibile trarre vantaggio da 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 possano comunicare durante l'esecuzione. Quando la comunicazione internode è abilitata, i nodi nei pool di configurazione dei servizi cloud possono comunicare tra loro sulle porte superiori a 1100 e i pool di configurazione delle macchine virtuali non limitano il traffico su alcuna 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 un numero potenzialmente elevato di nodi al pool da molti cluster e data center diversi per consentire una maggiore potenza di elaborazione parallela.

Attività di avvio

Se desiderato, è possibile aggiungere un'attività di avvio eseguita in ogni nodo quando il nodo viene aggiunto al pool e ogni volta che un nodo viene riavviato o riconfigurato. 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 lavoro inviato ed eliminare il pool non appena le sue attività terminano l'esecuzione. In questo modo si ottimizza l'utilizzo perché i nodi vengono allocati solo quando necessario e vengono arrestati una volta che sono inattive. Sebbene questo significhi che il processo deve attendere che i nodi vengano allocati, è importante notare che le attività vengono pianificate per l'esecuzione non appena i nodi vengono allocati singolarmente e l'attività di avvio viene completata, se è specificato di attendere il completamento dell'attività di avvio. Batch non attende che tutti i nodi all'interno di un pool siano disponibili prima di assegnare attività ai nodi. assicurando quindi il massimo utilizzo di tutti i nodi disponibili.

Dall'altra parte dello spettro, se l'avvio immediato delle attività ha la priorità più alta, è possibile creare subito un pool e rendere disponibili i suoi nodi prima dell'invio delle attività. 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 in modo esplicito prima dei processi che verranno eseguiti nel pool. Il servizio Batch gestisce 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