

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
<a name="tutorial-efa-enabled-fsx-lustre"></a>

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](https://docs.aws.amazon.com/fsx/latest/LustreGuide/efa-file-systems.html) 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](aws-services-v3.md).

## Prérequis
<a name="tutorial-efa-enabled-fsx-lustre-requirements"></a>
+ La AWS CLI est [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ La ParallelCluster CLI est [installée et configurée](install-v3-parallelcluster.md).
+ Une [paire de clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) pour se connecter au cluster.
+ Un rôle IAM doté des [autorisations](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) requises pour exécuter la ParallelCluster CLI.

## Créer des groupes de sécurité
<a name="tutorial-efa-enabled-fsx-lustre-security-groups"></a>

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-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}}
```

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security).

```
# 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}}
```

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security). 

```
# 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}}
```

## Création du système de fichiers
<a name="tutorial-efa-enabled-fsx-lustre-create-filesystem"></a>

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 `{{subnet-compute-nodes}}` 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é.

```
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}}
```

Prenez note de l'identifiant du système de fichiers renvoyé par la commande précédente. Dans le reste du didacticiel, remplacez-le `{{fs-id}}` par cet identifiant de système de fichiers.

## Créer le cluster
<a name="tutorial-efa-enabled-fsx-lustre-create-cluster"></a>

1. Créez le cluster avec les configurations suivantes définies dans le fichier de configuration AWS ParallelCluster YAML :

   1. AMI basée sur un système d'exploitation compatible, tel qu'Ubuntu 22.04.

   1. Les nœuds de calcul doivent utiliser un [type d'instance compatible EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types) doté de [Nitro v4\+](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html), 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/Enabled](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa-Enabled)la 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](https://docs.aws.amazon.com/fsx/latest/LustreGuide/configure-efa-clients.html) dans le guide de l'utilisateur de *FSx for* Lustre. Ce guide fournit le `configure-efa-fsx-lustre-client` package que vous pouvez télécharger, extraire et exécuter avec`setup.sh`. Pour l'appliquer automatiquement sur chaque nœud de calcul, exécutez ces étapes à partir d'une action [OnNodeStart](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)personnalisée, comme indiqué ci-dessous.
      + Créez le fichier `configure-efa-fsx-lustre-client-wrapper.sh` et chargez-le dans un bucket, par exemple`your-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 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
        ```

1. Créez un fichier de configuration de cluster `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}}
   ```

   Créez ensuite un cluster à l'aide de cette configuration :

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

## Valider FSx avec EFA fonctionne
<a name="tutorial-efa-enabled-fsx-lustre-validate"></a>

Pour vérifier que le trafic réseau Lustre utilise EFA, utilisez l'`lnetctl`outil 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.