Noder och pooler i Azure Batch

I ett Azure Batch-arbetsflöde är en beräkningsnod (eller nod) en virtuell dator som bearbetar en del av programmets arbetsbelastning. En pool är en samling av dessa noder som programmet ska köras på. Den här artikeln förklarar mer om noder och pooler, tillsammans med överväganden när du skapar och använder dem i ett Azure Batch-arbetsflöde.

Noder

En nod är en virtuell Azure-dator (VM) eller en virtuell molntjänstdator som är dedikerad till bearbetning av en del av programmets arbetsbelastning. Storleken på en nod avgör antalet CPU-kärnor, minneskapaciteten och storleken på det lokala filsystemet som allokeras till noden.

Du kan skapa pooler för Windows- eller Linux-noder med Azure Cloud Services eller Marketplace-avbildningar för Azure Virtual Machines eller anpassade avbildningar du förbereder.

Noder kan köra alla körbara filer eller skript som stöds av nodens operativsystemmiljö, Körbara filer eller skript inkluderar *.exe, *.cmd, *.bat och PowerShell-skript (för Windows) och binärfiler, shell- och Python-skript (för Linux).

Alla beräkningsnoder i Batch innehåller också:

Som standard kan noder kommunicera med varandra, men de kan inte kommunicera med virtuella datorer som inte ingår i samma pool. Om du vill tillåta att noder kommunicerar säkert med andra virtuella datorer, eller med ett lokalt nätverk, kan du etablera poolen i ett undernät i ett virtuellt Azure-nätverk (VNet). När du gör det kan dina noder nås via offentliga IP-adresser. Dessa offentliga IP-adresser skapas av Batch och kan ändras under poolens livslängd. Du kan också skapa en pool med statiska offentliga IP-adresser som du styr, vilket säkerställer att de inte ändras oväntat.

Pooler

En pool är den samling noder som programmet körs på.

Azure Batch-pooler baseras på den grundläggande Azure-beräkningsplattformen. De tillhandahåller storskalig allokering, programinstallation, datadistribution, hälsoövervakning och flexibel justering (skalning) av antalet beräkningsnoder i en pool.

Varje nod som läggs till i en pool tilldelas ett unikt namn och en IP-adress. När en nod tas bort från en pool försvinner alla ändringar som gjorts i operativsystemet eller filer, och dess namn och IP-adress frisläpps för framtida användning. När en nod lämnar poolen är dess livslängd över.

En pool kan endast användas av det Batch-konto som den skapades under. Ett Batch-konto kan skapa flera pooler för att uppfylla resurskraven för de program som körs.

Poolen kan skapas manuellt eller automatiskt av Batch-tjänsten när du anger vilket arbete som ska utföras. När du skapar en pool kan du ange följande attribut:

Viktigt!

Batch-konton har en standardkvot som begränsar antalet kärnor i ett Batch-konto. Antalet kärnor motsvarar antalet beräkningsnoder. Du hittar standardkvoterna och instruktioner om hur du ökar en kvot i Kvoter och gränser för Azure Batch-tjänsten. Om din pool inte uppnår antalet målnoder kan det bero på kärnkvoten.

Operativsystem och version

När du skapar en Batch-pool anger du konfigurationen av den virtuella Azure-datorn och vilken typ av operativsystem du vill köra på varje beräkningsnod i poolen.

-konfigurationer

Konfiguration av virtuell dator

Konfigurationen av virtuella datorer anger att poolen består av virtuella Azure-datorer. Dessa virtuella datorer kan skapas från Linux- eller Windows-avbildningar.

Batch-nodagenten är ett program som körs på varje nod i poolen och tillhandahåller kommando- och kontrollgränssnittet mellan noden och Batch-tjänsten. Det finns olika implementeringar av nodagenten, så kallade SKU:er, för olika operativsystem. När du skapar en pool med noder i en konfiguration av en virtuell dator måste du inte bara ange storleken på noderna och källan för avbildningarna som användes för att skapa dem, utan även referensen till avbildningen av den virtuella datorn och Batch-nodagentens SKU som ska installeras på noderna. Mer information om hur du anger dessa poolegenskaper finns i Etablera Linux-beräkningsnoder i Azure Batch-pooler. Om du vill kan du koppla en eller flera tomma datadiskar till en pool med virtuella datorer som skapats av Microsoft Azure Marketplace-avbildningar. Alternativt kan du inkludera datadiskar i de anpassade avbildningar som används för att skapa de virtuella datorerna. När du inkluderar datadiskar måste du montera och formatera diskarna från en virtuell dator för att kunna använda dem.

