

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di un cluster con EFA-enabled FSx Lustre
<a name="tutorial-efa-enabled-fsx-lustre"></a>

In questo tutorial, creerai un cluster che utilizza un file EFA-enabled system FSx Lustre come storage condiviso. L'utilizzo di un file system FSx Lustre con EFA abilitato può fornire un incremento delle prestazioni fino a 8 volte. Per verificare se un EFA-enabled file system è ciò di cui hai bisogno, consulta [Lavorare con i EFA-enabled file system nella Guida](https://docs.aws.amazon.com/fsx/latest/LustreGuide/efa-file-systems.html) per l'utente di *FSx for Lustre*.

Quando si utilizza AWS ParallelCluster, si pagano solo le AWS risorse create durante la creazione o l'aggiornamento di AWS ParallelCluster immagini e cluster. Per ulteriori informazioni, consulta [AWS servizi usati da AWS ParallelCluster](aws-services-v3.md).

## Requisiti
<a name="tutorial-efa-enabled-fsx-lustre-requirements"></a>
+ La AWS CLI è [installata e](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configurata.
+ La ParallelCluster CLI è [installata e](install-v3-parallelcluster.md) configurata.
+ Una [coppia di chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) per accedere al cluster.
+ Un ruolo IAM con le [autorizzazioni](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) necessarie per eseguire la ParallelCluster CLI.

## Creazione di gruppi di sicurezza
<a name="tutorial-efa-enabled-fsx-lustre-security-groups"></a>

Crea due gruppi di sicurezza nello stesso VPC in cui verranno distribuiti il cluster e il file system: uno per il client in esecuzione sui nodi del cluster e uno per il file system.

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

Nel resto del tutorial, assumeremo `sg-client` e `sg-file-system` siano gli ID dei gruppi di sicurezza rispettivamente del client e del file system.

Configura il gruppo di sicurezza per il client per consentire tutto il inbound/outbound traffico da e verso il file system, come [richiesto da 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}}
```

Configura il gruppo di sicurezza per il file system per consentire tutto inbound/outbound il traffico interno e tutto il traffico in entrata dal client, come [richiesto dall'](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security)EFA. 

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

## Crea il file system
<a name="tutorial-efa-enabled-fsx-lustre-create-filesystem"></a>

Crea il file system all'interno della stessa zona di disponibilità (AZ) in cui si troveranno i nodi di elaborazione e `{{subnet-compute-nodes}}` sostituiscilo con il relativo ID nel codice seguente. Ciò è necessario per consentire a EFA di funzionare con il file system. Nota che, come parte della creazione del file system, abilitiamo EFA utilizzando la EfaEnable proprietà.

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

Prendete nota dell'id del file system restituito dal comando precedente. Nel resto del tutorial, sostituiscilo `{{fs-id}}` con questo id del file system.

## Creazione del cluster
<a name="tutorial-efa-enabled-fsx-lustre-create-cluster"></a>

1. Crea il cluster con le seguenti configurazioni impostate nel file di configurazione AWS ParallelCluster YAML:

   1. AMI basata su un sistema operativo supportato, come Ubuntu 22.04.

   1. I nodi di calcolo devono utilizzare un [tipo di istanza supportato da EFA con [Nitro v4\+](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html), ad esempio](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types) g6.16xlarge.
      + I nodi di calcolo devono trovarsi nella stessa AZ in cui si trova il file system.
      + I nodi di calcolo devono essere [Efa/Enabled](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa-Enabled)impostati su true.
      + *I nodi di calcolo devono configurare il client FSx Lustre per utilizzare EFA [seguendo la procedura Configuring EFA Client nella FSx](https://docs.aws.amazon.com/fsx/latest/LustreGuide/configure-efa-clients.html) for Lustre User Guide.* Questa guida fornisce il `configure-efa-fsx-lustre-client` pacchetto da scaricare, estrarre ed eseguire. `setup.sh` Per applicarlo automaticamente su ogni nodo di elaborazione, esegui questi passaggi da un'azione [OnNodeStart](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)personalizzata, come illustrato di seguito.
      + Crea il file `configure-efa-fsx-lustre-client-wrapper.sh` e caricalo in un bucket, ad esempio`your-bucket`, raggiungibile dai nodi di calcolo. Seguendo i passaggi della documentazione FSx citata sopra, il wrapper esegue l'equivalente di:

        ```
        #!/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. Crea un file di configurazione del 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}}
   ```

   Quindi crea un cluster utilizzando quella configurazione:

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

## La convalida di FSx con EFA funziona
<a name="tutorial-efa-enabled-fsx-lustre-validate"></a>

Per verificare che il traffico di rete Lustre utilizzi EFA, utilizzate `lnetctl` lo strumento Lustre che può mostrare il traffico di rete per una determinata interfaccia di rete. A tal fine, esegui i seguenti comandi in un nodo di calcolo:

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

Se la funzionalità funziona, si prevede che il numero di pacchetti che fluiscono attraverso l'interfaccia aumenti.