CycleCloud-clusters

In CycleCloud wordt de term cluster gebruikt om een groep verbonden computers (knooppunten) te beschrijven die samenwerken als één systeem. Clusters kunnen worden genest; Een rekencluster dat bestaat uit een grid engine scheduler-hoofdknooppunt en rekenknooppunten kan bijvoorbeeld een BeeGFS-cluster koppelen dat bestaat uit verschillende metagegevens- en opslagservers, waarbij reken- en opslagclusters zich samenvoegen onder één bovenliggend HPC-cluster of -systeem.

Overzichtsdiagram

Knooppunten en knooppuntmatrices

Clusters bestaan in principe uit knooppunten, die elk een specifieke rol in het HPC-systeem uitvoeren. De termen knooppunt en VM worden af en toe door elkaar gebruikt, maar zijn semantisch gescheiden in CycleCloud. Knooppunten waaruit een cluster bestaat, zijn in feite virtuele machines in Azure die het voorbereidings- en configuratieproces hebben voltooid. Met andere woorden, VM's worden ingericht vanuit de servicelagen van de Azure-infrastructuur en hun eindstatussen zijn knooppunten van een HPC-cluster nadat ze software-installatie- en configuratiestappen hebben doorlopen.

Architectuurdiagram

Er zijn twee afzonderlijke incarnaties van knooppunten in CycleCloud. De eerste als een zelfstandig knooppunt en de tweede als een knooppuntmaarray, een verzameling identiek geconfigureerde knooppunten (het onderscheid tussen knooppunten en nodearray volgt de DevOps Pets vs Cattle-analogie in de geest). In grote lijnen, maar niet strikt genomen, worden zelfstandige knooppunten samengesteld op basis van enkele VM's in Azure, terwijl knooppuntarrays worden toegewezen aan virtuele-machineschaalsets (VMSS).

Er zijn echter cruciale verschillen tussen knooppuntmaarrays en VM-schaalsets. De primaire is dat één knooppuntmaarray uit meerdere VM-schaalsets kan bestaan. Hierdoor kan één knooppuntmaarray worden gebouwd op basis van VM's met verschillende grootten, of zelfs verschillende VM-families, met als enige beperking dat alle knooppunten in een knooppuntarray dezelfde rol in het cluster uitvoeren, bijvoorbeeld door resources te leveren aan één wachtrij van een planner.

Clustersjablonen

De topologie, of hoe knooppunten worden georganiseerd in een CycleCloud-cluster, worden gedefinieerd in tekstsjablonen die de relaties tussen knooppunten van een cluster en in het geval van geneste clusters de bovenliggende en onderliggende relatie van clusters indeelt. De sjablonen bieden ook de middelen voor het definiëren van de rol die elk knooppunt speelt.

Clustersjablonen worden gedefinieerd in een INI-indeling. Secties, afgebakend met vierkante haken [,] worden gebruikt voor het definiëren van clusters, knooppunten en knooppuntarrays. Het basiselement van INI-bestanden zijn asserties van sleutel-waardeparen die de configuratiedetails van elke sectie bieden. Deze configuratiedetails bevatten contextuele informatie die wordt gebruikt om elk knooppunt van een cluster te maken, van de installatiekopie van de virtuele machine die wordt gebruikt om de VM op te starten tot het subnet waarin de VM moet worden ingericht. Meer informatie over de CycleCloud-clustersjablonen

Knooppuntvoorbereiding en -configuratie

CycleCloud richt VM's in op basis-VM-installatiekopieën die zijn gedefinieerd in de clustersjabloon en via een reeks stappen die tijdens het opstartproces worden beheerd door de CycleCloud-agent (Jetpack), wordt het besturingssysteem op de VM geïnitialiseerd en geconfigureerd om het te converteren naar een werkend HPC-knooppunt. Deze stappen variëren van scripts voor het installeren en configureren van de planningssoftware tot de laatste-mijlconfiguratie voor het koppelen van een bestandssysteem.

Knooppuntvoorbereidingsdiagram

Gedefinieerd in de configuratiesectie van elk knooppunt zijn cluster-init-specificaties : specificaties die worden geleverd aan elke opstart-VM die wordt gebruikt om deze voor te bereiden op een specifieke rol in het cluster. CycleCloud maakt gebruik van Chef als het automatiseringsplatform voor de infrastructuur voor het voorbereiden en configureren van elk knooppunt. In wezen wordt elke cluster-init-specificatie toegewezen aan een van meer chef-rollen en/of kookboekrecepten die moeten worden uitgevoerd op de opstart-VM.

CycleCloud maakt gebruik van Chef in een zelfstandige modus die niet afhankelijk is van een gecentraliseerde Chef-server. In plaats daarvan wordt de volledige set Chef Cookbooks die nodig zijn om elke VM voor te bereiden, gedownload van een Azure Storage-account dat van de gebruiker is tijdens de opstartfase van de VM. Deze set cookbooks wordt opgeslagen in de cache van de CycleCloud-toepassingsserver in het opslagaccount tijdens de fase van het maken van het cluster.

Nadat deze cookbooks zijn gedownload, verwerkt Chef de lijst met recepten die zijn gedefinieerd in de cluster-init-specificaties van het knooppunt, waardoor een voorbereidings- en configuratiefase wordt geactiveerd die de VM converteert naar een werkend HPC-knooppunt.

Specificaties worden geschreven als logische verzamelingen met de naam Projecten. Een project voor een batchplanner zoals Slurm bestaat bijvoorbeeld uit minimaal twee specificaties: een voor de hoofdknooppunten van de scheduler en de andere voor de rekenknooppunten. Lees meer over de CycleCloud-projecten

Indeling van knooppunt

Afhankelijk van de scheduler en services die in een cluster worden gebruikt, moet CycleCloud soms de voorbereidingsfase van knooppunten in een cluster organiseren via de coördinatie van verschillende knooppunten. Sommige planners vereisen bijvoorbeeld dat elk rekenknooppunt zichzelf registreert op basis van de scheduler-daemon, waardoor de rekenknooppunten niet alleen op de hoogte moeten zijn van het adres van het hoofdknooppunt, maar ook kunnen herkennen dat het hoofdknooppunt volledig is voorbereid en wachten als dat niet zo is.

Dit element van servicedetectie wordt ook gebruikt voor server-clientrelaties van het bestandssysteem en is een functie in CycleCloud.

Meer informatie