Ausführen von Azure CycleCloud in einer Containerinstanz

Das Ausführen von Azure CycleCloud in einer Containerinstanz ist eine hervorragende Lösung für Kunden, die CycleCloud intermittiert verwenden und sie zwischen Auftragsläufen herunterfahren möchten, um die Kosten zu vermeiden, die mit langen virtuellen Computern verknüpft sind.

Voraussetzungen

Sie müssen Docker auf dem Computer oder Server installiert und ausgeführt haben, von dem Sie auf CycleCloud zugreifen. Laden Sie das entsprechende Installationspaket für Ihr Betriebssystem herunter und folgen Sie den Installationsanweisungen von Docker.

CycleCloud-Containerimage

Nachdem Docker eingerichtet und funktioniert, können Sie den folgenden Befehl ausführen, um das CycleCloud-Containerimage aus der Containerregistrierung von Microsoft herunterzuziehen:

docker run mcr.microsoft.com/hpc/azure-cyclecloud

Das ist alles! Der Container wird gestartet und CycleCloud wird über Webbrowser https://localhostzugänglich sein. Folgen Sie dort den Konfigurationsmenüs.

Konfiguration

Der Container führt Webanwendungen für http (80) und https (443) aus. Da CycleCloud einen JVM (Java Virtual Machine) ausführt, sollte die HeapSize des JVM und der dem Container zugewiesene Speicher koordiniert werden. Es wird empfohlen, dass die HeapSize auf eine Hälfte der Containerspeicherzuweisung festgelegt wird. Verwenden Sie den Befehl docker run -m mit einer In MB angegebenen Umgebungsvariable. Beispiel:

docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 myrepo/cyclecloud:$ver

Warnung

Wenn der CycleCloud-Dienst fehlschlägt, wird der Containerprozess beendet, und alle Clusterdaten gehen verloren. Um dieses Szenario zu vermeiden, konfigurieren Sie Ihre Containerinstanz, um mit beständigem Speicher gesichert zu werden.

Permanenter Speicher

Wenn die Azure-Containerinstanz fehlschlägt, können Ihre Daten verloren gehen und den verwalteten Ausführungsstatus Ihrer HPC-Cluster wiederherstellen, wäre nicht möglich. Es wird dringend empfohlen, die Azure-Containerinstanz mit dauerhaftem Speicher von Azure File Share zu sichern.

Wenn eine Azure-Dateifreigabe bei /azurecyclecloudbereitgestellt wird, verwendet der CycleCloud-Container dauerhaften Speicher für:

  • Protokolle
  • Wiederherstellungspunkte sichern

Weitere Informationen zur Azure-Dateifreigabe finden Sie in der Dokumentation, die die Integration mit Azure-Containerinstanz veranschaulicht.

Im folgenden Beispiel wird eine Speicherfreigabe auf /azurecyclecloud bereitgestellt und erfasst Protokolle und Sicherungspunkte. Mit dieser Konfiguration können die Azure CycleCloud-Daten von Fehlern wiederhergestellt oder verwendet werden, um das Hosting in einem anderen Dienst wie z. B. einen virtuellen Computer zu hosten.

az container create \
  --resource-group ${ResourceGroup} \
  --location ${Location} \
  --name ${Name} \
  --dns-name-label ${DNSName} \
  --image mcr.microsoft.com/hpc/azure-cyclecloud \
  --ip-address public \
  --ports 80 443 \
  --cpu 2 \
  --memory 4 \
  -e JAVA_HEAP_SIZE=2048 \
  --azure-file-volume-account-name ${STORAGE_ACCOUNT_NAME} \
  --azure-file-volume-account-key ${STORAGE_KEY} \
  --azure-file-volume-share-name ${SHARE_NAME} \
  --azure-file-volume-mount-path /azurecyclecloud

Unterstützte Versionen

Unterstützte Versionen des CycleCloud-Containerimages finden Sie auf der Seite "Product dockerhub". Das Bild kann als Azure-Containerinstanz gestartet werden (mit vorhandenen Ressourcengruppen, Speicherorten und bevorzugten Container- und DNS-Namen). CycleCloud verfügt über die SSL-Zertifikatgenerierung, sodass Sie die Argumente zweimal angeben (einmal für az cli und erneut zum Festlegen von Umgebungsvariablen), dann kann der Container gültige SSL-Zertifikate automatisch einrichten.

#!/bin/bash
ResourceGroup="rg-name"
Location="westus2"
CIName="ci-name"
CIDNSName="ci-name"

az container create -g ${ResourceGroup} \
  --location ${Location} \
  --name ${CIName} \
  --dns-name-label ${CIDNSName} \
  --image mcr.microsoft.com/hpc/azure-cyclecloud \
  --ip-address public \
  --ports 80 443 \
  --cpu 2 --memory 4 \
  -e JAVA_HEAP_SIZE=2048

Im obigen Beispiel wird der Container und die Cyclecloud-Benutzeroberfläche unter https://${CIDNSName}.${Location}.azurecontainer.io" verfügbar sein.

Zusätzliche Konfiguration

Der Container führt Webanwendungen für http (80) und https (443) aus. Da CycleCloud einen JVM (Java Virtual Machine) ausführt, sollte die HeapSize des JVM und der dem Container zugewiesene Speicher koordiniert werden. Es wird empfohlen, dass die HeapSize auf eine Hälfte der Containerspeicherzuweisung festgelegt wird. Verwenden Sie den Befehl docker run -m mit einer In MB angegebenen Umgebungsvariable. Zum Beispiel:

docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 mcr.microsoft.com/hpc/azure-cyclecloud