Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'un cluster avec un EFA-enabled FSx Lustre
Dans ce didacticiel, vous allez créer un cluster qui utilise un système de fichiers EFA-enabled FSx Lustre comme stockage partagé. L'utilisation d'un système de fichiers FSx Lustre avec EFA activé peut augmenter les performances jusqu'à 8 fois. Pour vérifier si vous avez besoin d'un système de EFA-enabled fichiers, consultez la section Travailler avec des systèmes de EFA-enabled fichiers dans le guide de l'utilisateur de FSx for Lustre.
Lorsque vous les utilisez AWS ParallelCluster, vous ne payez que pour les AWS ressources créées lorsque vous créez ou mettez à jour AWS ParallelCluster des images et des clusters. Pour de plus amples informations, veuillez consulter AWS services utilisés par AWS ParallelCluster.
Prérequis
-
La AWS CLI est installée et configurée.
-
La ParallelCluster CLI est installée et configurée.
-
Une paire de clés Amazon EC2 pour se connecter au cluster.
-
Un rôle IAM doté des autorisations requises pour exécuter la ParallelCluster CLI.
Créer des groupes de sécurité
Créez deux groupes de sécurité dans le même VPC où le cluster et le système de fichiers seront déployés : un pour le client exécuté sur les nœuds du cluster et un pour le système de fichiers.
# 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-idvpc-cluster\ --regionregion# 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-idvpc-cluster\ --regionregion
Dans le reste du didacticiel, nous supposerons sg-client et sg-file-system sommes les identifiants des groupes de sécurité du client et du système de fichiers, respectivement.
Configurez le groupe de sécurité pour le client afin d'autoriser tout le inbound/outbound trafic à destination et en provenance du système de fichiers, comme l'exige EFA.
# Allow all inbound traffic from the file system to the client aws ec2 authorize-security-group-ingress \ --group-idsg-client\ --protocol -1 \ --port -1 \ --source-groupsg-file-system\ --regionregion# Allow all outbound traffic from the client to the file system aws ec2 authorize-security-group-egress \ --group-idsg-client\ --protocol -1 \ --port -1 \ --source-groupsg-file-system\ --regionregion
Configurez le groupe de sécurité du système de fichiers afin d'autoriser tout le inbound/outbound trafic interne et tout le trafic entrant en provenance du client, comme l'exige EFA.
# Allow all inbound traffic within this security group aws ec2 authorize-security-group-ingress \ --group-idsg-file-system\ --protocol -1 \ --port -1 \ --source-groupsg-file-system\ --regionregion# Allow all outbound traffic within this security group aws ec2 authorize-security-group-egress \ --group-idsg-file-system\ --protocol -1 \ --port -1 \ --source-groupsg-file-system\ --regionregion# Allow all inbound traffic from the client aws ec2 authorize-security-group-ingress \ --group-idsg-file-system\ --protocol -1 \ --port -1 \ --source-groupsg-client\ --regionregion# Allow all outbound traffic to the client aws ec2 authorize-security-group-egress \ --group-idsg-file-system\ --protocol -1 \ --port -1 \ --source-groupsg-client\ --regionregion
Création du système de fichiers
Créez le système de fichiers dans la même zone de disponibilité (AZ) où se trouveront les nœuds de calcul ; et remplacez-le par son ID dans le code suivant. Cela est nécessaire pour permettre à EFA de fonctionner avec votre système de fichiers. Notez que, dans le cadre de la création du système de fichiers, nous activons EFA à l'aide de cette EfaEnable propriété.subnet-compute-nodes
aws fsx create-file-system \ --file-system-type LUSTRE \ --storage-capacity 38400 \ --storage-type SSD \ --subnet-idssubnet-compute-nodes\ --security-group-idssg-file-system\ --lustre-configuration DeploymentType=PERSISTENT_2,PerUnitStorageThroughput=125,EfaEnabled=true,MetadataConfiguration={Mode=AUTOMATIC} \ --regionregion
Prenez note de l'identifiant du système de fichiers renvoyé par la commande précédente. Dans le reste du didacticiel, remplacez-le par cet identifiant de système de fichiers.fs-id
Créer le cluster
-
Créez le cluster avec les configurations suivantes définies dans le fichier de configuration AWS ParallelCluster YAML :
-
AMI basée sur un système d'exploitation compatible, tel qu'Ubuntu 22.04.
-
Les nœuds de calcul doivent utiliser un type d'instance compatible EFA doté de Nitro v4+, tel que g6.16xlarge.
-
Les nœuds de calcul doivent se trouver dans la même zone AZ que le système de fichiers.
-
Les nœuds de calcul doivent avoir Efa/Enabledla valeur true.
-
Les nœuds de calcul doivent configurer le client FSx Lustre pour utiliser EFA en suivant la procédure de configuration des clients EFA dans le guide de l'utilisateur de FSx for Lustre. Ce guide fournit le
configure-efa-fsx-lustre-clientpackage que vous pouvez télécharger, extraire et exécuter avecsetup.sh. Pour l'appliquer automatiquement sur chaque nœud de calcul, exécutez ces étapes à partir d'une action OnNodeStartpersonnalisée, comme indiqué ci-dessous. -
Créez le fichier
configure-efa-fsx-lustre-client-wrapper.shet chargez-le dans un bucket, par exempleyour-bucket, accessible depuis les nœuds de calcul. En suivant les étapes de la documentation FSx référencée ci-dessus, le wrapper exécute l'équivalent de :#!/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 cps3://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
-
-
-
Créez un fichier de configuration de cluster
config.yaml:Region:regionImage: Os: ubuntu2204 HeadNode: InstanceType: c5.xlarge Networking: SubnetId:subnet-xxxxxxxxxxAdditionalSecurityGroups: -sg-clientSsh: KeyName:my-ssh-keyScheduling: 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-clientPlacementGroup: Enabled: false Iam: S3Access: - BucketName:your-bucketCustomActions: OnNodeStart: # Point this at the wrapper script you created and hosted (see step above). Script:s3://your-bucket/configure-efa-fsx-lustre-client-wrapper.shSharedStorage: - MountDir: /fsx Name: my-fsxlustre-efa-external StorageType: FsxLustre FsxLustreSettings: FileSystemId:fs-idCréez ensuite un cluster à l'aide de cette configuration :
pcluster create-cluster \ --cluster-name fsx-efa-tutorial \ --cluster-configuration config.yaml \ --regionregion
Valider FSx avec EFA fonctionne
Pour vérifier que le trafic réseau Lustre utilise EFA, utilisez l'lnetctloutil Lustre qui peut afficher le trafic réseau pour une interface réseau donnée. Pour ce faire, exécutez les commandes suivantes dans un nœud de calcul :
# 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
Si la fonctionnalité fonctionne, le nombre de paquets passant par l'interface devrait augmenter.