Come faccio a montare un file system Amazon FSx per Lustre esistente su Batch AWS in un ambiente di calcolo gestito?

5 minuti di lettura
0

Desidero montare un file system Amazon FSx per Lustre esistente su Batch AWS in un ambiente di calcolo gestito. C'è un modo per configurarlo senza creare Amazon Machine Image (AMI) personalizzate?

Breve descrizione

Usa un modello di avvio di Amazon Elastic Compute Cloud (Amazon EC2) con Batch AWS. Questa configurazione consente di montare un file system Amazon FSx per Lustre esistente nei container senza creare AMI personalizzate.

**Importante:**quando crei il file system, utilizza lo stesso Amazon Virtual Private Cloud (Amazon VPC) e le stesse sottoreti assegnati al tuo ambiente di calcolo.

Risoluzione

1.    Crea un file system Amazon FSx per Lustre. Scegli un tipo di implementazione del file system persistente o scratch.

Suggerimento: utilizza file system persistenti per archiviazione e carichi di lavoro a lungo termine. Utilizza i file system scratch per l'archiviazione temporanea e l'elaborazione dei dati a breve termine.

2.    Copia l'ID del file system (ad esempio, fs-12345678). Ti serve l'ID del file system per eseguire il modello di avvio.

3.    Crea un modello di avvio che includa una sezione di dati utente e utilizzi il formato di file multiparte MIME. Per ulteriori informazioni, consulta Archivio multiparte Mime sul sito Cloud-init.

Esempio di file multiparte MIME di Amazon Linux 2

Importante: sostituisci fs-12345678 con l'ID del tuo file system. Sostituisci us-east-1 con la tua regione AWS. Sostituisci xxxxxxxx con il tuo nome di montaggio Amazon FSx di otto caratteri.

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

runcmd:
- file_system_id_01=fs-09c9ae4593b53a741
- region=us-east-1
- fsx_directory=/scratch
- fsx_mount_name=xxxxxxxx
- amazon-linux-extras install -y lustre2.10
- mkdir -p ${fsx_directory}
- mount -t lustre -o noatime,flock ${file_system_id_01}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory}

--==MYBOUNDARY==--

Nota: questo file multiparte MIME di esempio configura la risorsa di calcolo per installare il pacchetto Lustre 2.10 dalla libreria Extras. Il file monta anche un file system Amazon FSx per Lustre esistente su /scratch. Per le istruzioni di installazione per altre distribuzioni Linux, consulta Installazione del client Lustre.

4.    Avvia il modello per richiamare i dati utente.

5.    Crea un file denominato mount-fsx-lustre.json.

Nota: regola la dimensione del volume in base al tuo caso d'uso.

Esempio di modello di avvio di Amazon Linux 2

{
  "LaunchTemplateName": "user-data",
  "LaunchTemplateData": {
    "BlockDeviceMappings": [
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 30,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvda"
      }
    ],
    "UserData": "TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PU1ZQk9VTkRBUlk9PSIKCi0tPT1NWUJPVU5EQVJZPT0KQ29udGVudC1UeXBlOiB0ZXh0L2Nsb3VkLWNvbmZpZzsgY2hhcnNldD0idXMtYXNjaWkiCgpwYWNrYWdlczoKLSBhbWF6b24tZWZzLXV0aWxzCgpydW5jbWQ6Ci0gZmlsZV9zeXN0ZW1faWRfMDE9ZnMtODc0MTc4MDYgICAgIAotIGVmc19kaXJlY3Rvcnk9L21udC9lZnMKCi0gbWtkaXIgLXAgJHtlZnNfZGlyZWN0b3J5fQotIGVjaG8gIiR7ZmlsZV9zeXN0ZW1faWRfMDF9Oi8gJHtlZnNfZGlyZWN0b3J5fSBlZnMgdGxzLF9uZXRkZXYiID4+IC9ldGMvZnN0YWIKLSBtb3VudCAtYSAtdCBlZnMgZGVmYXVsdHMKCi0tPT1NWUJPVU5EQVJZPT0tLQ=="
  }
}

Esempio di modello di avvio di Amazon Linux 1

