RDMA-fähigen HPC-Slurm-Cluster mit H4D-Instanzen erstellen
Die H4D-Maschinenserie wurde speziell für die Anforderungen anspruchsvoller HPC-Arbeitslasten entwickelt. H4D bietet Instanzen mit verbesserter Arbeitslastskalierbarkeit durch RDMA-fähige 200‑Gbit/s-Netzwerke. Weitere Informationen zu computing-optimierten H4D-Maschinentypen auf Google Cloudfinden Sie unter H4D-Maschinenserie.
Anleitungsübersicht
In dieser Anleitung wird beschrieben, wie Sie einen HPC-optimierten Slurm-Cluster mit H4D-Maschinentypen mit RDMA einrichten. Dazu richten Sie einen Cluster mit Compute Engine-VMs ein, erstellen einen Cloud Storage-Bucket zum Speichern der erforderlichen Terraform-Module und richten eine Filestore-Instanz zum Bereitstellen Ihres Slurm-Clusters ein. Für die Schritte in dieser Anleitung gehen Sie so vor:
- Richten Sie Ihr Google Cloud -Projekt mit den erforderlichen Berechtigungen und Umgebungsvariablen ein.
- Richten Sie einen Cloud Storage-Bucket ein.
- Cluster Toolkit einrichten
- Wechseln Sie in das Cluster Toolkit-Verzeichnis.
- Erstellen Sie eine YAML-Datei für die Slurm-Bereitstellung.
- Stellen Sie einen Slurm-Cluster mithilfe eines Blueprints bereit.
- Stellen Sie eine Verbindung zum Slurm-Cluster her.
Hinweise
- Reservierten Kapazitätsblock für zwei H4D-Instanzen mit jeweils 192 vCPUs anfordern.
Prüfen Sie, ob Sie genügend Filestore-Kontingent haben, um den Slurm-Cluster bereitzustellen. Sie benötigen mindestens 5.120 GiB an zonaler Kapazität mit der Filestore-Dienstklasse „Basic SSD“.
Wenn Sie Ihr Filestore-Kontingent prüfen möchten, rufen Sie in der Google Cloud Console Kontingente und Systemlimits auf und filtern Sie die Tabelle so, dass nur Filestore-Ressourcen angezeigt werden.
- Eine detaillierte Anleitung zum Prüfen von Filestore-Kontingenten finden Sie unter API-spezifische Kontingente aufrufen.
- Wenn Sie nicht genügend Kontingent haben, fordern Sie eine Kontingenterhöhung an.
Die Abrechnung für Ihr Google Cloud Projekt muss aktiviert sein.
Aktivieren Sie die Compute Engine API, die Filestore API, die Cloud Storage API, die Service Usage API und die Cloud Resource Manager API:
Kosten
Die Kosten für die Ausführung dieser Anleitung variieren je nach Abschnitt, z. B. für die Einrichtung der Anleitung oder die Ausführung von Jobs. Sie können die Kosten mit dem Preisrechner berechnen.
Verwenden Sie die folgenden Spezifikationen, um die Kosten für die Einrichtung dieser Anleitung zu schätzen:
- Filestore-Kapazität (Basic SSD) pro Region:5.120 GiB.
- Nichtflüchtiger Standardspeicher:50 GB
pd-standard
für den Slurm-Anmeldeknoten. - Leistungsstarke (SSD) nichtflüchtige Speicher:50 GB
pd-ssd
für den Slurm-Controller. - VM-Instanz: Zwei H4D-Instanzen, die mit dem Maschinentyp
h4d-highmem-192
,h4d-standard-192
oderh4d-highmem-192-lssd
erstellt wurden. - Hyperdisk Balanced-Volumes: 50 GiB für jede H4D-Instanz.
Cloud Shell starten
In dieser Anleitung verwenden Sie Cloud Shell, eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloudgehostet werden.
Die Google Cloud CLI ist in Cloud Shell vorinstalliert. Die gcloud CLI bietet die primäre Befehlszeile für Google Cloud. Gehen Sie wie folgt vor, um Cloud Shell zu starten:
Rufen Sie die Google Cloud Console auf.
Klicken Sie in der oberen rechten Ecke der Console auf die Schaltfläche Cloud Shell aktivieren:
Eine Cloud Shell-Sitzung wird gestartet und eine Eingabeaufforderung wird angezeigt.
In dieser Shell führen Sie gcloud
- und Cluster Toolkit-Befehle aus.
Umgebungsvariablen festlegen
Legen Sie in Cloud Shell die folgenden Umgebungsvariablen fest, die Sie für den Rest der Anleitung verwenden. Mit diesen Umgebungsvariablen werden Platzhalterwerte für die folgenden Aufgaben festgelegt:
Konfiguriert Ihr Projekt mit den relevanten Werten für den Zugriff auf Ihre reservierten H4D-Instanzen.
Richtet einen Cloud Storage-Bucket zum Speichern von Cluster Toolkit-Modulen ein.
Variablen für die Reservierungskapazität
export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME export H4D_REGION=H4D_REGION export H4D_ZONE=H4D_ZONE export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME
Ersetzen Sie Folgendes:
H4D_RESERVATION_PROJECT_ID
: Google CloudProjekt-ID, für die der Reservierungsblock für den H4D-Maschinentyp gewährt wurde.H4D_RESERVATION_NAME
: Der Name Ihres VM-Reservierungsblocks, der sich in Ihrem Projekt befindet. Beispiel:h4d-highmem-exr
.H4D_DEPLOYMENT_NAME
: Ein eindeutiger Name für die Bereitstellung Ihres Slurm-Clusters. Beispiel:h4d-hpc-slurm-cluster-deployment
H4D_REGION
: Die Region, in der der reservierte Reservierungsblock für den H4D-Maschinentyp ausgeführt wird. Beispiel:us-central1
.H4D_ZONE
: Die Zone, die die reservierten Maschinen enthält. Dieser String muss sowohl die Region als auch die Zone enthalten. Beispiel:us-central1-a
.H4D_DEPLOYMENT_FILE_NAME
: Ein eindeutiger Name für die YAML-Datei des Slurm-Blueprints. Wenn Sie dieses Tutorial mehrmals durchlaufen, wählen Sie jedes Mal einen eindeutigen Bereitstellungsnamen.
Variablen für die Speicherkapazität
Erstellen Sie die Umgebungsvariablen für Ihren Cloud Storage-Bucket.
Cluster Toolkit verwendet Blueprints, um Cluster von VMs zu definieren und bereitzustellen. In einem Blueprint werden ein oder mehrere Terraform-Module zum Bereitstellen der Cloud-Infrastruktur definiert. In diesem Bucket werden diese Blueprints gespeichert.
export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION
Ersetzen Sie Folgendes:
GOOGLE_CLOUD_BUCKET_NAME
: Der Name, den Sie für Ihren Cloud Storage-Bucket verwenden möchten und der den Anforderungen für Bucket-Namen entspricht.GOOGLE_CLOUD_BUCKET_LOCATION
: Beliebige Google Cloud-Region, in der der Bucket gehostet werden soll. Beispiel:us-central1
Zum Projekt mit dem reservierten H4D-Kapazitätsblock wechseln
Führen Sie den folgenden Befehl aus, um sicherzugehen, dass Sie sich im Google Cloud-Projekt befinden, das den genehmigten Reservierungsblock für die H4D-Instanzen hat.
gcloud config set project ${H4D_RESERVATION_PROJECT_ID}
Cloud Storage-Bucket erstellen
Erstellen Sie den Bucket zum Speichern Ihrer Terraform-Module. Führen Sie in Cloud Shell mit Ihren Umgebungsvariablen den folgenden Befehl aus:
Als Best Practice für die Arbeit mit Terraform empfiehlt es sich, den Status remote in einer versionsfähigen Datei zu speichern. Auf Google Cloudkönnen Sie einen Cloud Storage-Bucket mit aktivierter Versionierung erstellen.
gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \ --project=${H4D_RESERVATION_PROJECT_ID} \ --default-storage-class=STANDARD \ --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \ --uniform-bucket-level-access gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning
Cluster Toolkit einrichten
Wenn Sie einen Slurm-Cluster in einem Google Cloud -Projekt erstellen möchten, können Sie das Cluster Toolkit verwenden, um den Cluster bereitzustellen und zu provisionieren. Cluster Toolkit ist eine Open-Source-Software von Google Cloud , mit der sich die Bereitstellung von Arbeitslasten inGoogle Cloudvereinfachen lässt.
Gehen Sie so vor, um Cluster Toolkit einzurichten.
GitHub-Repository für Cluster-Toolkit klonen
Klonen Sie in Cloud Shell das GitHub-Repository:
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
Rufen Sie das Haupt-Arbeitsverzeichnis auf:
cd cluster-toolkit/
Cluster-Toolkit-Binärprogramm erstellen
Erstellen Sie in Cloud Shell das Binärprogramm für das Cluster Toolkit aus der Quelle. Führen Sie dazu den folgenden Befehl aus:
make
Führen Sie den folgenden Befehl aus, um den Build zu prüfen:
Wenn Sie einen HPC-optimierten Slurm-Cluster bereitstellen möchten, der H4D-Instanzen verwendet, müssen Sie Version
v1.47.0
oder höher des Cluster Toolkits verwenden../gcluster --version
Nachdem Sie das Binärprogramm erstellt haben, können Sie Cluster bereitstellen, um Ihre Jobs oder Arbeitslasten auszuführen.
Bereitstellungsdatei erstellen
Erstellen Sie im Cluster Toolkit-Verzeichnis die YAML-Datei für die Slurm-Bereitstellung.
nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
Fügen Sie den folgenden Inhalt in die YAML-Datei ein.
--- terraform_backend_defaults: type: gcs configuration: bucket: GOOGLE_CLOUD_BUCKET_NAME vars: deployment_name: H4D_DEPLOYMENT_FILE_NAME project_id: H4D_RESERVATION_PROJECT_ID region: H4D_REGION zone: H4D_ZONE
Drücken Sie zum Speichern und Beenden der Datei Strg + O > Eingabetaste > Strg + X.
Slurm-Cluster bereitstellen
Führen Sie den folgenden Bereitstellungsbefehl aus, um den Slurm-Cluster bereitzustellen. Mit diesem Befehl wird der Slurm-Cluster mit dem H4D Cluster Toolkit-Blueprint bereitgestellt.
Starten Sie die Clustererstellung in Cloud Shell.
./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve
Mit dem Cluster verbinden
Stellen Sie nach der Bereitstellung eine Verbindung zur Google Cloud Console her, um Ihren Cluster aufzurufen.
Rufen Sie in derGoogle Cloud Console die Seite Compute Engine > VM-Instanzen auf.
Suchen Sie den Anmeldeknoten, der möglicherweise einen Namen wie
example-deployment-login-123
hat.Klicken Sie auf SSH, um eine Verbindung herzustellen.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Slurm-Cluster löschen
Wir empfehlen, Ressourcen zu bereinigen, wenn sie nicht mehr benötigt werden.
Löschschutz deaktivieren
Verwenden Sie einen Befehl ähnlich dem folgenden, um den Löschschutz beim Aktualisieren einer Instanz zu deaktivieren:
gcloud filestore instances update INSTANCE_NAME \
--no-deletion-protection
Ersetzen Sie:
INSTANCE_NAME
: der Name der Instanz, die Sie bearbeiten möchten. Beispiel:my-genomics-instance
.
Sie können INSTANCE_NAME
mit dem Befehl gcloud filestore instances list
abrufen. Mit diesem Befehl werden alle Filestore-Instanzen in Ihrem aktuellen Google Cloud -Projekt aufgelistet, einschließlich ihrer Namen, Standorte (Zonen), Stufen, Kapazität und Status.
Suchen Sie nach dem Ausführen des Befehls die Filestore-Instanz, die mit dem in dieser Anleitung verwendeten H4D-Maschinentyp übereinstimmt.
Slurm-Cluster löschen
Bevor Sie den Löschbefehl ausführen, wechseln Sie zum Stammverzeichnis des Cluster Toolkit-Verzeichnisses. Standardmäßig befindet sich DEPLOYMENT_FOLDER im Stammverzeichnis des Cluster Toolkit-Verzeichnisses.
Führen Sie den folgenden Befehl aus, um den Cluster zu löschen:
./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
Wenn das Löschen des Clusters abgeschlossen ist, wird eine Meldung wie die folgende angezeigt:
Destroy complete! Resources: xx destroyed.
Storage-Bucket löschen
Löschen Sie den Cloud Storage-Bucket, nachdem Sie sich vergewissert haben, dass der vorherige Befehl ohne Fehler beendet wurde:
gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}
Fehlerbehebung
Fehler: Cloud Shell kann den Cluster nicht bereitstellen, da kein Speicherplatz mehr vorhanden ist.
Dieser Fehler kann auftreten, wenn Sie Cloud Shell häufig verwenden und der Speicherplatz nicht mehr ausreicht.
Informationen zur Behebung dieses Problems finden Sie unter Cloud Shell deaktivieren oder zurücksetzen.
Fehler: Der Cluster- oder Blueprint-Name ist bereits vorhanden.
Dieser Fehler kann auftreten, wenn Sie ein Projekt verwenden, in dem die in dieser Anleitung verwendeten Dateinamen bereits verwendet wurden. Das ist beispielsweise der Fall, wenn eine andere Person in Ihrer Organisation dieses Tutorial vollständig durchlaufen hat.
Um dieses Problem zu beheben, führen Sie das Tutorial noch einmal durch und wählen Sie einen eindeutigen Namen für die Bereitstellungsdatei aus. Führen Sie dann den Befehl zum Bereitstellen des Slurm-Clusters mit der neuen Bereitstellungsdatei noch einmal aus.
Nächste Schritte
- Erweiterte Slurm-Aufgaben:
- So verwalten Sie Hostereignisse:
- VM-Topologie ansehen
- VMs in Ihrem Slurm-Cluster überwachen
- Fehlerhaften Host melden