Standalone-Instanzen als AWS PCS Login-Knoten verwenden - AWS PCS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Standalone-Instanzen als AWS PCS Login-Knoten verwenden

Sie können unabhängige EC2 Instanzen einrichten, um mit dem Slurm-Scheduler eines AWS PCS Clusters zu interagieren. Dies ist nützlich, um Anmeldeknoten, Workstations oder dedizierte Workflow-Management-Hosts zu erstellen, die mit AWS PCS Clustern funktionieren, aber außerhalb des Managements betrieben werden. AWS PCS Zu diesem Zweck muss jede eigenständige Instanz:

  1. Eine kompatible Slurm-Softwareversion installiert haben.

  2. In der Lage sein, eine Verbindung zum AWS PCS Slurmctld-Endpunkt des Clusters herzustellen.

  3. Sorgen Sie dafür, dass der Slurm Auth and Cred Kiosk Daemon (sackd) ordnungsgemäß mit dem Endpunkt und dem geheimen Schlüssel des Clusters konfiguriert ist. AWS PCS Weitere Informationen finden Sie unter sackd in der Slurm-Dokumentation.

Dieses Tutorial hilft Ihnen bei der Konfiguration einer unabhängigen Instanz, die eine Verbindung zu einem Cluster herstellt. AWS PCS

Schritt 1 — Rufen Sie die Adresse und das Geheimnis für den AWS PCS Zielcluster ab

Rufen Sie mithilfe des folgenden Befehls Details zum AWS PCS Zielcluster ab. AWS CLI Nehmen Sie vor der Ausführung des Befehls die folgenden Ersetzungen vor:

  • Ersetzen region-code mit dem AWS-Region Ort, an dem der Zielcluster ausgeführt wird.

  • Ersetzen cluster-ident mit dem Namen oder der Kennung für den Zielcluster

aws pcs get-cluster --region region-code --cluster-identifier cluster-ident

Der Befehl gibt eine Ausgabe zurück, die der in diesem Beispiel ähnelt.

{ "cluster": { "name": "get-started", "id": "pcs_123456abcd", "arn": "arn:aws:pcs:us-east-1:111122223333:cluster/pcs_123456abcd", "status": "ACTIVE", "createdAt": "2024-09-23T21:03:52+00:00", "modifiedAt": "2024-09-23T21:03:52+00:00", "scheduler": { "type": "SLURM", "version": "23.11" }, "size": "SMALL", "slurmConfiguration": { "authKey": { "secretArn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:pcs!slurm-secret-pcs_123456abcd-a12ABC", "secretVersion": "ef232370-d3e7-434c-9a87-ec35c1987f75" } }, "networking": { "subnetIds": [ "subnet-0123456789abcdef0" ], "securityGroupIds": [ "sg-0123456789abcdef0" ] }, "endpoints": [ { "type": "SLURMCTLD", "privateIpAddress": "10.3.149.220", "port": "6817" } ] } }

In diesem Beispiel hat der Cluster-Slurm-Controller-Endpunkt die IP-Adresse 10.3.149.220 und er läuft auf dem Port6817. Der secretArn wird in späteren Schritten verwendet, um das Clustergeheimnis abzurufen. Die IP-Adresse und der Port werden in späteren Schritten zur Konfiguration des sackd Dienstes verwendet.

Schritt 2 — Starten Sie eine EC2 Instanz

