CycleCloud-Cluster

In CycleCloud wird der Begriff Cluster verwendet, um eine Gruppe verbundener Computer (Knoten) zu beschreiben, die als einzelnes System zusammenarbeiten. Cluster können geschachtelt werden. Beispielsweise kann ein Computecluster, der aus einem Grid Engine-Scheduler-Hauptknoten und Computeknoten besteht, einen BeeGFS-Cluster einbinden, der aus mehreren Metadaten und Speicherservern besteht, wobei sowohl Compute- als auch Speichercluster unter einem einzelnen übergeordneten HPC-Cluster oder -System zusammengefasst werden.

Übersichtsdiagramm

Knoten und Knotenarrays

Cluster bestehen im Wesentlichen aus Knoten, von denen jeder eine bestimmte Rolle im HPC-System übernimmt. Die Begriffe Knoten und VM werden gelegentlich synonym verwendet, sind aber semantisch getrennt in CycleCloud. Knoten , die einen Cluster bilden, sind im Wesentlichen virtuelle Computer in Azure, die den Vorbereitungs- und Konfigurationsprozess abgeschlossen haben. Mit anderen Worten, VMs werden über die Azure-Infrastrukturdienstebenen bereitgestellt, und ihre Endzustände sind Knoten eines HPC-Clusters, nachdem Die Softwareinstallations- und Konfigurationsschritte durchlaufen haben.

Architekturdiagramm

Es gibt zwei separate Inkarnationen von Knoten in CycleCloud. Der erste als eigenständiger Knoten und der zweite als Nodearray, bei dem es sich um eine Sammlung identisch konfigurierter Knoten handelt (Die Unterscheidung zwischen Knoten und Knotenarray folgt der Analogie DevOps Pets vs Cattle im Geiste). Im Allgemeinen, aber nicht genau genommen, werden eigenständige Knoten aus einzelnen virtuellen Computern in Azure erstellt, während Nodearrays VM-Skalierungsgruppen (VMSS) zugeordnet werden.

Es gibt jedoch entscheidende Unterschiede zwischen Nodearrays und VM-Skalierungsgruppen, wobei die primäre ist, dass ein einzelnes Nodearray aus mehreren VM-Skalierungsgruppen bestehen kann. Dadurch kann ein einzelnes Nodearray von VMs unterschiedlicher Größe oder sogar von unterschiedlichen VM-Familien erstellt werden, wobei die einzige Einschränkung darin besteht, dass alle Knoten in einem Nodearray dieselbe Rolle im Cluster ausführen, z. B. die Bereitstellung von Ressourcen für eine einzelne Warteschlange eines Schedulers.

Clustervorlagen

Die Topologie oder die Organisation von Knoten in einem CycleCloud-Cluster werden in Textvorlagen definiert, die die Beziehungen zwischen den Knoten eines Clusters darstellen, und bei geschachtelten Clustern die beziehung zwischen übergeordneten und untergeordneten Clustern. Die Vorlagen bieten auch die Möglichkeit, die Rolle zu definieren, die die einzelnen Knoten spielen.

Clustervorlagen werden in einem INI-Format definiert. Abschnitte, die mit eckigen Klammern []abgegrenzt sind, werden verwendet, um Cluster, Knoten und Nodearrays zu definieren. Das grundlegende Element von INI-Dateien sind Schlüssel-Wert-Paarassertionen, die die Konfigurationsdetails jedes Abschnitts bereitstellen. Diese Konfigurationsdetails enthalten Kontextinformationen, die zum Erstellen der einzelnen Knoten eines Clusters verwendet werden, angefangen vom VM-Image, das zum Starten der VM verwendet wird, bis hin zu dem Subnetz, in dem die VM bereitgestellt werden soll. Weitere Informationen zu den CycleCloud-Clustervorlagen

Knotenvorbereitung und -konfiguration

CycleCloud stellt VMs aus basis-VM-Images bereit, die in der Clustervorlage definiert sind, und initialisiert und konfiguriert das Betriebssystem auf dem virtuellen Computer mithilfe einer Reihe von Schritten, die vom CycleCloud-Agent (Jetpack) während des Startvorgangs verwaltet werden, und konfiguriert das Betriebssystem auf dem virtuellen Computer, um es in einen funktionierenden HPC-Knoten zu konvertieren. Diese Schritte reichen von Skripts zum Installieren und Konfigurieren der Planungssoftware bis hin zur Konfiguration der letzten Meile zum Einbinden eines Dateisystems.

Knotenvorbereitungsdiagramm

Im Konfigurationsabschnitt jedes Knotens sind cluster-init-Spezifikationen definiert : Spezifikationen, die für jede startende VM bereitgestellt werden, die verwendet werden, um sie auf eine bestimmte Rolle im Cluster vorzubereiten. CycleCloud nutzt Chef als Plattform für die Infrastrukturautomatisierung zum Vorbereiten und Konfigurieren der einzelnen Knoten. Im Wesentlichen wird jede Cluster-Init-Spezifikation einer der weiteren Chefrollen und/oder Cookbook-Rezepte zugeordnet, die auf der startenden VM ausgeführt werden müssen.

CycleCloud verwendet Chef in einem eigenständigen Modus, der nicht auf einem zentralisierten Chef-Server basiert. Stattdessen wird der gesamte Satz von Chef Cookbooks, die zum Vorbereiten der einzelnen virtuellen Computer benötigt werden, während der VM-Startphase aus einem Azure Storage-Konto heruntergeladen, das dem Benutzer gehört. Diese Cookbooks werden während der Clustererstellungsphase vom CycleCloud-Anwendungsserver im Speicherkonto zwischengespeichert.

Nachdem diese Cookbooks heruntergeladen wurden, verarbeitet Chef die Liste der Rezepte, die in den Cluster-Init-Spezifikationen des Knotens definiert sind, und löst eine Vorbereitungs- und Konfigurationsphase aus, die den virtuellen Computer in einen funktionierenden HPC-Knoten konvertiert.

Spezifikationen werden als logische Sammlungen namens Projects erstellt. Ein Projekt für einen Batchplaner wie Slurm umfasst beispielsweise mindestens zwei Spezifikationen: eine für die Planerkopfknoten und die andere für die Computeknoten. Weitere Informationen zu den CycleCloud-Projekten

Knotenorchestrierung

Je nach Planer und Diensten, die in einem Cluster verwendet werden, muss CycleCloud manchmal die Vorbereitungsphase von Knoten in einem Cluster durch die Koordination verschiedener Knoten orchestrieren. Einige Scheduler erfordern beispielsweise, dass sich jeder Computeknoten beim Scheduler-Daemon registriert, was nicht nur erfordert, dass die Computeknoten die Adresse des Hauptknotens kennen, sondern auch erkennen können, dass der Hauptknoten vollständig vorbereitet ist, und warten, wenn dies nicht der Fall ist.

Dieses Element der Dienstermittlung wird auch für Dateisystem-Server-Client-Beziehungen verwendet und ist ein Feature in CycleCloud.

Weitere Informationen