Nodagent-SKU:er

När du skapar en pool måste du välja lämplig nodeAgentSkuId, beroende på vilket operativsystem din VHD-basavbildning har. Du kan hämta en mappning av tillgängliga SKU-ID:n för nodagenten till deras OS-avbildningsreferenser genom att anropa åtgärden List Supported Node Agent SKU:er (List Supported Node Agent SKU:er ).

Anpassade avbildningar för virtuell datorpooler

Information om hur du skapar en pool med anpassade avbildningar finns i Använda Azure Compute-galleriet för att skapa en anpassad pool.

Stöd för containrar i pooler med virtuella datorer

När du skapar en pool med virtuella datorer med hjälp av Batch-API:er kan du ställa in poolen på att köra uppgifter i Docker-containrar. För närvarande måste du skapa poolen med hjälp av en avbildning som stöder Docker-container. Använd Windows Server 2016 Datacenter och en containeravbildning från Microsoft Azure Marketplace. Alternativt kan du ange en anpassad VM-avbildning som innehåller Docker Community Edition eller Enterprise Edition och alla nödvändiga drivrutiner. Poolinställningarna måste innehålla en containerkonfiguration som kopierar containeravbildningar till de virtuella datorerna när poolen skapas. Uppgifter som körs i poolen kan sedan referera till containeravbildningar och körningsalternativ för containrar.

Mer information finns i Run Docker container applications on Azure Batch (Köra Docker-behållarprogram på Azure Batch).

Nodtyp och mål

När du skapar en pool kan du ange vilka typer av noder du vill ha och målnumret för var och en. De två typerna av noder är:

  • Dedikerade noder. Dedikerade beräkningsnoder är reserverade för dina arbetsbelastningar. De är dyrare än dekornoder, men de kommer garanterat aldrig att föregripas.
  • Skalningsnoder för oanvänd kapacitet. Noder med oanvänd kapacitet utnyttjar överskottskapaciteten i Azure för att köra dina Batch-arbetsbelastningar. Spotnoder är billigare per timme än dedikerade noder och aktiverar arbetsbelastningar som kräver betydande beräkningskraft. Mer information finns i Använda virtuella datorer med oanvänd kapacitet med Batch.

Oanvända noder kan föregripas när Azure inte har tillräckligt med överskottskapacitet. Om en nod avbryts när aktiviteter körs placeras aktiviteterna i kö igen och körs när en beräkningsnod blir tillgänglig igen. Punktnoder är ett bra alternativ för arbetsbelastningar där jobbets slutförandetid är flexibel och arbetet distribueras över många noder. Innan du bestämmer dig för att använda skalningsnoder för ditt scenario ska du se till att allt arbete som förlorats på grund av preemption är minimalt och enkelt att återskapa.

Du kan ha både skalbara och dedikerade beräkningsnoder i samma pool. Varje typ av nod har en egen målinställning, där du kan ange önskat antal noder.

Antalet beräkningsnoder kallas mål eftersom din pool i vissa fall kanske inte når det önskade antalet noder. Detta kan hända om poolen först nått kärnkvoten för ditt Batch-konto. Eller så kanske poolen inte uppnår målet om du har tillämpat en automatisk skalningsformel på poolen som begränsar det maximala antalet noder.

Prisinformation för både spot- och dedikerade noder finns i Batch-priser.

Nodstorlek

När du skapar en Azure Batch-pool kan du välja bland nästan alla VM-familjer och storlekar i Azure. Azure erbjuder ett utbud av VM-storlekar för olika arbetsbelastningar, som särskilda HPC- eller GPU-aktiverade VM-storlekar. Observera att nodstorlekar bara kan väljas när en pool skapas. När en pool har skapats kan dess nodstorlek med andra ord inte ändras.

Mer information finns i Choose a VM size for compute nodes in an Azure Batch pool (Välja VM-storlek för beräkningsnoder i Azure Batch-poolen).

Princip för automatisk skalning

För dynamiska arbetsbelastningar kan du tillämpa en princip för automatisk skalning på en pool. Batch-tjänsten utvärderar regelbundet din formel och justerar dynamiskt antalet noder i poolen enligt den aktuella arbetsbelastningen och resursanvändningen i ditt beräkningsscenario. På så sätt kan du sänka den totala kostnaden för programkörning genom att endast använda de resurser som du behöver och frisläppa de som du inte behöver.

Du aktiverar automatisk skalning genom att skriva en formel för automatisk skalning och associera formeln med en pool. Batch-tjänsten använder formeln för att bestämma antalet noder i poolen för nästa skalningsintervall (ett intervall som du kan konfigurera). Du kan ange inställningarna för automatisk skalning för en pool när du skapar den eller aktivera skalning för en pool senare. Du kan också uppdatera skalningsinställningarna för en skalningsaktiverad pool.

Till exempel kanske ett jobb kräver att du skickar ett stort antal aktiviteter som ska köras. Du kan tilldela en skalningsformel till poolen som justerar antalet noder i poolen baserat på antalet köade aktiviteter och aktiviteternas slutförandefrekvens. Batch-tjänsten utvärderar med jämna mellanrum formeln och ändrar storlek på poolen baserat på arbetsbelastningen och dina övriga formelinställningar. Tjänsten lägger till noder efter behov när det finns ett stort antal köade aktiviteter och tar bort noder när det inte finns några uppgifter i kö eller inte körs några uppgifter.

En skalningsformel kan baseras på följande mått:

  • Tidsmått baseras på statistik som samlas in var femte minut under angivet antalet timmar.
  • Resursmått baseras på processoranvändning, bandbreddsanvändning, minnesanvändning och antalet noder.
  • Aktivitetsmått baseras på aktivitetens tillstånd, t.ex. Aktiv (köad), Körs eller Slutförd.

Om den automatiska skalningen minskar antalet beräkningsnoder i en pool måste du bestämma hur pågående aktiviteter ska hanteras vid nedskalningen. I Batch kan detta kan hanteras med en nodavallokeringsprincip som du lägger till i formeln. Du kan till exempel ange att pågående aktiviteter ska stoppas direkt och sedan placeras i kö för att köras på en annan nod eller att de ska slutföras innan noden tas bort från poolen. Observera att om du anger alternativet för nodborttagning som taskcompletion eller retaineddata förhindrar att poolstorleksåtgärder ändras tills alla aktiviteter har slutförts eller alla kvarhållningsperioder för aktiviteter har upphört att gälla.

Mer information om automatisk skalning av program finns i Skala beräkningsnoder automatiskt i en Azure Batch-pool.

Dricks

Du kan maximera användningen av beräkningsresurserna genom att ange målantalet noder till noll i slutet av ett jobb, men tillåta att aktiviteter som körs slutförs.

Schemaläggningsprincip för aktiviteter

Konfigurationsalternativet för högsta antal aktiviteter per nod anger det högsta antal aktiviteter som kan köras parallellt på varje beräkningsnod i poolen.

Standardkonfigurationen specificerar att en aktivitet i taget ska köras på en nod, men det finns scenarier där det kan vara bra om två eller fler aktiviteter kan köras samtidigt på en nod. Information om hur du kan dra fördel av flera aktiviteter per nod finns i exempelscenariot i artikeln om samtidiga nodaktiviteter.

Du kan också ange en fyllningstyp som avgör om Batch sprider aktiviteterna jämnt över alla noder i en pool eller packar varje nod med det maximala antalet aktiviteter innan aktiviteter tilldelas till en annan nod.

Kommunikationsstatus

I de flesta fall körs aktiviteterna oberoende av varandra och behöver inte kommunicera med varandra. Det kan dock finnas program där aktiviteterna måste kommunicera (till exempel i MPI-scenarier).

Du kan konfigurera en pool för att tillåta internodkommunikation så att noder i en pool kan kommunicera vid körning. När kommunikation mellan noder är aktiverat kan noderna i pooler med Cloud Services-konfiguration kommunicera med varandra på portar som är större än 1100, och pooler med VM-konfiguration begränsar inte trafiken på någon port.

Aktivering av internodkommunikation påverkar också placeringen av noderna i kluster och kan begränsa det maximala antalet noder i en pool på grund av distributionsbegränsningar. Om programmet inte kräver kommunikation mellan noder kan Batch-tjänsten allokera ett potentiellt stort antal noder till poolen från många olika kluster och datacenter för ökad parallell bearbetningskapacitet.

Starta uppgifter

Om du vill kan du lägga till en startaktivitet som körs på varje nod när noden ansluter till poolen och varje gång en nod startas om eller omskapas. Startaktiviteten är särskilt användbar för att förbereda beräkningsnoder för körningen av aktiviteter, till exempel installationen av de program som aktiviteterna kör på beräkningsnoderna.

