Använda Azure Compute-galleriet för att skapa en anpassad avbildningspool

När du skapar en Azure Batch-pool med hjälp av konfigurationen för virtuella datorer anger du en VM-avbildning som tillhandahåller operativsystemet för varje beräkningsnod i poolen. Du kan skapa en pool med virtuella datorer antingen med en Azure Marketplace-avbildning som stöds eller skapa en anpassad avbildning med en Azure Compute Gallery-avbildning.

När du använder Azure Compute Gallery för din anpassade avbildning har du kontroll över operativsystemtypen och konfigurationen samt typen av datadiskar. Den delade avbildningen kan innehålla program och referensdata som blir tillgängliga på alla Batch-poolnoder så snart de har etablerats.

Du kan också ha flera versioner av en avbildning efter behov för din miljö. När du använder en avbildningsversion för att skapa en virtuell dator används avbildningsversionen för att skapa nya diskar för den virtuella datorn.

När du använder en delad avbildning sparas tid när du förbereder poolens beräkningsnoder för att köra Batch-arbetsbelastningen. Det går att använda en Azure Marketplace-avbildning och installera programvara på varje beräkningsnod efter etableringen, men att använda en delad avbildning är vanligtvis effektivare. Dessutom kan du ange flera repliker för den delade avbildningen, så när du skapar pooler med många virtuella datorer (fler än 600 virtuella datorer) sparar du tid när poolen skapas.

Att använda en delad avbildning som konfigurerats för ditt scenario kan ge flera fördelar:

  • Använd samma bilder i regionerna. Du kan skapa delade avbildningsrepliker i olika regioner så att alla dina pooler använder samma bild.
  • Konfigurera operativsystemet (OS). Du kan anpassa konfigurationen av avbildningens operativsystemdisk.
  • Förinstallera program. Förinstallation av program på OS-disken är mer effektivt och mindre felbenäget än att installera program efter etablering av beräkningsnoderna med en startuppgift.
  • Kopiera stora mängder data en gång. Gör statiska data till en del av den hanterade delade avbildningen genom att kopiera den till en hanterad avbildnings datadiskar. Detta behöver bara göras en gång och gör data tillgängliga för varje nod i poolen.
  • Utöka pooler till större storlekar. Med Azure Compute-galleriet kan du skapa större pooler med dina anpassade avbildningar tillsammans med fler repliker med delad bild.
  • Bättre prestanda än att bara använda en hanterad avbildning som en anpassad avbildning. För en anpassad avbildningspool för delad avbildning är tiden för att nå det stadiga tillståndet upp till 25 % snabbare och den virtuella datorns inaktiva svarstid är upp till 30 % kortare.
  • Versionshantering och gruppering av avbildningar för enklare hantering. Definitionen för bildgruppering innehåller information om varför avbildningen skapades, vilket operativsystem den är till för och information om hur du använder avbildningen. Genom att gruppera avbildningar blir det enklare att hantera avbildningar. Mer information finns i Bilddefinitioner.

Förutsättningar

  • Ett Azure Batch-konto. Information om hur du skapar ett Batch-konto finns i Batch-snabbstarterna med hjälp av Azure-portalen eller Azure CLI.

Kommentar

Autentisering med Microsoft Entra-ID krävs. Om du använder autentisering med delad nyckel får du ett autentiseringsfel.

  • en Azure Compute Gallery-avbildning. Om du vill skapa en delad avbildning måste du ha eller skapa en hanterad avbildningsresurs. Avbildningen ska skapas från ögonblicksbilder av den virtuella datorns OS-disk och eventuellt dess anslutna datadiskar.

Kommentar

Om den delade avbildningen inte finns i samma prenumeration som Batch-kontot måste du registrera Microsoft.Batch-resursprovidern för den prenumerationen. De två prenumerationerna måste finnas i samma Microsoft Entra-klientorganisation.

Avbildningen kan finnas i en annan region så länge den har repliker i samma region som ditt Batch-konto.

Om du använder ett Microsoft Entra-program för att skapa en anpassad avbildningspool med en Azure Compute Gallery-avbildning måste programmet ha beviljats en inbyggd Azure-roll som ger det åtkomst till den delade avbildningen. Du kan bevilja den här åtkomsten i Azure-portalen genom att gå till den delade avbildningen, välja Åtkomstkontroll (IAM) och lägga till en rolltilldelning för programmet.

Kommentar

Läsbehörigheterna för Azure Compute Gallery-avbildningen är otillräckliga eftersom de kräver körning av följande minsta åtgärd: Microsoft.Compute/disks/beginGetAccess/action för lämplig åtkomst.

Förbereda en delad avbildning

I Azure kan du förbereda en delad avbildning från en hanterad avbildning som kan skapas från:

  • Ögonblicksbilder av en virtuell Azure-dators operativsystem och datadiskar
  • En generaliserad virtuell Azure-dator med hanterade diskar
  • En generaliserad lokal virtuell hårddisk som laddats upp till molnet

Kommentar

Batch stöder endast generaliserade delade avbildningar. En specialiserad delad avbildning kan inte användas för att skapa en pool.

Följande steg visar hur du förbereder en virtuell dator, tar en ögonblicksbild och skapar en avbildning från ögonblicksbilden.

Förbereda en virtuell dator

Om du skapar en ny virtuell dator för avbildningen använder du Azure Marketplace-avbildning som stöds av Batch som basavbildning för den hanterade avbildningen.

Om du vill få en fullständig lista över aktuella Azure Marketplace-avbildningsreferenser som stöds av Azure Batch använder du något av följande API:er för att returnera en lista över avbildningar av virtuella Windows- och Linux-datorer:

Följ dessa riktlinjer när du skapar virtuella datorer:

  • Kontrollera att den virtuella datorn har skapats med en hanterad disk. Det här är standardinställningen för lagring när du skapar en virtuell dator.
  • Installera inte Azure-tillägg, till exempel tillägget För anpassat skript, på den virtuella datorn. Om avbildningen innehåller ett förinstallerat tillägg kan Azure stöta på problem när du distribuerar Batch-poolen.
  • När du använder anslutna datadiskar måste du montera och formatera diskarna från en virtuell dator för att kunna använda dem.
  • Kontrollera att basoperativsystemavbildningen som du anger använder standard temp-enheten. Batch-nodagenten förväntar sig för närvarande den temporära standardenheten.
  • Kontrollera att OS-disken inte är krypterad.
  • När den virtuella datorn körs ansluter du till den via RDP (för Windows) eller SSH (för Linux). Installera nödvändig programvara eller kopiera önskade data.
  • För snabbare pooletablering använder du inställningen ReadWrite-diskcache för den virtuella datorns OS-disk.

Du måste skapa ett Azure Compute-galleri för att göra din anpassade avbildning tillgänglig. Välj det här galleriet när du skapar en bild i följande steg. Mer information om hur du skapar ett Azure Compute-galleri för dina bilder finns i Skapa ett Azure Compute-galleri.

Skapa en avbildning

Information om hur du skapar en avbildning från en virtuell dator i portalen finns i Avbilda en avbildning av en virtuell dator.

Information om hur du skapar en avbildning med en annan källa än en virtuell dator finns i Skapa en avbildning.

Kommentar

Om basavbildningen har information om inköpsplanen kontrollerar du att galleriavbildningen har identisk köpplansinformation som basavbildning. Mer information om hur du skapar en avbildning som har en inköpsplan finns i Ange köpplansinformation för Azure Marketplace när du skapar avbildningar.

Om basavbildningen inte har köpplansinformation bör du undvika att ange någon inköpsplansinformation för galleriavbildningen.

Information om dessa Marketplace-avbildningar finns i vägledningen för virtuella Linux - eller Windows-datorer .

Använd Azure PowerShell Get-AzGalleryImageDefinition eller Azure CLI az sig image-definition show för att kontrollera om galleribilden har rätt planinformation.

Skapa en pool från en delad avbildning med hjälp av Azure CLI

Om du vill skapa en pool från din delade avbildning med hjälp av Azure CLI använder du az batch pool create kommandot . Ange det delade avbildnings-ID:t i fältet --image . Kontrollera att operativsystemtypen och SKU:n matchar de versioner som anges av --node-agent-sku-id

