

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criando um cluster com um EFA-enabled FSx Lustre
<a name="tutorial-efa-enabled-fsx-lustre"></a>

Neste tutorial, você criará um cluster que usa um sistema de arquivos EFA-enabled FSx Lustre como armazenamento compartilhado. Usar um sistema de arquivos FSx Lustre com EFA ativado pode aumentar o desempenho em até 8 vezes. Para verificar se um sistema de EFA-enabled arquivos é o que você precisa, consulte Como [trabalhar com sistemas de EFA-enabled arquivos no Guia](https://docs.aws.amazon.com/fsx/latest/LustreGuide/efa-file-systems.html) do usuário do *FSx for Lustre*.

Ao usar AWS ParallelCluster, você paga apenas pelos AWS recursos criados ao criar ou atualizar AWS ParallelCluster imagens e clusters. Para obter mais informações, consulte [AWS serviços usados por AWS ParallelCluster](aws-services-v3.md).

## Requisitos
<a name="tutorial-efa-enabled-fsx-lustre-requirements"></a>
+ A AWS CLI está [instalada e](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configurada.
+ A ParallelCluster CLI está [instalada e](install-v3-parallelcluster.md) configurada.
+ Um [par de chaves do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) para fazer login no cluster.
+ Uma função do IAM com as [permissões](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) necessárias para executar a ParallelCluster CLI.

## Criar security groups
<a name="tutorial-efa-enabled-fsx-lustre-security-groups"></a>

Crie dois grupos de segurança na mesma VPC em que o cluster e o sistema de arquivos serão implantados: um para o cliente em execução nos nós do cluster e outro para o sistema de arquivos.

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

No restante do tutorial, assumiremos `sg-client` e `sg-file-system` somos os IDs do grupo de segurança do cliente e do sistema de arquivos, respectivamente.

Configure o grupo de segurança do cliente para permitir todo o inbound/outbound tráfego de e para o sistema de arquivos, conforme [exigido pelo 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}}
```

Configure o grupo de segurança do sistema de arquivos para permitir todo o inbound/outbound tráfego interno e todo o tráfego de entrada do cliente, conforme [exigido pelo 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}}
```

## Crie o sistema de arquivos
<a name="tutorial-efa-enabled-fsx-lustre-create-filesystem"></a>

Crie o sistema de arquivos na mesma Zona de Disponibilidade (AZ) em que estarão os nós de computação e `{{subnet-compute-nodes}}` substitua por sua ID no código a seguir. Isso é necessário para permitir que o EFA trabalhe com seu sistema de arquivos. Observe que, como parte da criação do sistema de arquivos, habilitamos o EFA usando a EfaEnable propriedade.

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

Anote o ID do sistema de arquivos retornado pelo comando anterior. No restante do tutorial, `{{fs-id}}` substitua por esse ID do sistema de arquivos.

## Criar um cluster.
<a name="tutorial-efa-enabled-fsx-lustre-create-cluster"></a>

1. Crie o cluster com as seguintes configurações definidas no arquivo de configuração AWS ParallelCluster YAML:

   1. AMI baseada em um sistema operacional compatível, como o Ubuntu 22.04.

   1. Os nós de computação devem usar um [tipo de instância compatível com EFA com](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types) [Nitro v4\+](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html), como g6.16xlarge.
      + Os nós de computação devem estar na mesma AZ em que está o sistema de arquivos.
      + Os nós de computação devem ter sido [Efa/Enabled](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa-Enabled)definidos como verdadeiros.
      + *Os nós de computação devem configurar o cliente FSx Lustre para usar o EFA [seguindo Como configurar clientes EFA no Guia do usuário do](https://docs.aws.amazon.com/fsx/latest/LustreGuide/configure-efa-clients.html) FSx for Lustre.* Esse guia fornece o `configure-efa-fsx-lustre-client` pacote, que você baixa, extrai e executa`setup.sh`. Para aplicá-la automaticamente em cada nó de computação, execute essas etapas a partir de uma ação [OnNodeStart](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)personalizada, conforme mostrado abaixo.
      + Crie o arquivo `configure-efa-fsx-lustre-client-wrapper.sh` e faça o upload para um bucket, por exemplo`your-bucket`, que possa ser acessado a partir dos nós de computação. Seguindo as etapas na documentação do FSx mencionada acima, o wrapper executa o equivalente a:

        ```
        #!/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. Crie um arquivo de configuração 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}}
   ```

   Em seguida, crie um cluster usando essa configuração:

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

## Validar FSx com EFA está funcionando
<a name="tutorial-efa-enabled-fsx-lustre-validate"></a>

Para verificar se o tráfego de rede do Lustre está usando o EFA, use a `lnetctl` ferramenta Lustre que pode mostrar o tráfego de rede de uma determinada interface de rede. Para isso, execute os seguintes comandos em um nó de computação:

```
# 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 o recurso estiver funcionando, espera-se que o número de pacotes que fluem pela interface aumente.