Bringen Sie Ihren eigenen Speicher mit (Teil 1)

ryanblobstorageimage v2


Die Rescale-Plattform bietet durchgängiges Dateimanagement, unterstützt durch Speicherangebote der wichtigsten Public-Cloud-Anbieter. Dazu gehören optimierte clientseitige Übertragungstools sowie Verschlüsselung während der Übertragung und im Ruhezustand. In diesem Modell steuert Rescale das Layout des Objektspeichers und die Verwaltung der Verschlüsselungsschlüssel. Um den entschlüsselten Dateiinhalt abzurufen, müssen Benutzer die Rescale-Tools verwenden. Dies kann zwar praktisch sein, wenn Sie bei Null anfangen und eine vollständig verwaltete, sichere Lösung suchen, aber ein mögliches Szenario ist die Nutzung der Plattform mit bereits in die Cloud hochgeladenen Eingabedaten. Ein weiterer Anwendungsfall ist die Integration in eine bestehende Datenpipeline, die direkt mit Simulationsausgabedateien an einem kundengesteuerten Speicherort arbeitet. Aus Kosten- und Leistungsgründen ist es wichtig, die Rechenleistung so nah wie möglich am Speicher zu halten. Ein Vorteil der Rescale-Plattform besteht darin, dass wir verschiedene Cloud-Anbieter unterstützen und die Rechenleistung auf alle bereits genutzten Cloud-Speicherkonten übertragen können.
In diesem Beitrag zeigen wir, wie Kunden Eingabe- und Ausgabedateien von einem benutzerdefinierten Speicherort übertragen können, anstatt den standardmäßigen, von Rescale verwalteten Speicher zu verwenden. In diesem Beispiel konzentrieren wir uns auf Amazon S3, ein ähnlicher Ansatz ist jedoch bei jedem Anbieter möglich. Im Folgenden gehen wir die Einrichtung eines Versuchsplanungsjobs durch, bei dem die Eingabe- und Ausgabedateien in einem kundengesteuerten Bucket gespeichert sind. Nehmen wir an, der Bucket heißt „my-simulation-data“, die Eingabedateien tragen alle das Präfix „input“ und alle vom Parameter-Sweep generierten Ausgabedateien sollen in einen Pfad mit dem Präfix „output“ hochgeladen werden.
Dieses DOE wird die HSDI- und Pintle-Injektor-Beispiele für CONVERGE CFD finden Sie auf unserer Support-Seite (https://support.rescale.com/customer/en/portal/articles/2579932-converge-examples) parallel. Normalerweise wird das DOE-Framework verwendet, um bestimmte numerische Werte innerhalb einer Eingabedatei zu ändern, aber hier verwenden wir es, um pro Lauf eine völlig andere input.zips auszuwählen.
Laden Sie zunächst die Converged-Eingabe-Zips (hsdi_fb_2mm.zip und pintle_injector.zip) in das Verzeichnis s3://my-simulation-data/input/ in S3 hoch.
Erstellen Sie als Nächstes lokal eine Datei mit dem Namen inputs.csv, die wie folgt aussieht:

s3_input,s3_output
s3://my-simulation-data/input/hsdi_fb_2mm.zip,s3://my-simulation-data/output/hsdi/
s3://my-simulation-data/input/pintle_injector.zip,s3://my-simulation-data/output/pintle/

Um Rescale-Rechenknoten Zugriff auf den Bucket zu gewähren, muss eine IAM-Richtlinie erstellt werden, die Lesezugriff auf das Eingabeverzeichnis und Vollzugriff auf das Ausgabeverzeichnis bietet:

{ "Version": "2012-10-17", "Anweisung": [ { "Effekt": "Zulassen", "Aktion": [ "s3:Get*", "s3:List*" ], "Ressource": [ "arn:aws:s3:::my-simulation-data/input", "arn:aws:s3:::my-simulation-data/input/*" ] }, { "Effekt": "Zulassen", "Aktion": [ "s3:*" ], "Ressource": [ "arn:aws:s3:::my-simulation-data/output", "arn:aws:s3:::my-simulation-data/output/*" ] } ] }

Beachten Sie, dass Sie dies auch durch die Einrichtung eines kontenübergreifenden Zugriffs erreichen können (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html). Dies ist die bevorzugte Methode zur Konfiguration des Zugriffs, wenn alle Rechenknoten in AWS ausgeführt werden. Der oben beschriebene Ansatz funktioniert jedoch unabhängig davon, wo die Rechenknoten ausgeführt werden.
Ordnen Sie diese Richtlinie nun einem IAM-Benutzer zu und generieren Sie einen Zugriffsschlüssel und einen geheimen Schlüssel. Dieser Zugriffsschlüssel und der geheime Schlüssel sollten dann in einer AWS-Konfigurationsdatei abgelegt werden, die Sie lokal speichern:

[Standard] aws_access_key_id=XXXXXXX aws_secret_access_key=XXXXXXXXX region=us-east-1

Speichern Sie das Obige in einer Datei namens „config.“
Die letzte Datei, die lokal erstellt werden muss, ist die Vorlage für das Ausführungsskript. Wir referenzieren die Variablen s3_input und s3_output aus der oben erstellten Datei inputs.csv in einer Shell-Skript-Vorlagendatei, die bei jedem Lauf ausgeführt wird. Erstellen Sie eine Datei namens run.sh.template, die wie folgt aussieht:

#!/bin/bash export AWS_CONFIG_FILE=config aws s3 cp ${s3_input} . unzip *.zip converge aws s3 cp . ${s3_output} --recursive --exclude config rm -rf *

Im obigen Skript sind einige Punkte zu beachten. Normalerweise entpackt die Rescale-Plattform ZIP-Dateien automatisch, in diesem Fall müssen wir dies jedoch selbst erledigen, da wir den Rescale-Speicher für unsere Eingaben umgehen. Der Befehl „rm -rf *“ am Ende des Skripts löscht alle Ausgabedateien nach dem Hochladen an den benutzerdefinierten S3-Speicherort. Wenn wir diesen Schritt auslassen, werden die Ausgabedateien nach dem Beenden des Skripts ebenfalls in den Rescale-Speicher hochgeladen.
Nachdem die erforderlichen Dateien lokal erstellt wurden, können wir einen neuen DOE-Job auf der Plattform konfigurieren, der auf diese Dateien verweist. Aus dem Neue Jobseite, ändern Sie den Jobtyp in DOE und konfigurieren Sie den Job wie folgt:

  1. Eingabedateien: Konfiguration hochladen
  2. Parallele Einstellungen: Wählen Sie „Ausführungsdefinitionsdatei verwenden“ und laden Sie input.csv hoch
  3. Vorlagen: Laden Sie run.sh.template hoch. Verwenden Sie run.sh als Vorlagennamen
  4. Software: Wählen Sie converge 2.3.X und setzen Sie den Befehl auf run.sh
  5. Hardware: Onyx, 8 Kerne pro Steckplatz, 2 Task-Slots

Senden Sie den Auftrag. Wenn der Auftrag abgeschlossen ist, befinden sich alle Ausgabedateien in den Verzeichnissen s3://my-simulation-data/output/hsdi/ und s3://my-simulation-data/output/pintle/.
In diesem DOE-Setup werden die zusätzlichen Setup-Daten (z. B. die AWS-Konfigurationsdatei, die CSV-Datei und die Skriptvorlage) verschlüsselt und im von Rescale verwalteten Speicher abgelegt. Der Hauptteil des Jobs, die Eingabe- und Ausgabedateien, werden in den benutzerdefinierten Buckets gespeichert.
Wir sind uns bewusst, dass die oben beschriebene Konfiguration etwas manuelle Arbeit erfordert. Eines unserer Ziele ist eine bessere Integration mit kundeneigenen Speicherkonten. Bleiben Sie dran für weitere Details!