Viktigt!

Nodagentens SKU-ID måste vara i linje med utgivaren/erbjudandet/SKU:n för att noden ska starta.

az batch pool create \
    --id mypool --vm-size Standard_A1_v2 \
    --target-dedicated-nodes 2 \
    --image "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}" \
    --{node-agent-sku-id}

Skapa en pool från en delad avbildning med C#

Du kan också skapa en pool från en delad avbildning med hjälp av C# SDK.

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: {});
}

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

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

        pool.Commit();
    }
    ...
}

Skapa en pool från en delad avbildning med Python

Du kan också skapa en pool från en delad avbildning med hjälp av Python SDK:

# Import the required modules from the
# Azure Batch Client Library for Python
import azure.batch as batch
import azure.batch.models as batchmodels
from azure.common.credentials import ServicePrincipalCredentials

# Specify Batch account and service principal account credentials
account = "{batch-account-name}"
batch_url = "{batch-account-url}"
ad_client_id = "{sp-client-id}"
ad_tenant = "{tenant-id}"
ad_secret = "{sp-secret}"

# Pool settings
pool_id = "LinuxNodesSamplePoolPython"
vm_size = "STANDARD_D2_V3"
node_count = 1

# Initialize the Batch client with Azure AD authentication
creds = ServicePrincipalCredentials(
    client_id=ad_client_id,
    secret=ad_secret,
    tenant=ad_tenant,
    resource="https://batch.core.windows.net/"
)
client = batch.BatchServiceClient(creds, batch_url)

# Configure the start task for the pool
start_task = batchmodels.StartTask(
    command_line="printenv AZ_BATCH_NODE_STARTUP_DIR"
)
start_task.run_elevated = True

# Create an ImageReference which specifies the image from
# Azure Compute Gallery to install on the nodes.
ir = batchmodels.ImageReference(
    virtual_machine_image_id="/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}"
)

# Create the VirtualMachineConfiguration, specifying
# the VM image reference and the Batch node agent to
# be installed on the node.
vmc = batchmodels.VirtualMachineConfiguration(
    image_reference=ir,
    {node_agent_sku_id}
)

# Create the unbound pool
new_pool = batchmodels.PoolAddParameter(
    id=pool_id,
    vm_size=vm_size,
    target_dedicated_nodes=node_count,
    virtual_machine_configuration=vmc,
    start_task=start_task
)

# Create pool in the Batch service
client.pool.add(new_pool)

Skapa en pool från en delad avbildning eller anpassad avbildning med hjälp av Azure-portalen

Använd följande steg för att skapa en pool från en delad avbildning i Azure-portalen.

  1. Öppna Azure Portal.
  2. Gå till Batch-konton och välj ditt konto.
  3. Välj Pooler och sedan Lägg till för att skapa en ny pool.
  4. I avsnittet Bildtyp väljer du Azure Compute Gallery.
  5. Fyll i de återstående avsnitten med information om din hanterade avbildning.
  6. Välj OK.
  7. När noden har allokerats använder du Anslut för att generera användare och RDP-filen för Windows ELLER använda SSH till för Linux för att logga in på den allokerade noden och verifiera.

Skapa en pool med från en delad avbildning med portalen.

Överväganden för stora pooler

Om du planerar att skapa en pool med hundratals eller tusentals virtuella datorer eller fler med hjälp av en delad avbildning använder du följande vägledning.

  • Repliknummer för Azure Compute Gallery. För varje pool med upp till 300 instanser rekommenderar vi att du behåller minst en replik. Om du till exempel skapar en pool med 3 000 virtuella datorer bör du behålla minst 10 repliker av avbildningen. Vi rekommenderar alltid att du behåller fler repliker än minimikraven för bättre prestanda.

  • Ändra storlek på tidsgränsen. Om poolen innehåller ett fast antal noder (om den inte autoskalas) ökar resizeTimeout du poolens egenskap beroende på poolens storlek. För varje 1 000 virtuella datorer är den rekommenderade tidsgränsen för storleksändring minst 15 minuter. Den rekommenderade tidsgränsen för storleksändring för en pool med 2 000 virtuella datorer är till exempel minst 30 minuter.

Nästa steg