Beskriva Slurm-integrering med Azure CycleCloud

Slutförd

I slutet av den här lektionen bör du kunna beskriva hur Slurm integreras med Azure CycleCloud och beskriva viktiga integreringsområden mellan Slurm och Azure CycleCloud.

Vad är Azure CycleCloud?

Azure CycleCloud är ett verktyg för att distribuera HPC-kluster i Azure och hantera deras arbetsbelastningar. Det erbjuder ett brett utbud av HPC-funktioner, inklusive:

  • Mallbaserad distribution av HPC-kluster: Azure CycleCloud tillhandahåller inbyggda, anpassningsbara mallar som distribuerar de vanligaste klusterschemaläggarna, inklusive Slurm, OpenPBS, LSF, Grid Engine och HTCondor. Många andra fördefinierade mallar, som du kan importera till din Azure CycleCloud-instans, är tillgängliga från CycleCloud GitHub-lagringsplatsen.
  • Manuell och automatiserad skalning av klusternoder: Azure CycleCloud möjliggör manuell och automatiserad horisontell skalning av hanterade kluster enligt längden på jobbköer och styrningsprinciper. Det erbjuder också ett REST-API för att utveckla autoskalningskort för anpassade schemaläggare.
  • Nodkonfiguration via cloud-init-skript: Azure CycleCloud stöder konfigurationshantering baserat på anpassade skript som körs i hanterade klusternoder före andra CycleCloud-specifika konfigurationsuppgifter.
  • Hantera den interna och externa klusterlagringen: Med Azure CycleCloud kan du konfigurera klusterlagring genom att etablera, montera och formatera Azure-hanterade diskar och nätverksansluten lagring, till exempel NFS-servrar eller BeeGFS-kluster.
  • Övervakning, loggning och avisering: Azure CycleCloud erbjuder inbyggd klusterövervakning och integreras med Azure Monitor. Det går också att lagra loggdata från CycleCloud-kluster till Log Analytics och skapa anpassade instrumentpaneler för mått. Du kan också skapa anpassade aviseringar och e-postmeddelanden som utlöses av telemetridata. Alla Azure CycleCloud-aktiviteter loggas.
  • Autentisering och auktorisering: Azure CycleCloud stöder inbyggd lokal autentisering. Du kan också integrera den med Active Directory-domän Services (AD DS) eller andra LDAP-baserade identitetsprovidrar (Lightweight Directory Access Protocol). Som standard har de lokalt definierade användarna åtkomst till operativsystemet på de hanterade klusternoderna, men det är möjligt att administrera klusteranvändare separat. För att hantera resurser i en Azure-prenumeration kan du använda tjänstens huvudnamn eller hanterade identitet i Microsoft Entra.
  • Kostnadsrapportering och kontroller i nära realtid: Azure CycleCloud spårar klusteranvändningen och beräknar motsvarande kostnad. Med den här funktionen kan du konfigurera budgetaviseringar som utlöses när klusterkostnaden överskrider det belopp som du har angett. Azure CycleCloud integreras också med Microsoft Cost Management.

Azure CycleCloud och Azure Batch

Azure CycleCloud och Azure Batch är Azure-tjänster som utformats för att hantera och köra storskaliga parallella och högpresterande databehandlingsarbetsbelastningar i molnet. Tjänsterna skiljer sig åt i målgrupper, funktionsuppsättningar och användningsfall.

Azure CycleCloud fokuserar på att skapa, hantera och optimera HPC- och HTC-kluster i Azure. CycleCloud riktar sig till domänspecifika HPC- och HTC-arbetsbelastningar, till exempel beräkningsvätskedynamik, genomik och tekniska simuleringar. CycleCloud stöder olika klusterschemaläggare som Slurm, Grid Engine, LSF och HTCondor. Den integreras också med Azure-tjänster som Azure Blob Storage, Azure Managed Disks och Azure NetApp Files för lagringslösningar.

Azure Batch är en hanterad tjänst som är utformad för att köra storskaliga parallella arbetsbelastningar och batchbearbetningsarbetsbelastningar i Azure. Azure Batch är lämpligt för olika typer av batchbearbetningsuppgifter, till exempel databearbetning, rendering och maskininlärningsmodellträning. Azure Batch tar hand om att hantera resurser, schemalägga uppgifter och skala beräkningsnoder baserat på arbetsbelastningskraven.

Azure CycleCloud är särskilt utformat för HPC- och HTC-arbetsbelastningar, med stöd för flera klusterschemaläggare, medan Azure Batch är mer generellt och stöder olika typer av parallella uppgifter och batchbearbetningsuppgifter.

Förstå HPC- och HTC-partitioner

En Azure CycleCloud-partition är en logisk gruppering av beräkningsnoder med en specifik konfigurations-, syftes- eller arbetsbelastningstyp. Termerna HPC-partition och HTC-partition refererar till partitioner som konfigurerats för att hantera databehandling med höga prestanda och databehandling med högt dataflöde.

HPC-partitioner använder ett stort antal CPU- eller GPU-baserade virtuella datorer för att utföra komplexa uppgifter. HTC är en arkitektur som använder många beräkningsresurser under långa tidsperioder för att utföra ett stort antal löst kopplade uppgifter. Du kan använda HPC-partitioner när du behöver utföra stora och komplexa beräkningar, till exempel de som ingår i vetenskapliga och tekniska simuleringar.

HTC-partitionen använder ett stort antal CPU- eller GPU-baserade noder för virtuella datorer för att lösa komplexa matematiska uppgifter som kräver nära koppling och snabb kommunikation. HTC-jobb är vanligtvis oberoende, sekventiella och kan schemaläggas på olika beräkningsresurser på flera platser. HPC-jobb är vanligtvis parallella, beroende och måste köras på en enda plats med anslutningar med låg latens. HTC är lämpligt för bearbetning av stora volymer av mindre uppgifter och är bra för batchbearbetning av dataintensiva uppgifter som kan delas upp i små element. Batchbearbetning i HTC gör det möjligt att bearbeta stora mängder data eller beräkningsuppgifter genom att dela upp dem i mindre, hanterbara grupper som kallas batchar. Kluster bearbetar dessa batchar parallellt genom att allokera varje batch till en annan nod i beräkningsklustret.

I molnbaserade miljöer som Azure CycleCloud kan HTC och HPC köras på samma klusterarkitektur.

Implementera Azure CycleCloud

CycleCloud implementeras som ett Linux-baserat webbprogram som du kan installera på valfri plats där du kan komma åt din Azure-miljö. Det enklaste sättet att konfigurera den är genom att distribuera en virtuell Azure-dator med hjälp av motsvarande Azure Marketplace-avbildning, med alternativet att automatisera distributionen med hjälp av en ARM-mall (Azure Resource Manager). Du kan också använda yum eller apt paket eller en containeravbildning som är tillgänglig från Microsofts Container Registry.

Under den första konfigurationen har du möjlighet att ange en SSH-nyckel för att skydda åtkomsten till operativsystemet som är värd för CycleCloud-programmet och till de senare distribuerade klusternoderna. Om du vill att CycleCloud-programmet ska interagera med ARM måste du välja en Microsoft Entra-identitet som ger säkerhetskontext för den här interaktionen och tilldelar den tillräckliga behörigheter i azure-målprenumerationen med hjälp av rollbaserad åtkomstkontroll i Azure (RBAC). Den här identiteten kan vara ett huvudnamn för tjänsten, eller om du är värd för Azure CycleCloud-programmet på en virtuell Azure-dator, en hanterad identitet.

En Azure CycleCloud-instans kräver också ett Azure Storage-konto och en tillhörande blobcontainer. Den här containern, som kallas för ett skåp, tillhandahåller mellanlagringsområdet för distribution av projekt till klusternoder.

När det har installerats tillhandahåller Azure CycleCloud-programmet ett grafiskt användargränssnitt som gör det möjligt för en användare att hantera och övervaka HPC-system och ett kommandoradsgränssnitt (CLI) som underlättar automatisering och integrering av CycleCloud i befintliga arbetsflöden. Du kan också använda CLI för att importera mallar, automatisera klusteretablering och utföra mer avancerade hanteringsuppgifter.

Förstå autoskalning av CycleCloud-kluster

Azure CycleCloud underlättar distributionen av schemaläggare i Azure, som i sin tur distribuerar och hanterar jobb som körs på kluster som består av Azure-resurser. Azure CycleCloud fungerar inte som schemaläggare. I stället fungerar den som en mellanhand mellan schemaläggare och den underliggande plattformen. Azure CycleCloud förenklar också utvecklingen av funktioner för automatisk skalning för motsvarande schemaläggare genom att tillhandahålla ett REST API-baserat programmeringsgränssnitt och ett Python-baserat klientbibliotek.

