Beschreiben von Azure CycleCloud-Clustervorlagen
Azure CycleCloud bietet vorlagenbasierte Bereitstellung von HPC-Clustern. Standardmäßig enthält die Azure CycleCloud-Anwendung mehrere integrierte Vorlagen für die Bereitstellung der am häufigsten verwendeten Clusterplaner, darunter Slurm, PBSPro, LSF, Grid Engine und HT-Condor. Azure CycleCloud GitHub-Repositorys bieten viele planerspezifische Projekte, die Sie in Ihre Azure CycleCloud-Instanz anpassen und importieren können. Zudem haben Sie die Möglichkeit, die vorlagenbasierte Bereitstellung für Ihre eigenen, selbstentwickelten Planer mithilfe von CycleCloud-Plug-Ins für die automatische Skalierung zu implementieren.
Vorlagen erleichtern die Implementierung einer breiten Palette von Azure CycleCloud-Features, einschließlich Unterstützung für benutzerdefinierte VM-Images, Autoskalierung und Spot-VMs. Sie minimieren außerdem den Aufwand, der mit der Bereitstellung verbunden ist, und die Verwaltung mehrerer Bereitstellungen identisch konfigurierter Cluster, die häufig verwendet werden, um die Produktions-, Entwicklungs- und Testumgebungen zu isolieren.
Diese Vorteile stimmen mit Ihren Zielen für die Implementierung eines neuen Azure-residenten Clusters für Contoso überein. Um den Umfang dieser Vorteile zu optimieren, entscheiden Sie sich, mehr über das Format und den Prozess der Implementierung von Azure CycleCloud-Vorlagen zu erfahren.
Was ist das Format von Azure CycleCloud-Vorlagen?
Vorlagen sind INI-formatierte Dateien, die die deklarative Syntax verwenden, um die Struktur und Konfiguration eines CycleCloud-Clusters zu beschreiben, einschließlich Clusterknotenrollen und deren jeweiligen Beziehungen. Vorlagen bestehen aus benannten Abschnitten mit Kopfzeilen, die von einem oder mehreren Paaren eckiger Klammern festgelegt sind. Die Abschnitte bilden eine Hierarchie, die der Hierarchie von Clusterobjekten und den entsprechenden Parametern entspricht. Die Anzahl der eckigen Klammern stellt eine Leiste innerhalb dieser Hierarchie dar, die mit jeder Ebene sequenziell erhöht wird.
[cluster]
[[node, nodearray]]
[[[volume]]]
[[[network-interface]]]
[[[cluster-init]]]
[[[input-endpoint]]]
[[[configuration]]]
[environment]
[noderef]
[parameters]
[[parameters]]
[[[parameter]]]
Effektiv kann der [cluster] Abschnitt einen oder mehrere [[node]] Abschnitte enthalten, die mehrere [[[volume]]] Abschnitte enthalten können. Ebenso können Sie innerhalb derselben Vorlage innerhalb des [cluster] Abschnitts einen oder [[nodearray]] mehrere Abschnitte definieren, die jeweils über einen eigenen Abschnitt [[[configuration]]]verfügen.
Hinweis
Die Reihenfolge der Abschnitte innerhalb derselben Ebene ist beliebig.
Was sind die Hauptabschnitte einer Vorlage?
Eine Vorlage besteht aus den folgenden Hauptabschnitten:
- Cluster: Der
[cluster]Abschnitt enthält eine Definition eines Azure CycleCloud-Clusterobjekts. Eine Vorlage muss mindestens einen[cluster]Abschnitt enthalten, der einen oder mehrere[[node]]und[[nodearray]]Abschnitte enthält, die untergeordnete Objekte dieses Clusters beschreiben. - Node: Dies stellt eine einzelne, von der Plattform bereitgestellte VM dar.
- Nodearray: Dies stellt einen oder mehrere Skalierungssätze für virtuelle Azure-Computer dar.
Hinweis
Cluster umfassen Knoten, die ihre festgelegten Rollen bei der Verarbeitung gruppierter Workloads erfüllen. Aus Der Sicht der Implementierung basiert Azure CycleCloud auf Azure Resource Manager, um sie entweder als einzelne Azure-VMs oder als Mitglieder einer VM-Skalierungsgruppe bereitzustellen. Letzteres stellt eine Sammlung identisch konfigurierter VMs dar, die im Gegensatz zu Azure-VMs die horizontale Automatische Skalierung unterstützen. Azure CycleCloud verwendet Skalierungsgruppen für virtuelle Computer, um Knotenarrays zu implementieren. [[node]] Der Abschnitt beschreibt effektiv die Eigenschaften der zugrunde liegenden, plattformbasierten VMs, die eine eigenständige Azure-VM sein können oder zu einem Skalierungssatz für virtuelle Azure-Computer gehören können. Im [[nodearray]] Abschnitt wird ein Skalierungssatz für virtuelle Azure-Computer beschrieben.
Hinweis
Ein Knotenarray kann aus mehreren Skalierungssätzen für virtuelle Azure-Computer bestehen, wobei jeder von ihnen unterschiedliche konfigurierte VMs umfasst. Alle Knoten in einem Knotenarray führen jedoch dieselbe Rolle im Cluster aus, z. B. das Bereitstellen von Ressourcen für eine einzelne Warteschlange des Clusterplanrs.
- Das Volume definiert einen von Azure verwalteten Datenträger, der an einzelne Clusterknoten oder Knoten angefügt werden soll, die ein Knotenarray bilden. Dies ist ein untergeordnetes Objekt eines node- oder nodearray-Objekts.
- Die Netzwerkschnittstelle definiert eine Azure-Netzwerkschnittstelle , die an einzelne Clusterknoten oder Knoten angefügt werden soll, die ein Knotenarray bilden. Dies ist ein untergeordnetes Objekt eines node- oder nodearray-Objekts.
- Die Konfiguration definiert die konfigurierbaren Eigenschaften eines Knotens oder Knotenarrays. Dies ist ein untergeordnetes Objekt eines node- oder nodearray-Objekts.
- Cluster-init definiert die Azure CycleCloud-Projektspezifikationen, die auf einen Clusterknoten angewendet werden sollen. Ein Projekt ist eine Sammlung von Ressourcen, die Knotenkonfigurationen in Form von Projektspezifikationen definieren. Wenn ein Knoten gestartet wird, wird er automatisch konfiguriert, indem diese Spezifikationen verarbeitet werden. Cluster-init ist ein untergeordnetes Objekt eines Knotens oder eines Nodearray-Objekts.
- Die Umgebung definiert eine Azure Resource Manager-Bereitstellung, mit der Azure-Ressourcen bereitgestellt oder geändert werden, die vom Cluster verwendet werden. Es handelt sich um ein optionales Objekt auf oberster Ebene.
- Noderef verweist auf einen Knoten innerhalb der Vorlage, um Ressourcenabhängigkeiten auszudrücken. Es handelt sich um ein optionales Objekt auf oberster Ebene.
- Mithilfe von Parametern können Sie eine Vorlage portierbar machen, sodass Sie sie für die Bereitstellung mehrerer Cluster mit übereinstimmenden Objekthierarchien, aber unterschiedlichen Konfigurationseinstellungen verwenden können. Es handelt sich um ein optionales Objekt auf oberster Ebene, Sie haben jedoch die Möglichkeit, eine hierarchie mit geschachtelten Parametern zu erstellen. Für jeden Parameter können Sie den Standardwert definieren. Mithilfe von Parametern können Sie auch konfigurierbare Variablen in einem Cluster über die CycleCloud-Webschnittstelle verfügbar machen.
Jeder Abschnitt enthält mehrere Schlüsselwertpaare, die Konfigurationsdetails zum entsprechenden Objekt bereitstellen, dargestellt durch den Abschnittsheader. Beispielsweise können solche Details für ein Knotenarray den ImageName Schlüssel mit dem Wert enthalten, der das Azure-VM-Image bestimmt, das für seine Knoten verwendet werden soll, oder den Azure.MaxScalesetSize Schlüssel, der die maximale zulässige Größe des virtuellen Maschinen-Skalierungssets als Wert angibt. Ebenso können die Abschnitte „node“ oder „nodearray“ einen oder mehrere [[[configuration]]]-Abschnitte enthalten.
Wie kann ein Cluster basierend auf einer Vorlage bereitgestellt werden?
Nachdem Sie die Vorlage identifiziert haben, die Sie für die Bereitstellung eines Azure CycleCloud-Clusters verwenden möchten, können Sie eine der folgenden Implementierungsmethoden anwenden:
- Verwenden Sie Azure CycleCloud CLI, um die Vorlage in Ihre Azure CycleCloud-Anwendung zu importieren, und verwenden Sie dann die grafische Benutzeroberfläche der Anwendung, um den Cluster bereitzustellen. Um den Import auszulösen, führen Sie den
cyclecloud import_template -f <template_file>Befehl aus (wobei der<template_file>Platzhalter den Namen der Datei darstellt, die die Vorlage enthält). Wenn die Vorlage mehrere Clusterdefinitionen enthält, geben Sie den Namen des Clusters an, den Sie importieren möchten, indem Sie ihn als Wert des-cParameters referenzieren. - Verwenden Sie Azure CycleCloud CLI, um die Vorlage in Ihre Azure CycleCloud-Anwendung zu importieren und dann den Cluster bereitzustellen. Um den Import auszulösen, führen Sie den
cyclecloud import_template -t -f <template_file>Befehl aus (wobei der<template_file>Platzhalter den Namen der Datei darstellt, die die Vorlage enthält). Führen Sie nach Abschluss des Imports dencyclecloud create_clusterBefehl aus. Wenn Sie beispielsweise einen Cluster mit dem Namenlab-clusteraus einer importierten Vorlage mit dem Namenlab-templateerstellen möchten, führen Siecyclecloud create_cluster lab-template lab-clusteraus. - Verwenden Sie Azure CycleCloud CLI, um den Cluster bereitzustellen, ohne die Vorlage explizit zu importieren. Führen Sie den Befehl aus, um den
cyclecloud import_clusterImport auszulösen.
Unabhängig von der gewählten Methode müssen Sie werte aller erforderlichen Parameter während der Clusterbereitstellung bereitstellen. Wenn Sie Azure CycleCloud CLI verwenden, können Sie diese bereitstellen, indem Sie auf eine JSON-formatierte Parameterdatei verweisen.
Hinweis
Die Datei besteht aus Schlüssel-Wert-Paaren, wobei der Schlüssel den Parameternamen darstellt. Um das Format für einen vorhandenen Cluster zu überprüfen, verwenden Sie den cyclecloud export_parameters <cluster_name> > params.json Befehl, wobei der <cluster_name> Platzhalter den Namen des vorhandenen Clusters darstellt.
Hinweis
Bevor Sie einen Cluster basierend auf einer importierten Vorlage bereitstellen, müssen Sie auch den Inhalt des entsprechenden Projekts in ein Azure CycleCloud-Schließfach hochladen. Um einen Upload durchzuführen, verwenden Sie den Azure CycleCloud-CLI-Befehl cyclecloud project upload <locker_name>. Hierbei steht der Platzhalter <locker_name> für den Namen des Schließfachs. Führen Sie den Azure CycleCloud-CLI-Befehl cyclecloud locker list aus, um verfügbare Schließfächer aufzulisten. Auf den Namen des Schließfachs wird im Abschnitt [[[cluster-init]]] verwiesen.
Hinweis
Einer der Schritte beim Einrichten einer Azure CycleCloud-Installation ist die Erstellung eines BLOB-Containers in einem Azure Storage-Konto. Dieser Container dient als Schließfach, das der CycleCloud-Server zum Aufstufen von CycleCloud-Projekten für Clusterknoten verwendet. Anschließend werden Knoten der Azure CycleCloud-verwalteten Cluster so konfiguriert, dass CycleCloud-Projekte aus diesem Locker als Teil ihres Startprozesses heruntergeladen werden.