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

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

Importante

Nella maggior parte dei casi, è necessario creare immagini personalizzate usando La raccolta di calcolo di Azure. Usando Azure Compute Gallery, è possibile effettuare il provisioning di pool più velocemente, ridimensionare quantità maggiori di macchine virtuali e migliorare l'affidabilità durante il provisioning di macchine virtuali. Per altre informazioni, vedere Usare Azure Compute Gallery per creare un pool personalizzato.

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 con Azure Active Directory (Azure AD) . L'API client di Batch deve usare l'autenticazione di Azure AD. Il supporto di Azure Batch per Azure AD è 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 crea una nuova macchina virtuale per l'immagine, usare un'immagine produttore di Azure Marketplace 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 di riferimenti a immagini di Azure Marketplace supportate da Azure Batch, vedere l'operazione List node agent SKUs.

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 le indicazioni per Linux o Windows VMs.

  • 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 può incontrare alcuni 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 portale di Azure o della riga di comando. Per i passaggi e le opzioni per creare uno snapshot, vedere le indicazioni 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 Azure AD 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

Request Body

 {
   "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 e oltre usando un'immagine personalizzata, è importante seguire le indicazioni precedenti per usare un'immagine creata dallo snapshot di una macchina virtuale.

Tenere presenti anche le seguenti considerazioni:

  • Limiti di 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 Azure Compute Gallery, è possibile creare pool di dimensioni maggiori con le immagini personalizzate insieme a repliche di immagini condivise. Con Immagini condivise, il tempo necessario affinché il pool raggiunga lo stato stabile diminuisce del 25% e la latenza di inattività della macchina virtuale si riduce fino al 30%.

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 ricevuto 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