Starten Sie eine EC2-Instance wie folgt:
  1. Öffnen Sie die EC2Amazon-Konsole.

  2. Wählen Sie im Navigationsbereich Instances und dann Instances starten aus, um den Launch Instance Wizard zu öffnen.

  3. (Optional) Geben Sie im Abschnitt Name und Tags einen Namen für die Instance ein, z. PCS-LoginNode B. Der Name wird der Instance als Ressourcen-Tag (Name=PCS-LoginNode) zugewiesen.

  4. Wählen Sie im Abschnitt Anwendungs- und Betriebssystemimages eine AMI für eines der Betriebssysteme aus, die von unterstützt werden AWS PCS. Weitere Informationen finden Sie unter Unterstützte Betriebssysteme.

  5. Wählen Sie im Abschnitt Instanztyp einen unterstützten Instanztyp aus. Weitere Informationen finden Sie unter Unterstützte Instance-Typen.

  6. Wählen Sie im Abschnitt key pair das SSH Schlüsselpaar aus, das für die Instance verwendet werden soll.

  7. Gehen Sie im Abschnitt Netzwerkeinstellungen wie folgt vor:

    1. Wählen Sie Edit (Bearbeiten) aus.

      1. Wählen Sie den VPC Ihres AWS PCS Clusters aus.

      2. Wählen Sie für Firewall (Sicherheitsgruppen) die Option Bestehende Sicherheitsgruppe auswählen aus.

        1. Wählen Sie eine Sicherheitsgruppe aus, die den Datenverkehr zwischen der Instanz und dem Slurm-Controller des AWS PCS Zielclusters zulässt. Weitere Informationen finden Sie unter Anforderungen und Überlegungen zur Sicherheitsgruppe.

        2. (Optional) Wählen Sie eine Sicherheitsgruppe aus, die eingehenden SSH Zugriff auf Ihre Instance ermöglicht.

  8. Konfigurieren Sie im Bereich Speicher die Speichervolumes nach Bedarf. Stellen Sie sicher, dass ausreichend Speicherplatz für die Installation von Anwendungen und Bibliotheken konfiguriert ist, um Ihren Anwendungsfall zu unterstützen.

  9. Wählen Sie unter Erweitert eine IAM Rolle aus, die den Zugriff auf das Clustergeheimnis ermöglicht. Weitere Informationen finden Sie unter Holen Sie sich das Geheimnis des Slurm-Clusters.

  10. Wählen Sie im Übersichtsbereich die Option Launch instance aus.

Schritt 3 — Installieren Sie Slurm auf der Instanz

Wenn die Instanz gestartet wurde und aktiv wird, stellen Sie über Ihren bevorzugten Mechanismus eine Verbindung zu ihr her. Verwenden Sie das von bereitgestellte Slurm-Installationsprogramm AWS , um Slurm auf der Instanz zu installieren. Weitere Informationen finden Sie unter Slurm-Installationsprogramm.

Laden Sie das Slurm-Installationsprogramm herunter, dekomprimieren Sie es und verwenden Sie das installer.sh Skript, um Slurm zu installieren. Weitere Informationen finden Sie unter Schritt 3 — Installieren Sie Slurm.

Schritt 4 — Rufen Sie das Cluster-Geheimnis ab und speichern Sie es

Diese Anweisungen erfordern die AWS CLI. Weitere Informationen finden Sie unter Installation oder Aktualisierung auf die neueste Version von AWS CLI im AWS Command Line Interface Benutzerhandbuch für Version 2.

Speichern Sie das Clustergeheimnis mit den folgenden Befehlen.

  • Erstellen Sie das Konfigurationsverzeichnis für Slurm.

    sudo mkdir -p /etc/slurm
  • Rufen Sie das Clustergeheimnis ab, dekodieren Sie es und speichern Sie es. Bevor Sie diesen Befehl ausführen, ersetzen Sie region-code durch die Region, in der der Zielcluster ausgeführt wird, und ersetzen secret-arn mit dem in Schritt 1 secretArn abgerufenen Wert.

    sudo aws secretsmanager get-secret-value \ --region region-code \ --secret-id 'secret-arn' \ --version-stage AWSCURRENT \ --query 'SecretString' \ --output text | base64 -d > /etc/slurm/slurm.key
    Warnung

    In einer Mehrbenutzerumgebung kann möglicherweise jeder Benutzer mit Zugriff auf die Instanz das Clustergeheimnis abrufen, wenn er auf den Instanz-Metadatenservice () IMDS zugreifen kann. Dies wiederum könnte es ihnen ermöglichen, sich als andere Benutzer auszugeben. Erwägen Sie, den Zugriff nur auf Root- oder Administratorbenutzer IMDS zu beschränken. Erwägen Sie alternativ, einen anderen Mechanismus zu verwenden, der sich nicht auf das Instanzprofil stützt, um den geheimen Schlüssel abzurufen und zu konfigurieren.

  • Legen Sie den Besitz und die Berechtigungen für die Slurm-Schlüsseldatei fest.

    sudo chmod 0600 /etc/slurm/slurm.key sudo chown slurm:slurm /etc/slurm/slurm.key
    Anmerkung

    Der Slurm-Schlüssel muss dem Benutzer und der Gruppe gehören, unter denen der sackd Dienst ausgeführt wird.

Schritt 5 — Konfigurieren Sie die Verbindung zum Cluster AWS PCS

Gehen Sie wie folgt vor, um eine Verbindung zum AWS PCS Cluster herzustellen, indem Sie ihn sackd als Systemdienst starten.

  1. Richten Sie die Umgebungsdatei für den sackd Dienst mit dem folgenden Befehl ein. Bevor Sie den Befehl ausführen, ersetzen Sie ip-address and port mit den in Schritt 1 von den Endpunkten abgerufenen Werten.

    sudo echo "SACKD_OPTIONS='--conf-server=ip-address:port'" > /etc/sysconfig/sackd
  2. Erstellen Sie eine systemd Servicedatei für die Verwaltung des sackd Prozesses.

    sudo cat << EOF > /etc/systemd/system/sackd.service [Unit] Description=Slurm auth and cred kiosk daemon After=network-online.target remote-fs.target Wants=network-online.target ConditionPathExists=/etc/sysconfig/sackd [Service] Type=notify EnvironmentFile=/etc/sysconfig/sackd User=slurm Group=slurm RuntimeDirectory=slurm RuntimeDirectoryMode=0755 ExecStart=/opt/aws/pcs/scheduler/slurm-23.11/sbin/sackd --systemd \$SACKD_OPTIONS ExecReload=/bin/kill -HUP \$MAINPID KillMode=process LimitNOFILE=131072 LimitMEMLOCK=infinity LimitSTACK=infinity [Install] WantedBy=multi-user.target EOF
  3. Legen Sie den Besitz der sackd Servicedatei fest.

    sudo chown root:root /etc/systemd/system/sackd.service && \ sudo chmod 0644 /etc/systemd/system/sackd.service
  4. Aktivieren Sie den sackd Dienst.

    sudo systemctl daemon-reload && sudo systemctl enable sackd
  5. Starten Sie den Service sackd.

    sudo systemctl start sackd

Schritt 6 — (Optional) Testen Sie die Verbindung

Vergewissern Sie sich, dass der sackd Dienst ausgeführt wird. Beispiel für eine Ausgabe folgt. Wenn es Fehler gibt, werden sie normalerweise hier angezeigt.

[root@ip-10-3-27-112 ~]# systemctl status sackd [x] sackd.service - Slurm auth and cred kiosk daemon Loaded: loaded (/etc/systemd/system/sackd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-07-16 16:34:55 UTC; 8s ago Main PID: 9985 (sackd) CGroup: /system.slice/sackd.service └─9985 /opt/aws/pcs/scheduler/slurm-23.11/sbin/sackd --systemd --conf-server=10.3.149.220:6817 Jul 16 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Starting Slurm auth and cred kiosk daemon... Jul 16 16:34:55 ip-10-3-27-112.ec2.internal systemd[1]: Started Slurm auth and cred kiosk daemon. Jul 16 16:34:55 ip-10-3-27-112.ec2.internal sackd[9985]: sackd: running

Vergewissern Sie sich, dass die Verbindungen zum Cluster funktionieren, indem Sie Slurm-Client-Befehle wie sinfo und squeue verwenden. Hier ist ein Beispiel für die Ausgabe vonsinfo.

[root@ip-10-3-27-112 ~]# /opt/aws/pcs/scheduler/slurm-23.11/bin/sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST all up infinite 4 idle~ compute-[1-4]

Sie sollten auch in der Lage sein, Jobs einzureichen. Ein Befehl, der diesem Beispiel ähnelt, würde beispielsweise einen interaktiven Job auf einem Knoten im Cluster starten.

/opt/aws/pcs/scheduler/slurm-23.11/bin/srun --nodes=1 -p all --pty bash -i