View a markdown version of this page

Criando um cluster com um EFA-enabled FSx Lustre - AWS ParallelCluster

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

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 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.

Requisitos

Criar security groups

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.

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

# 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

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.

  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.

    2. Os nós de computação devem usar um tipo de instância compatível com EFA com Nitro v4+, 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/Enableddefinidos 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 FSx for Lustre. Esse guia fornece o configure-efa-fsx-lustre-client pacote, que você baixa, extrai e executasetup.sh. Para aplicá-la automaticamente em cada nó de computação, execute essas etapas a partir de uma ação OnNodeStartpersonalizada, conforme mostrado abaixo.

      • Crie o arquivo configure-efa-fsx-lustre-client-wrapper.sh e faça o upload para um bucket, por exemployour-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
  2. Crie um arquivo de configuração de clusterconfig.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

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.