Med Azure CycleCloud kan du korrelera autoskalningsbeteendet för hanterade kluster med längden på klusterjobbsköerna. Du kan ytterligare anpassa det här beteendet genom att definiera mallparametrar som styr (till exempel) hur lång tid som inaktiva noder avslutas eller frekvensen för automatiska kontroller.

Alla inbyggda mallar exponerar inställningarna för automatisk skalning direkt i det grafiska Azure CycleCloud-gränssnittet. I varje fall innehåller inställningarna alternativet att ange det automatiska skalningsintervallets nedre och övre gränser, uttryckt i antalet CPU-kärnor. Den övre gränsen hjälper dig att minimera risken för oväntade avgifter. Du kan minska risken ytterligare genom att ange budgetaviseringar.

Med det lägre tröskelvärdet inställt på 0 resulterar skapandet av ett kluster i att endast etablera schemaläggarens huvudnod. Men när schemaläggaren identifierar köade jobb initieras etableringen av de beräkningsnoder som krävs för att köra motsvarande arbetsbelastning, upp till den gräns som du har definierat. För att stödja löst kopplade eller parallella jobb, där enskilda uppgifter körs oberoende av varandra, börjar jobben köras så snart den första noden blir tillgänglig. För nära kopplade jobb, till exempel de som använder MPI-funktionen (Message Passing Interface), är väntetiden längre, beroende på omfattningen av internodberoenden. När jobbkön har varit tom under den tid som överskrider den tillåtna inaktivitetstiden börjar beräkningsnoderna att fyllas på automatiskt, och klustret består återigen endast av huvudnoden för schemaläggaren.

Slurm-integrering med CycleCloud

Du kan integrera Slurm med Azure CycleCloud genom att konfigurera ett Slurm-baserat kluster i CycleCloud, där CycleCloud hanterar den underliggande infrastrukturen och Slurm tar hand om jobbschemaläggning och resurshantering.

Slurm integreras med Azure CycleCloud på följande sätt:

  • Klusterkonfiguration: När du skapar ett nytt kluster i Azure CycleCloud kan du välja Slurm som klusterschemaläggare. Det innebär att CycleCloud konfigurerar klusterresurserna (till exempel virtuella datorer, lagring, nätverk) och distribuerar Slurm-schemaläggaren på klustrets huvudnod (eller styrenhetsnod).
  • Klusterdistribution Azure CycleCloud distribuerar Slurm-klustret i Azure och skapar nödvändiga virtuella datorer för huvudnoden och beräkningsnoderna. Huvudnoden kör Slurm-styrenhetsdaemonen (slurmctld) och beräkningsnoderna kör Slurm-daemonen (slurmd) som ansvarar för att köra jobb. CycleCloud konfigurerar nätverks- och lagringsresurserna och konfigurerar Slurm-klustret enligt de angivna inställningarna.
  • Autoskalning: Azure CycleCloud kan dynamiskt skala Slurm-kluster genom att lägga till eller ta bort beräkningsnoder baserat på arbetsbelastningskraven och definierade principer för automatisk skalning. Detta hjälper till att optimera resursanvändningen och kontrollera kostnaderna. När nya jobb skickas och resurserna är otillräckliga kan CycleCloud automatiskt etablera ytterligare beräkningsnoder och lägga till dem i Slurm-klustret. När arbetsbelastningen minskar kan CycleCloud på samma sätt automatiskt ta bort inaktiva beräkningsnoder för att spara kostnader.
  • Övervakning och hantering: Azure CycleCloud tillhandahåller övervaknings- och hanteringsfunktioner för Slurm-klustret, till exempel spårning av klusterprestanda, resursanvändning och jobbstatus. Du kan också hantera klusterlivscykeln, starta/stoppa klustret och tillämpa uppdateringar efter behov.
  • Jobböverföring: Du kan skicka jobb till Slurm-klustret med hjälp av standardkommandon för Slurm som sbatch, srunoch salloc. Dessa jobb schemaläggs och körs sedan på de virtuella Azure-datorer som utgör beräkningsnoderna i Slurm-klustret.