Wie stelle ich ein vorhandenes Amazon FSx für Lustre-Dateisystem in AWS Batch in einer verwalteten Rechenumgebung bereit?

Lesedauer: 4 Minute
0

Ich möchte ein vorhandenes Amazon FSx für Lustre-Dateisystem in AWS Batch in einer verwalteten Rechenumgebung bereitstellen. Gibt es eine Möglichkeit, dieses einzurichten, ohne benutzerdefinierte Amazon Machine Images (AMIs) zu erstellen?

Kurzbeschreibung

Verwenden Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Startvorlage mit AWS Batch. Mit dieser Konfiguration können Sie ein vorhandenes Amazon FSx für Lustre-Dateisystem in Ihre Container einbinden, ohne benutzerdefinierte AMIs erstellen zu müssen.

Wichtig: Verwenden Sie beim Erstellen des Dateisystems dieselbe Amazon Virtual Private Cloud (Amazon VPC) und dieselben Subnetze, die Ihrer Rechenumgebung zugewiesen sind.

Lösung

1.Erstellen Sie ein Amazon FSx für Lustre-Dateisystem. Wählen Sie anschließend als Bereitstellungstyp ein persistentes oder ein Scratch-Dateisystem aus.

Tipp: Verwenden Sie persistente Dateisysteme für längerfristige Speicherung und Workloads. Verwenden Sie Scratch-Dateisysteme für die temporäre Speicherung und kurzfristigere Datenverarbeitung.

2.Kopieren Sie Ihre Dateisystem-ID (z. B. fs-12345678). Sie benötigen die Dateisystem-ID, um Ihre Startvorlage auszuführen.

3.Erstellen Sie eine Startvorlage, die einen Abschnitt mit Benutzerdaten enthält und das mehrteilige MIME-Dateiformat verwendet. Weitere Informationen finden Sie unter Mehrteiliges MIME-Archiv auf der Cloud-init-Website.

Beispiel einer mehrteiligen Amazon Linux 2-MIME-Datei

**Wichtig:**Ersetzen Sie fs-12345678 durch Ihre Dateisystem-ID. Ersetzen Sie us-east-1 durch Ihre AWS-Region. Ersetzen Sie xxxxxxxx durch Ihren achtstelligen Amazon FSx-Mount-Namen.

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

Hinweis: In dieser mehrteiligen MIME-Beispieldatei wird die Rechenressource so konfiguriert, dass sie das Lustre 2.10-Paket aus der Extras-Bibliothek installiert. Die Datei stellt zudem ein vorhandenes Amazon FSx für Lustre-Dateisystem unter /scratch bereit. Installationsanweisungen für andere Linux-Distributionen finden Sie unter Installation des Lustre-Clients.

4.Starten Sie die Vorlage, um die Benutzerdaten aufzurufen.

5.Erstellen Sie eine Datei mit dem Namen mount-fsx-lustre.json.

Hinweis: Passen Sie die Volumengröße an Ihren Anwendungsfall an.

Beispiel für eine Amazon Linux 2-Startvorlage

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

Beispiel für eine Amazon Linux 1-Startvorlage

{
  "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=="
  }
}

Hinweis: Wenn Sie Benutzerdaten zu einer Startvorlage in der Amazon EC2-Konsole hinzufügen, stellen Sie sicher, dass Sie einen der folgenden Schritte ausführen: Fügen Sie die Benutzerdaten als Klartext ein. -oder- Laden Sie die Benutzerdaten aus einer Datei hoch.

Wenn Sie die AWS Command Line Interface (AWS CLI) oder ein AWS-SDK verwenden, müssen Sie die Benutzerdaten zunächst mit base64 verschlüsseln. Senden Sie diese Zeichenfolge dann als Wert des Parameters UserData, wenn Sie CreateLaunchTemplate aufrufen.

6.Führen Sie den folgenden AWS-CLI-Befehl aus, um eine Startvorlage zu erstellen, die auf der Datei mount-fsx-lustre.json basiert, die Sie in Schritt 5 erstellt haben:

**Wichtig:**Ersetzen Sie us-east-1 durch Ihre AWS-Region.

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

Beispiel für eine Ausgabe des Befehls 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.Erstellen Sie eine neue Rechenumgebung und verknüpfen Sie diese Umgebung mit Ihrer Startvorlage.

Wichtig: Standardmäßig verwenden von AWS Batch verwaltete Rechenumgebungen eine genehmigte Version des für Amazon Elastic Container Service (Amazon ECS) optimierten AMI für Rechenressourcen. Sie müssen die AMI-ID für Amazon ECS-optimierte Amazon Linux 2-AMIs und andere Linux-Distributionen explizit festlegen.

Wenn AWS Batch Instances hochfährt, ist das Amazon FSx für Lustre-Dateisystem nun auf den Container-Instances bereitgestellt.

8.Überprüfen Sie, ob das Dateisystem mit der Container-Instance gemountet ist, indem Sie SSH verwenden, um eine Verbindung zu der von AWS Batch gestarteten Instance herzustellen. Führen Sie dann den folgenden Linux-df-Befehl aus:

$ df -h

Beispiel für eine df-Befehlsausgabe

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

Hinweis: /scratch wird automatisch gemountet.

9.Erstellen Sie eine Jobdefinition in AWS Batch, die das Volumen und den Mount-Point enthält.

Beispiel für eine AWS Batch-Jobdefinition

{
  "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.Übermitteln Sie einen AWS Batch-Job mit der Jobdefinition, die Sie in Schritt 9 erstellt haben.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren