Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

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.

Breve descrizione

Usa un modello di avvio di Amazon Elastic Compute Cloud (Amazon EC2) con Batch AWS. Questa configurazione monta un file system Amazon FSx per Lustre esistente nei tuoi container senza la creazione di una Amazon Machine Image (AMI) personalizzata.

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

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per montare un file system Amazon FSx per Lustre esistente su Batch AWS in un ambiente di calcolo gestito, completa i passaggi seguenti:

  1. Crea un file system Amazon FSx per Lustre. Scegli un tipo di implementazione del file system persistente o scratch.
    Nota: utilizza file system persistenti per archiviazione e carichi di lavoro a lungo termine. Utilizza file system scratch per l'archiviazione temporanea e l'elaborazione di dati a breve termine.

  2. Copia l'ID del tuo file system (ad esempio, fs-0123456789abcdef0). È necessario 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 MIME multipart. Per ulteriori informazioni, consulta Mime multi-part archive sul sito web Cloud-init.
    Vedi l'esempio seguente di file MIME multipart di Amazon Linux 2. Sostituisci fs-0123456789abcdef0 con l'ID del tuo file system, us-east-1 con la tua regione AWS exxxxxxxx con gli otto caratteri del tuo nome di montaggio Amazon FSx:

    Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
    MIME-Version: 1.0
    
    --==MYBOUNDARY==
    Content-Type: text/cloud-boothook; charset="us-ascii"
    
    file_system_id=fs-0123456789abcdef0
    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}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory}
    
    --==MYBOUNDARY==--

    Nota: questo file MIME multipart 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 Installing the Lustre client.

  4. Avvia il modello per invocare i dati dell'utente, come mostrato nell'esempio di Amazon Linux 2 seguente:

    {  "LaunchTemplateName": "user-data",
      "LaunchTemplateData": {
        "UserData": "TUlNRS1W...<base64 encoded userdata>..."
      }
    }
    

    Nota: se aggiungi dati utente a un modello di avvio nella console Amazon EC2, assicurati di eseguire una delle operazioni seguenti: incollare i dati utente come testo normale o caricare i dati utente da un file. Se utilizzi AWS CLI o un AWS SDK, devi prima codificare in base64 i dati utente. Per ulteriori informazioni, consulta Encode to Base64 format sul sito web base64encode. Quindi invia la stringa come valore del parametro UserData quando chiami CreateLaunchTemplate.

  5. Crea un file denominato mount-fsx-lustre.json.
    Nota: regola la dimensione del volume in base al tuo caso d'uso.

  6. Esegui il comando AWS CLI create-launch-template per creare un modello di avvio basato sul file mount-fsx-lustre.json che hai creato nel passaggio 5. Sostituisci us-east-1 con la tua regione:

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

    Esempio di output:

    {  "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. Quando Batch AWS crea le istanze, il file system Amazon FSx per Lustre viene ora montato sulle istanze di container.
    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.

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

    $ df -h

    Esempio di output:

    Filesystem                                  Size      Used    Avail    Used%   Mounted ondevtmpfs                                    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. In AWS Batch Crea una definizione del processo che includa il volume e il punto di montaggio:

    {  "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. Per inviare un processo AWS Batch, utilizza la definizione del processo che hai creato nel passaggio 9.

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 mesi fa