Usare un'immagine gestita per creare un pool di immagini personalizzato

Per creare un pool di immagini personalizzato per le macchine virtuali del pool di Batch, è possibile usare un'immagine gestita per creare un'immagine della raccolta di calcolo di Azure. È supportato anche l'uso di una sola immagine gestita, ma solo per le versioni API fino alla versione 2019-08-01 inclusa.

Avviso

Il supporto per la creazione di un pool di Batch tramite un'immagine gestita viene ritirato dopo il 31 marzo 2026. Eseguire la migrazione all'hosting di immagini personalizzate nella raccolta di calcolo di Azure da usare per creare un pool di immagini personalizzato in Batch. Per altre informazioni, vedere la guida alla migrazione.

Questo argomento illustra come creare un pool di immagini personalizzato usando solo un'immagine gestita.

Prerequisiti

  • Una risorsa immagine gestita. Per creare un pool di macchine virtuali usando un'immagine personalizzata, è necessario possedere o creare una risorsa immagine gestita nella stessa sottoscrizione di Azure e nella stessa area dell'account Batch. L'immagine deve essere creata dagli snapshot del disco del sistema operativo della macchina virtuale e, facoltativamente, dai dischi dati collegati.

    • Usare un'immagine personalizzata univoca per ogni pool che si crea.
    • Per creare un pool con l'immagine usando le API Batch, specificare l'ID risorsa dell'immagine, che si presenta nel formato /subscriptions/xxxx-xxxxxx-xxxxx-xxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage.
    • La risorsa immagine gestita deve esistere per tutta la durata del pool per consentire il ridimensionamento orizzontale e può essere rimossa dopo che il pool è stato eliminato.
  • Autenticazione di Microsoft Entra. L'API client batch deve usare l'autenticazione Microsoft Entra. Il supporto di Azure Batch per Microsoft Entra ID è documentato in Autenticare le soluzioni del servizio Batch con Active Directory.

Preparare un'immagine gestita

All'interno di Azure è possibile preparare un'immagine gestita da:

  • Snapshot dei dischi dati e sistema operativo di una macchina virtuale di Azure
  • Una macchina virtuale generalizzata di Azure con dischi gestiti
  • Un disco rigido virtuale locale generalizzato caricato nel cloud

Per dimensionare i pool di Batch in modo affidabile con un'immagine gestita, si consiglia di creare l'immagine gestita usando solo il primo modo, ovvero usando gli snapshot dei dischi della macchina virtuale. I passaggi seguenti illustrano come preparare una macchina virtuale, acquisire uno snapshot e creare un'immagine gestita dallo snapshot.

Preparare una VM

Se si sta creando una nuova macchina virtuale per l'immagine, usare un'immagine di Azure Marketplace di prima parte supportata da Batch come immagine di base per l'immagine gestita. Solo le immagini produttore possono essere usate come immagine di base. Per ottenere un elenco completo dei riferimenti alle immagini di Azure Marketplace supportati da Azure Batch, vedere Elencare le immagini supportate.

Nota

È possibile usare un'immagine di terze parti che dispone di licenza aggiuntiva e di condizioni di acquisto come immagine di base. Per informazioni su queste immagini del Marketplace, vedere il materiale sussidiario per le macchine virtuali Linux o Windows.

Per usare un'immagine di terze parti, è possibile usare la raccolta di calcolo di Azure. Per altre informazioni, vedere Usare la raccolta di calcolo di Azure per creare un pool di immagini personalizzato.

  • Assicurarsi che la macchina virtuale venga creata con un disco gestito. Questa è l'impostazione di archiviazione predefinita quando si crea una macchina virtuale.
  • Non installare le estensioni di Azure, ad esempio l'estensione Script personalizzato, nella macchina virtuale. Se l'immagine contiene un'estensione preinstallata, Azure potrebbe riscontrare problemi durante la distribuzione del pool di Batch.
  • Quando si usano dischi dati allegati è necessario montare e formattare i dischi all'interno di una macchina virtuale per poterli usare.
  • Verificare che l'immagine del sistema operativo di base usi l'unità temporanea predefinita. L'agente del nodo Batch attualmente prevede l'uso dell'unità temporanea predefinita.
  • Assicurarsi che il disco del sistema operativo non sia crittografato.
  • Quando la VM è in esecuzione, connetterla tramite RDP (per Windows) o SSH (per Linux). Installare il software necessario o copiare i dati desiderati.

Creare uno snapshot della macchina virtuale

Uno snapshot è una copia completa di sola lettura di un disco rigido virtuale. Per creare uno snapshot di un sistema operativo o di dischi dati di macchine virtuali, è possibile usare gli strumenti da riga di comando o di portale di Azure. Per i passaggi e le opzioni per creare uno snapshot, vedere le linee guida per le macchine virtuali.

