CycleCloud-kluster

I CycleCloud används termen kluster för att beskriva en grupp anslutna datorer (noder) som arbetar tillsammans som ett enda system. Kluster kan kapslas. Till exempel kan ett beräkningskluster som består av en grid engine-huvudnod och beräkningsnoder montera ett BeeGFS-kluster som består av flera metadata och lagringsservrar, där både beräknings- och lagringskluster sammansvärjs under ett enda överordnat HPC-kluster eller system.

Översiktsdiagram

Noder och nodmatriser

Kluster består i grunden av noder, som var och en utför en specifik roll i HPC-systemet. Termerna nod och virtuell dator används synonymt ibland men är semantiskt åtskilda i CycleCloud. Noder som utgör ett kluster är i princip virtuella datorer i Azure som har slutfört förberedelsen och konfigurationsprocessen. Med andra ord etableras virtuella datorer från tjänstlagren för Azure-infrastruktur och deras sluttillstånd är noder i ett HPC-kluster efter att ha gått igenom steg för installation och konfiguration av programvara.

Arkitekturdiagram

Det finns två separata inkarnationer av noder i CycleCloud. Den första som en fristående nod och den andra som en nodmatris, som är en samling identiskt konfigurerade noder (skillnaden mellan nod och nodmatris följer DevOps Pets vs Cattle-analogi i anda). I stort sett men inte strikt sett konstrueras fristående noder från enskilda virtuella datorer i Azure medan nodmatriser mappas till VMSS -skalningsuppsättningar (VMSS).

Det finns dock viktiga skillnader mellan nodmatriser och VM-skalningsuppsättningar, den primära är att en enda nodmatris kan bestå av flera VM-skalningsuppsättningar. Detta gör att en enskild nodmatris kan byggas från virtuella datorer med olika storlekar, eller till och med olika VM-familjer, där den enda begränsningen är att alla noder i en nodmatris utför samma roll i klustret, till exempel att tillhandahålla resurser till en enda kö av en schemaläggare.

Klustermallar

Topologin, eller hur noder är ordnade i ett CycleCloud-kluster, definieras i textmallar som beskriver relationerna mellan noder i ett kluster och i fallet med kapslade kluster, den överordnade och underordnade relationen mellan kluster. Mallarna ger också ett sätt att definiera vilken roll varje nod spelar.

Klustermallar definieras i ini-format. Avsnitt, avgränsade med hakparenteser [,] används för att definiera kluster, noder och nodmatriser. Det grundläggande elementet i INI-filer är nyckel/värde-parkontroller som innehåller konfigurationsinformationen för varje avsnitt. Den här konfigurationsinformationen ger sammanhangsberoende information som används för att skapa varje nod i ett kluster, från den virtuella datoravbildning som används för att starta den virtuella datorn till det undernät som den virtuella datorn ska etableras i. Läs mer om CycleCloud-klustermallarna

Förberedelse och konfiguration av noder

CycleCloud etablerar virtuella datorer från grundläggande VM-avbildningar som definierats i klustermallen och genom en serie steg som hanteras av CycleCloud-agenten (Jetpack) under startprocessen initierar och konfigurerar operativsystemet på den virtuella datorn för att konvertera det till en fungerande HPC-nod. De här stegen sträcker sig från skript för att installera och konfigurera schemaläggningsprogramvaran, till den sista milskonfigurationen för montering av ett filsystem.

Diagram över nodförberedelse

Definieras i konfigurationsavsnittet för varje nod är cluster-init specs – specifikationer som tillhandahålls till varje virtuell startdator som används för att förbereda den för en specifik roll i klustret. CycleCloud använder Chef som plattform för infrastrukturautomatisering för att förbereda och konfigurera varje nod. I själva verket mappar varje cluster-init-specifikation till en av fler Chef-roller och/eller Cookbook-recept som måste köras på den virtuella startdatorn.

CycleCloud använder Chef i ett fristående läge som inte förlitar sig på en central chef-server. I stället laddas hela uppsättningen Chef Cookbooks som behövs för att förbereda varje virtuell dator ned från ett Azure Storage-konto som tillhör användaren under vm-startfasen. Den här uppsättningen cookbooks cachelagras från CycleCloud-programservern till lagringskontot när klustret skapas.

När dessa kokböcker har laddats ned bearbetar Chef listan med recept som definierats i nodens klusterinitspecifikationer, vilket utlöser en förberedelse- och konfigurationsfas som konverterar den virtuella datorn till en fungerande HPC-nod.

Specifikationer skapas som logiska samlingar som kallas Projekt. Till exempel består ett projekt för en batch-schemaläggare, till exempel Slurm, av minst två specifikationer: en för schemaläggarens huvudnoder och den andra för beräkningsnoderna. Läs mer om CycleCloud-projekt

Nodorkestrering

Beroende på vilken schemaläggare och vilka tjänster som används i ett kluster måste CycleCloud ibland orkestrera förberedelsefasen för noder i ett kluster genom samordning av olika noder. Vissa schemaläggare kräver till exempel att varje beräkningsnod registrerar sig mot scheduler-daemonen, vilket inte bara kräver att beräkningsnoderna är medvetna om huvudnodens adress, utan också kan identifiera att huvudnoden är helt förberedd och väntar om den inte är det.

Det här elementet i Tjänstidentifiering används också för server-klientrelationer i filsystemet och är en funktion i CycleCloud.

Mer läsning