Programpaket

Du kan ange programpaket som ska distribueras till beräkningsnoderna i poolen. Med programpaket blir det lättare att distribuera och hantera versionerna av de program som dina aktiviteter kör. Programpaket som du anger för en pool installeras på varje nod som ansluter till den poolen, samt varje gång en nod startas om och varje gång nodens avbildning återställs.

Mer information om hur du använder programpaket för att distribuera program till dina Batch-noder finns i Deploy applications to compute nodes with Batch application packages (Distribuera program till beräkningsnoder med Batch-programpaket).

Konfiguration av virtuella nätverk (VNet) och brandväggar

När du etablerar en pool av beräkningsnoder i Batch kan du associera poolen med ett undernät för ett virtuellt Azure-nätverk (VNet). Om du vill använda ett virtuellt Azure-nätverk måste Batch-klient-API:et använda Microsoft Entra-autentisering. Azure Batch-stöd för Microsoft Entra-ID dokumenteras i Autentisera Batch-tjänstlösningar med Active Directory.

VNet-krav

Läs mer om hur du konfigurerar en Batch-pool i ett VNet i Create a pool of virtual machines with your virtual network (Skapa en pool av virtuella datorer med det virtuella nätverket).

Dricks

För att säkerställa att de offentliga IP-adresser som används för att komma åt noder inte ändras kan du skapa en pool med angivna offentliga IP-adresser som du styr.

Livslängd för pooler och beräkningsnoder

När du utformar din Azure Batch-lösning måste du ange hur och när pooler skapas och hur länge beräkningsnoder i dessa pooler ska vara tillgängliga.

Ett alternativ är att skapa en pool för varje jobb som du skickar och sedan ta bort poolen så fort aktiviteterna har slutförts. Detta maximerar användningen eftersom noderna bara allokeras när det behövs och stängs av när de är inaktiva. Det innebär att jobbet måste vänta tills noderna har allokerats, men det är viktigt att observera att aktiviteterna är schemalagda för körning så snart noderna allokeras individuellt och startaktiviteten har slutförts. Batch väntar inte tills alla noderna i en pool är tillgängliga innan aktiviteterna tilldelas till noderna. vilket säkerställer maximal användning av alla tillgängliga noder.

Å andra sidan, om det är högsta prioritet att jobben startar direkt, kan en pool skapas i förväg och dess noder göras tillgängliga innan jobben skickas. I det här scenariot kan aktiviteterna starta direkt, men noderna kan vara inaktiva medan de väntar på att aktiviteter ska tilldelas.

En kombinerad metod används vanligtvis för att hantera en variabel men pågående belastning. Du kan ha en pool där flera jobb skickas och kan skala upp eller ned antalet noder enligt jobbbelastningen. Detta kan göras reaktivt baserat på den aktuella belastningen eller proaktivt om det går att förutse belastningen. Mer information finns i Automatisk skalningsprincip.

Automatiska pooler

En automatisk pool är en pool som skapas av Batch-tjänsten när ett jobb skickas, i stället för att skapas före de jobb som ska köras i poolen. Batch-tjänsten hanterar livslängden för en automatisk pool enligt de egenskaper som du anger. Oftast är dessa pooler också inställda på att tas bort automatiskt när deras jobb har slutförts.

Säkerhet med certifikat

Vanligtvis måste du använda certifikat när du krypterar eller avkrypterar känslig aktivitetsinformation, till exempel nyckeln för ett Azure Storage-konto. För detta ändamål kan du installera certifikat på noderna. Krypterade hemligheter skickas till aktiviteter via kommandoradsparametrar eller bäddas in i någon av aktivitetsresurserna, och de installerade certifikaten kan användas för att dekryptera dem.

Du använder åtgärden Lägg till certifikat (Batch REST) eller metoden CertificateOperations.CreateCertificate (Batch .NET) för att lägga till ett certifikat till ett Batch-konto. Därefter kan du associera certifikatet med en ny eller befintlig pool.

När ett certifikat associeras med en pool installeras certifikatet av Batch-tjänsten på varje nod i poolen. Batch-tjänsten installerar lämpliga certifikat när noden startas innan du startar några aktiviteter (inklusive startaktiviteten och jobbhanteraraktiviteten).

Om du lägger till ett certifikat i en befintlig pool måste du starta om dess beräkningsnoder för att certifikatet ska tillämpas på noderna.

Nästa steg