Creare un'immagine da uno o più snapshot

Per creare un'immagine gestita da uno snapshot, usare gli strumenti da riga di comando di Azure, ad esempio il comando az image create. È possibile creare un'immagine specificando uno snapshot del disco del sistema operativo e, facoltativamente, uno o più snapshot dei dischi dati.

Creare un pool da un'immagine gestita

Dopo aver trovato l'ID risorsa dell'immagine gestita, creare un pool di immagini personalizzato da tale immagine. Nei passaggi seguenti viene illustrato come creare un pool di immagini personalizzato usando il servizio Batch o la gestione Batch.

Nota

Assicurarsi che l'identità usata per l'autenticazione di Microsoft Entra disponga delle autorizzazioni per la risorsa immagine. Vedere Autenticare le soluzioni del servizio Batch con Active Directory.

La risorsa per l'immagine gestita deve esistere per la durata del pool. Se la risorsa sottostante viene eliminata, non sarà possibile dimensionare il pool.

.NET SDK del servizio Batch

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: "batch.node.windows amd64");
}

private static ImageReference CreateImageReference()
{
    return new ImageReference(
        virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image definition name}");
}

private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
    try
    {
        CloudPool pool = batchClient.PoolOperations.CreatePool(
            poolId: PoolId,
            targetDedicatedComputeNodes: PoolNodeCount,
            virtualMachineSize: PoolVMSize,
            virtualMachineConfiguration: vmConfiguration);

        pool.Commit();
    }

API REST di gestione Batch

URI DELL'API REST

 PUT https://management.azure.com/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Batch/batchAccounts/{account name}/pools/{pool name}?api-version=2020-03-01

Corpo della richiesta

 {
   "properties": {
     "vmSize": "{VM size}",
     "deploymentConfiguration": {
       "virtualMachineConfiguration": {
         "imageReference": {
           "id": "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/images/{image name}"
         },
         "nodeAgentSkuId": "{Node Agent SKU ID}"
       }
     }
   }
 }

Considerazioni per i pool di grandi dimensioni

Se si prevede di creare un pool con centinaia di macchine virtuali o più usando un'immagine personalizzata, è importante seguire le indicazioni precedenti per usare un'immagine creata da uno snapshot di macchina virtuale.

Tenere presenti anche le seguenti considerazioni:

  • Limiti delle dimensioni: Batch limita le dimensioni del pool a 2500 nodi di calcolo dedicati o a 1000 nodi spot quando si usa un'immagine personalizzata.

    Se si usa la stessa immagine (o più immagini basate sullo stesso snapshot) per creare più pool, il numero totale di nodi di calcolo nel pool non può superare i limiti sopra indicati. Non è consigliabile usare un'immagine o il relativo snapshot sottostante per più di un pool.

    I limiti possono essere anche inferiori se si configura il pool con i pool NAT in ingresso.

  • Timeout ridimensionamento: se il pool contiene un numero fisso di nodi (senza scalabilità automatica), aumentare il valore della proprietà resizeTimeout del pool a un valore come 20-30 minuti. Se il pool non raggiunge la dimensione di destinazione entro il periodo di timeout, eseguire un'altra operazione di ridimensionamento.

    Se si prevede di creare un pool con oltre 300 nodi di calcolo, può essere necessario ridimensionare il pool più volte per raggiungere le dimensioni di destinazione.

Usando la raccolta di calcolo di Azure, è possibile creare pool di dimensioni maggiori con le immagini personalizzate insieme a più repliche di immagini condivise, oltre a miglioramenti delle prestazioni, ad esempio un tempo ridotto per la preparazione dei nodi.

Considerazioni sull'uso di Packer

La creazione di una risorsa immagine gestita direttamente con Packer può essere eseguita solo con account Batch in modalità sottoscrizione utente. Per gli account in modalità servizio Batch, è prima necessario creare un disco rigido virtuale, quindi importare il disco rigido virtuale in una risorsa immagine gestita. A seconda della modalità di allocazione del pool (sottoscrizione utente o servizio Batch), i passaggi per creare una risorsa immagine gestita variano.

Assicurarsi che la risorsa usata per creare l'immagine gestita esista per la durata di qualsiasi pool che faccia riferimento all'immagine personalizzata. In caso contrario, possono verificarsi errori di allocazione del pool e/o errori di ridimensionamento.

Se l'immagine o la risorsa sottostante è stata rimossa, è possibile che venga visualizzato un errore simile al seguente: There was an error encountered while performing the last resize on the pool. Please try resizing the pool again. Code: AllocationFailed. Se viene visualizzato questo errore, assicurarsi che la risorsa sottostante non sia stata rimossa.

Per altre informazioni sull'uso di Packer per creare una macchina virtuale, vedere Creare un'immagine Linux con Packer o Creare un'immagine Windows con Packer.

Passaggi successivi