{
  "LaunchTemplateName": "userdata",
  "LaunchTemplateData": {
    "BlockDeviceMappings": [
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 8,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvda"
      },
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 22,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvdcz"
      }
    ],
    "UserData": "TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PU1ZQk9VTkRBUlk9PSIKCi0tPT1NWUJPVU5EQVJZPT0KQ29udGVudC1UeXBlOiB0ZXh0L2Nsb3VkLWNvbmZpZzsgY2hhcnNldD0idXMtYXNjaWkiCgpwYWNrYWdlczoKLSBhbWF6b24tZWZzLXV0aWxzCgpydW5jbWQ6Ci0gZmlsZV9zeXN0ZW1faWRfMDE9ZnMtODc0MTc4MDYgICAgIAotIGVmc19kaXJlY3Rvcnk9L21udC9lZnMKCi0gbWtkaXIgLXAgJHtlZnNfZGlyZWN0b3J5fQotIGVjaG8gIiR7ZmlsZV9zeXN0ZW1faWRfMDF9Oi8gJHtlZnNfZGlyZWN0b3J5fSBlZnMgdGxzLF9uZXRkZXYiID4+IC9ldGMvZnN0YWIKLSBtb3VudCAtYSAtdCBlZnMgZGVmYXVsdHMKCi0tPT1NWUJPVU5EQVJZPT0tLQ=="
  }
}

Nota: se aggiungi dati utente a un modello di avvio nella console Amazon EC2, assicurati di eseguire una delle seguenti operazioni: incolla i dati utente come testo normale oppure carica i dati utente da un file.

Se utilizzi l'interfaccia della linea di comando AWS (AWS CLI) o un SDK AWS, devi prima codificare in base64 i dati utente. Quindi, invia quella stringa come valore del parametro UserData quando chiami CreateLaunchTemplate.

6.    Esegui il seguente comando AWS CLI per creare un modello di avvio basato sul file mount-fsx-lustre.json che hai creato nel passaggio 5:

Importante: sostituisci us-east-1 con la tua regione AWS.

aws ec2 --region us-east-1 create-launch-template --cli-input-json file://mount-fsx-lustre.json

Esempio di output del comando create-launch-template

{
  "LaunchTemplate": {
    "LaunchTemplateId": "lt-08cb09d54bcf551f3",
    "LaunchTemplateName": "fsx-test",
    "CreateTime": "2020-06-30T17:13:22.000Z",
    "CreatedBy": "arn:aws:iam::12345678999:user/test",
    "DefaultVersionNumber": 1,
    "LatestVersionNumber": 1
  }
}

7.    Crea un nuovo ambiente di calcolo e associalo al tuo modello di avvio.

Importante: per impostazione predefinita, gli ambienti di calcolo gestiti da Batch AWS utilizzano una versione approvata dell'AMI ottimizzata per Amazon Elastic Container Service (Amazon ECS) per le risorse di calcolo. Devi impostare in modo esplicito l'ID AMI per le AMI Amazon Linux 2 ottimizzate per Amazon ECS e altre distribuzioni Linux.

Quando Batch AWS avvia le istanze, il file system Amazon FSx per Lustre viene ora montato sulle istanze di container.

8.    Verifica se il file system è montato con l'istanza di container utilizzando SSH per connetterti all'istanza avviata da Batch AWS. Quindi, esegui il seguente comando Linux df:

$ df -h

Esempio di output del comando df

Filesystem                                  Size      Used    Avail    Used%   Mounted on
devtmpfs                                    3.9G        0       3.9G     0%       /dev
tmpfs                                       3.9G        0       3.9G     0%       /dev/shm
tmpfs                                       3.9G     448K       3.9G     1%       /run
tmpfs                                       3.9G        0       3.9G     0%       /sys/fs/cgroup
/dev/xvda1                                   30G     4.2G        25G    15%       /
172.31.79.79@tcp:/xxxxxxxx                  1.1T     4.5M       1.1T     1%       /scratch
tmpfs                                       798M       0        798M     0%       /run/user/1000

Nota: /scratch viene montato automaticamente.

9.    Crea una definizione del processo in Batch AWS che includa il volume e il punto di montaggio.

Esempio di definizione del processo in Batch AWS

{
  "jobDefinitionName": "Fsx-sample",
  "jobDefinitionArn": "arn:aws:batch:us-east-1:12345678999:job-definition/userdata:1",
  "revision": 1,
  "status": "ACTIVE",
  "type": "container",
  "parameters": {},
  "containerProperties": {
    "image": "busybox",
    "vcpus": 1,
    "memory": 1024,
    "command": [],
    "volumes": [
      {
        "host": {
          "sourcePath": "/scratch"
        },
        "name": "Scratch"
      }
    ],
    "environment": [],
    "mountPoints": [
      {
        "containerPath": "/scratch",
        "sourceVolume": "Scratch"
      }
    ],
    "ulimits": [],
    "resourceRequirements": []
  }
}

10.    Invia un processo Batch AWS utilizzando la definizione del processo che hai creato nel passaggio 9.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa