View a markdown version of this page

Einen Cluster mit einem EFA-enabled FSx Lustre erstellen - AWS ParallelCluster

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.

Einen Cluster mit einem EFA-enabled FSx Lustre erstellen

In diesem Tutorial erstellen Sie einen Cluster, der ein EFA-enabled FSx Lustre-Dateisystem als gemeinsam genutzten Speicher verwendet. Die Verwendung eines FSx Lustre-Dateisystems mit aktiviertem EFA kann die Leistung um das bis zu 8-fache steigern. Um zu überprüfen, ob Sie ein EFA-enabled Dateisystem benötigen, schauen Sie sich den Abschnitt Arbeiten mit EFA-enabled Dateisystemen im FSx for Lustre-Benutzerhandbuch an.

Bei der Nutzung AWS ParallelCluster zahlen Sie nur für die AWS Ressourcen, die beim Erstellen oder Aktualisieren von AWS ParallelCluster Images und Clustern entstehen. Weitere Informationen finden Sie unter AWS Dienste verwendet von AWS ParallelCluster.

Voraussetzungen

Erstellen von Sicherheitsgruppen

Erstellen Sie zwei Sicherheitsgruppen in derselben VPC, in der der Cluster und das Dateisystem bereitgestellt werden: eine für den Client, der auf Clusterknoten ausgeführt wird, und eine für das Dateisystem.

# Create security group for the FSx client aws ec2 create-security-group \ --group-name Fsx-Client-SecurityGroup \ --description "Allow traffic for the FSx Lustre client" \ --vpc-id vpc-cluster \ --region region # Create security group for the FSx file system aws ec2 create-security-group \ --group-name Fsx-FileSystem-SecurityGroup \ --description "Allow traffic for the FSx Lustre File System" \ --vpc-id vpc-cluster \ --region region

Im weiteren Verlauf des Tutorials gehen sg-client wir von den Sicherheitsgruppen-IDs des Clients bzw. des Dateisystems aus. sg-file-system

Konfigurieren Sie die Sicherheitsgruppe für den Client so, dass der gesamte inbound/outbound Datenverkehr zum und vom Dateisystem zugelassen wird, wie von EFA gefordert.

# Allow all inbound traffic from the file system to the client aws ec2 authorize-security-group-ingress \ --group-id sg-client \ --protocol -1 \ --port -1 \ --source-group sg-file-system \ --region region # Allow all outbound traffic from the client to the file system aws ec2 authorize-security-group-egress \ --group-id sg-client \ --protocol -1 \ --port -1 \ --source-group sg-file-system \ --region region

Konfigurieren Sie die Sicherheitsgruppe für das Dateisystem so, dass der gesamte inbound/outbound Datenverkehr innerhalb des Dateisystems und der gesamte eingehende Datenverkehr vom Client zugelassen werden, wie von EFA gefordert.

# Allow all inbound traffic within this security group aws ec2 authorize-security-group-ingress \ --group-id sg-file-system \ --protocol -1 \ --port -1 \ --source-group sg-file-system \ --region region # Allow all outbound traffic within this security group aws ec2 authorize-security-group-egress \ --group-id sg-file-system \ --protocol -1 \ --port -1 \ --source-group sg-file-system \ --region region # Allow all inbound traffic from the client aws ec2 authorize-security-group-ingress \ --group-id sg-file-system \ --protocol -1 \ --port -1 \ --source-group sg-client \ --region region # Allow all outbound traffic to the client aws ec2 authorize-security-group-egress \ --group-id sg-file-system \ --protocol -1 \ --port -1 \ --source-group sg-client \ --region region

Erstellen Sie das Dateisystem

Erstellen Sie das Dateisystem in derselben Availability Zone (AZ), in der sich die Rechenknoten befinden werden, und subnet-compute-nodes ersetzen Sie es im folgenden Code durch seine ID. Dies ist erforderlich, damit EFA mit Ihrem Dateisystem arbeiten kann. Beachten Sie, dass wir EFA im Rahmen der Erstellung des Dateisystems mithilfe der EfaEnable Eigenschaft aktivieren.

aws fsx create-file-system \ --file-system-type LUSTRE \ --storage-capacity 38400 \ --storage-type SSD \ --subnet-ids subnet-compute-nodes \ --security-group-ids sg-file-system \ --lustre-configuration DeploymentType=PERSISTENT_2,PerUnitStorageThroughput=125,EfaEnabled=true,MetadataConfiguration={Mode=AUTOMATIC} \ --region region

Notieren Sie sich die Dateisystem-ID, die vom vorherigen Befehl zurückgegeben wurde. Ersetzen Sie diese Datei im Rest des Tutorials fs-id durch diese Dateisystem-ID.

Den Cluster erstellen

  1. Erstellen Sie den Cluster mit den folgenden Konfigurationen, die in der AWS ParallelCluster YAML-Konfigurationsdatei festgelegt sind:

    1. AMI basiert auf einem unterstützten Betriebssystem wie Ubuntu 22.04.

    2. Rechenknoten müssen einen von EFA unterstützten Instance-Typ mit Nitro v4+ verwenden, z. B. g6.16xlarge.

      • Rechenknoten müssen sich in derselben AZ befinden, in der sich das Dateisystem befindet.

      • Rechenknoten müssen auf true Efa/Enabledgesetzt sein.

      • Rechenknoten müssen den FSx Lustre-Client für die Verwendung von EFA konfigurieren, indem sie den Abschnitt Konfiguration von EFA-Clients im FSx for Lustre-Benutzerhandbuch befolgen. Dieses Handbuch enthält das configure-efa-fsx-lustre-client Paket, das Sie herunterladen, extrahieren und mit dem Sie es ausführen können. setup.sh Um es automatisch auf jeden Rechenknoten anzuwenden, führen Sie diese Schritte von einer OnNodeStartbenutzerdefinierten Aktion aus, wie unten gezeigt.

      • Erstellen Sie die Datei configure-efa-fsx-lustre-client-wrapper.sh und laden Sie sie beispielsweise in einen Bucket hochyour-bucket, der von den Rechenknoten aus erreichbar ist. Folgt man den Schritten in der FSx-Dokumentation, auf die oben verwiesen wurde, führt der Wrapper das Äquivalent von:

        #!/bin/bash set -euo pipefail # Download the FSx Lustre EFA client configuration package. # See: https://docs.aws.amazon.com/fsx/latest/LustreGuide/configure-efa-clients.html # Replace the source below with a location reachable from your compute nodes # (for example, your own S3 bucket populated from the FSx documentation package). cd /tmp aws s3 cp s3://your-bucket/configure-efa-fsx-lustre-client.zip . unzip -o configure-efa-fsx-lustre-client.zip cd configure-efa-fsx-lustre-client # Configure the FSx Lustre client to use EFA. ./setup.sh
  2. Erstellen Sie eine Cluster-Konfigurationsdatei: config.yaml

    Region: region Image: Os: ubuntu2204 HeadNode: InstanceType: c5.xlarge Networking: SubnetId: subnet-xxxxxxxxxx AdditionalSecurityGroups: - sg-client Ssh: KeyName: my-ssh-key Scheduling: Scheduler: slurm SlurmQueues: - Name: q1 ComputeResources: - Name: cr1 Instances: - InstanceType: g6.16xlarge MinCount: 1 MaxCount: 3 Efa: Enabled: true Networking: SubnetIds: - subnet-xxxxxxxxxx # Subnet in the same AZ where the file system is AdditionalSecurityGroups: - sg-client PlacementGroup: Enabled: false Iam: S3Access: - BucketName: your-bucket CustomActions: OnNodeStart: # Point this at the wrapper script you created and hosted (see step above). Script: s3://your-bucket/configure-efa-fsx-lustre-client-wrapper.sh SharedStorage: - MountDir: /fsx Name: my-fsxlustre-efa-external StorageType: FsxLustre FsxLustreSettings: FileSystemId: fs-id

    Erstellen Sie dann einen Cluster mit dieser Konfiguration:

    pcluster create-cluster \ --cluster-name fsx-efa-tutorial \ --cluster-configuration config.yaml \ --region region

Validieren Sie, dass FSx mit EFA funktioniert

Um zu überprüfen, ob der Lustre-Netzwerkverkehr EFA verwendet, verwenden Sie das lnetctl Lustre-Tool, das den Netzwerkverkehr für eine bestimmte Netzwerkschnittstelle anzeigen kann. Führen Sie zu diesem Zweck die folgenden Befehle in einem Rechenknoten aus:

# Take note of the number of packets flowing through the interface, # which are specified in statistics:send_count and statistics:recv_count sudo lnetctl net show --net efa -v # Generate traffic to the file system echo 'Hello World' > /fsx/hello-world.txt # Take note of the number of packets flowing through the interface, # which are specified in statistics:send_count and statistics:recv_count sudo lnetctl net show --net efa -v

Wenn die Funktion funktioniert, wird die Anzahl der Pakete, die über die Schnittstelle fließen, voraussichtlich zunehmen.