Freigeben über


CycleCloud-Cluster

In CycleCloud beschreibt der Begriff Cluster eine Gruppe von verbundenen Computern (Knoten), die als ein einziges System zusammenarbeiten. Cluster können verschachtelt sein. Ein Computecluster, der aus einem Grid Engine-Scheduler-Hauptknoten und Serverknoten besteht, kann z. B. einen BeeGFS-Cluster mounten, der aus mehreren Metadaten- und Speicherservern besteht. Sowohl Compute- als auch Speichercluster werden unter einem einzigen übergeordneten HPC-Cluster oder -System zusammengeführt.

Übersichtsdiagramm

Knoten und Knotenarrays

Cluster bestehen im Wesentlichen aus Knoten, von denen jeder eine bestimmte Rolle im HPC-System spielt. Die Begriffe Knoten und VM werden gelegentlich synonym verwendet, sind aber in CycleCloud semantisch getrennt. Knoten, aus denen ein Cluster besteht, sind virtuelle Computer in Azure, die den Vorbereitungs- und Konfigurationsprozess ausführen. Mit anderen Worten: Sie erstellen VMs aus den Dienstebenen der Azure-Infrastruktur. Nachdem Sie die Software installiert und die Konfigurationsschritte abgeschlossen haben, sind die VMs dann Knoten eines HPC-Clusters.

Architekturdiagramm

CycleCloud verfügt über zwei Arten von Knoten: eigenständige Knoten und Knotenarrays. Ein Knotenarray ist eine Sammlung identisch konfigurierter Knoten. Die Unterscheidung zwischen Knoten und Knotenarrays folgt der DevOps-Analogie „Pets vs. Cattle“. Eigenständige Knoten werden aus einzelnen VMs in Azure erstellt. Knotenarrays werden VM-Skalierungsgruppen zugeordnet.

Es gibt jedoch entscheidende Unterschiede zwischen Knotenarrays und VM-Skalierungsgruppen. Ein einzelnes Knotenarray kann mehrere VM-Skalierungsgruppen umfassen. Diese Konfiguration ermöglicht die Erstellung eines einzelnen Knotenarrays aus VMs unterschiedlicher Größe oder sogar unterschiedlicher VM-Familien. Die einzige Einschränkung besteht darin, dass alle Knoten in einem Knotenarray die gleiche Rolle im Cluster ausführen. Beispielsweise stellen alle Knoten Ressourcen für eine einzelne Warteschlange eines Schedulers bereit.

Clustervorlagen

Diese definieren die Topologie oder die Organisation von Knoten in einem CycleCloud-Cluster in Textvorlagen. In den Vorlagen werden die Beziehungen zwischen Knoten eines Clusters dargestellt. Wenn verschachtelte Cluster vorhanden sind, definieren die Vorlagen die Beziehung zwischen über- und untergeordneten Clustern. In den Vorlagen wird auch die Rolle der einzelnen Knoten definiert.

Definieren Sie Clustervorlagen im INI-Format. Verwenden Sie Abschnitte, die durch eckige Klammern ([ und ]) gekennzeichnet sind, um Cluster, Knoten und Knotenarrays zu definieren. Die grundlegenden Elemente von INI-Dateien sind Schlüssel-Wert-Paar-Assertionen, die die Konfigurationsdetails der einzelnen Abschnitte bereitstellen. Diese Konfigurationsdetails enthalten Kontextinformationen zum Erstellen der einzelnen Knoten eines Clusters, z. B. das VM-Image zum Starten des virtuellen Computers und das Subnetz für den virtuellen Computer. Weitere Informationen finden Sie unter CycleCloud-Clustervorlagen.

Vorbereitung und Konfiguration des Knotens

CycleCloud stellt VMs aus Basis-VM-Images bereit, die in der Clustervorlage definiert sind. Durch eine Reihe von Schritten, die während des Startvorgangs vom CycleCloud-Agent (Jetpack) verwaltet werden, wird das Betriebssystem auf der VM initialisiert und konfiguriert, um es in einen funktionierenden HPC-Knoten zu konvertieren. Diese Schritte reichen von Skripten zum Installieren und Konfigurieren der Planungssoftware bis hin zur Konfiguration der „letzten Meile“ für das Mounten eines Dateisystems.

Diagramm zur Knotenvorbereitung

Sie können steuern, wie Knoten beim Start angepasst werden, indem Sie ein benutzerdefiniertes Clusterinit-Projekt erstellen. Ein Projekt enthält die Skripts und andere Dateien, die zum Anpassen eines Knotens erforderlich sind, getrennt in Spezifikationen für die verschiedenen Arten von Rollen in einem Cluster. Beispielsweise umfasst ein Projekt für einen Batchplaner wie Slurm mindestens drei Spezifikationen: eine für die Planerkopfknoten, eine für die Computeknoten und eine für die Anmeldeknoten. Weitere Informationen zu CycleCloud-Projekten.

In der Knotendefinition verweisen Sie auf die Spezifikationen, die auf diesem Knoten ausgeführt werden sollen. Jetpack verwendet diese Spezifikationen beim Start, um einen Knoten für seine Rolle im Cluster vorzubereiten. Die Spezifikationsdateien stammen vom Blob Storage-Account des Benutzers und werden vom CycleCloud-Anwendungsserver in den Storage-Account übertragen, bevor Knoten gestartet werden.

Hinweis

Die Spezifikationen für integrierte Vorlagen (z. B. den Slurm-Clustertyp) werden in GitHub gespeichert. CycleCloud lädt sie beim Start des Knotens automatisch in das Speicherkonto des Benutzers herunter.

Wenn ein Knoten gestartet wird, lädt Jetpack die Spezifikationen herunter, die für den Knoten im [[[cluster-init]]]-Abschnitt definiert wurden, und verarbeitet sie, um den Knoten in einen Arbeitszustand zu konvergieren (z. B. als Serverknoten).

Knotenorchestrierung

Abhängig vom Scheduler und den in einem Cluster verwendeten Diensten muss CycleCloud manchmal die Vorbereitungsphase von Knoten in einem Cluster orchestrieren, indem verschiedene Knoten koordiniert werden. Einige Scheduler verlangen beispielsweise, dass sich jeder Serverknoten beim Scheduler-Daemon registriert. Diese Anforderung bedeutet, dass die Serverknoten die Adresse des Hauptknotens kennen müssen. Die Serverknoten müssen auch erkennen, dass der Hauptknoten vollständig vorbereitet ist, und warten, wenn dies nicht der Fall ist.

CycleCloud verwendet dieses Element der Dienstermittlung für die Server-Client-Beziehungen im Dateisystem.

Mehr Informationen