Integritätsprüfungen

CycleCloud bietet zwei Mechanismen zum Überprüfen der Integrität von VMs: Node Health Checks ist ein neueres Feature, das die Überprüfungen während der Bereitstellungsphase durchführt und verhindert, dass die fehlerhaften VMs beitreten, während HealthCheck sie regelmäßig ausführt, nachdem der virtuelle Computer als Knoten dem Cluster beigetreten ist.

Knotenintegritätsprüfungen

Knotenintegritätsprüfungen können fehlerhafte Hardware erkennen, bevor ein virtueller Computer dem CycleCloud-Cluster beitreten darf. Die aktuelle Version dieses Features führt Integritätsprüfungsskripts aus, die in die offiziellen AzureHPC-Images integriert sind und unter /opt/azurehpc/test/azurehpc-health-checks/ zu finden sind. Die Quelle für diese Skripts befindet sich im AzureHPC Node Health Checks-Repository. Beachten Sie jedoch, dass die in die Version des AzureHPC-Images Ihres Clusters integrierte Version des AzureHPC-Images möglicherweise nicht die neueste version ist, die im Repository verfügbar ist.

Anforderungen

Die aktuelle Version von Node Health Checks unterstützt nur AzureHPC-Images, die nach dem 7. November 2023 veröffentlicht wurden (mit version 2.0.6 oder höher von azurehpc-health-checks) und von ihnen abgeleiteten benutzerdefinierten Images. Knotenintegritätsprüfungen werden in Windows derzeit nicht unterstützt.

Aktivieren von Knotenintegritätsprüfungen für Slurm-Cluster

Das Formular für die Erstellung des Slurm-Clusters bietet ein Kontrollkästchen zum Aktivieren von Knotenintegritätsprüfungen auf der Registerkarte Erweiterte Einstellungen . Wenn Sie das Kontrollkästchen aktivieren, werden Knotenintegritätsprüfungen im HPC-Knotenarray des Clusters aktiviert. Wenn Sie Knotenintegritätsprüfungen für andere Knotenarrays (oder für andere Clustertypen) aktivieren möchten, müssen Sie eine benutzerdefinierte Clustervorlage verwenden.

Knotenintegritätsprüfungen können in einem ausgeführten Cluster deaktiviert werden, indem Sie das Kontrollkästchen einfach deaktivieren. Es ist nicht erforderlich, das Knotenarray herunterzuskalieren, damit die Änderungen wirksam werden.

Grafische Benutzeroberfläche für Knotenintegritätsprüfungen

Grundlegendes zu Ergebnissen von Knotenintegritätsprüfungen

Nachdem eine VM Integritätsprüfungen bestanden hat, wird die Softwarekonfigurationsphase ausgeführt.

Wenn ein virtueller Computer eines der Integritätsprüfungsskripts fehlschlägt, wird eine Fehlermeldung an CycleCloud gesendet, und die VM wird automatisch daran gehindert, dem Cluster beizutreten.

Fehlerprotokolle zur Knotenintegritätsüberprüfung

Wenn der virtuelle Computer in einem NodeArray mit aktivierter Überbereitstellung (z. B. slurm hpc Node Array) gestartet wird, sollte die VM automatisch im Rahmen der Überbereitstellung ersetzt werden. In diesem Fall ist keine Aktion erforderlich, und die fehlerfreien VMs werden ausgewählt, um dem Cluster beizutreten (obwohl auf der Clusterseite eine Fehlermeldung angezeigt wird, die angibt, dass mindestens eine VMs-Überprüfung fehlgeschlagen ist).

Wenn die VM für einen einzelnen Knoten, ein Knotenarray mit deaktivierter Überbereitstellung gestartet wird (z. B. das Slurm htc Node Array), oder wenn mehr VMs Integritätsprüfungen nicht durchführen, als von der Überbereitstellung unterstützt werden, wechselt der Knoten in den Status Fehler, und die Zuordnung schlägt fehl. CycleCloud versucht möglicherweise, das Image des virtuellen Computers neu zu erstellen, um das Problem zu beheben. Wenn das erneute Image jedoch fehlschlägt, muss der Knoten beendet und ersetzt werden (manuell durch einen Administrator oder automatisch durch die automatische Skalierung).

Hinweis

Wenn Sie Knotenintegritätsprüfungen aktiviert haben, das VM-Image jedoch nicht die oben genannten Anforderungen erfüllt, können alle VMs dem Cluster beitreten, aber die status enthält eine Warnung, die angibt, dass Überprüfungen nicht unterstützt werden. Fehlerdetails zu Knotenintegritätsprüfungen

Attributreferenz

attribute type Definition
EnableNodeHealthChecks Boolean (Optional) Aktivieren von Knotenintegritätsüberprüfungen beim Start für diesen Knoten oder Knotenarray

HealthCheck

Azure CycleCloud bietet einen Mechanismus zum Beenden von virtuellen Computern (VMs), die sich in einem fehlerhaften Zustand namens HealthCheck befinden. Sowohl systemdefinierte als auch benutzerdefinierte Skripts (Python und Bash) werden regelmäßig (5 Minuten unter Windows, 10 Minuten unter Linux) ausgeführt, um die Allgemeine Integrität eines virtuellen Computers zu bestimmen. Mit HealthCheck können Administratoren Bedingungen definieren, unter denen VMs beendet werden sollen, ohne dass sie manuell überwachen und korrigieren müssen.

Integrierte HealthCheck-Skripts

CycleCloud-fähige VMs enthalten zwei Standardmäßige HealthCheck-Skripts:

  • Das converge_timeout Skript beendet eine instance, die die Softwarekonfiguration nicht innerhalb von vier Stunden nach dem Start abgeschlossen hat. Dieser Timeoutzeitraum kann mit der cyclecloud.keepalive.timeout -Einstellung (in Sekunden definiert) gesteuert werden.
  • Das scheduled_shutdown-Skript sucht in $JETPACK_HOME/run/scheduled_shutdown nach Erstellerdateien, die eine einzelne Zeile enthalten, die eine Herunterfahrzeit in Unix-Zeitstempelsekunden und eine optionale zweite Zeile mit einer Erklärung enthält. Wenn die aktuelle Zeit höher als der früheste Zeitstempel in den Dateien ist, wird der virtuelle Computer als fehlerhaft betrachtet.

Funktionsweise

Die HealthCheck-Skripts befinden sich im Verzeichnis $JETPACK_HOME/config/healthcheck.d . Linux unterstützt sowohl Python- als auch Bash-Skripts, während Windows nur Python-Skripts unterstützt. Das Skript sollte die Integrität des virtuellen Computers bestimmen. Wenn festgestellt wird, dass die VM fehlerhaft ist, sollte das Skript mit der status von 254beendet werden, was CycleCloud angibt, dass die VM fehlerhaft ist und beendet werden soll.

Wenn Sie bei einer VM angemeldet sind, auf der HealthCheck ausgeführt wird, können Sie das Herunterfahren des virtuellen Computers durch Ausführen des Befehls jetpack keepalive hindern. Auf Linux-Instanzen können Sie einen Zeitrahmen in Stunden oder forever unter Windows forever angeben.

Hinweis

Wenn festgestellt wird, dass eine VM fehlerhaft ist, sendet der HealthCheck-Agent eine Anforderung an CycleCloud, um die VM zu beenden. Die VM wird niemals lokal über den shutdown Befehl heruntergefahren. Für den Fall, dass die VM nicht mit CycleCloud kommunizieren kann, bleibt die VM betriebsbereit, obwohl sie bis zu einem Zeitpunkt fehlerhaft ist, zu dem CycleCloud erreicht werden kann.

Beispiel

Als einfaches Beispiel schreiben wir ein HealthCheck-Skript, das sicherstellt, dass eine Linux-VM länger als 24 Stunden nicht aktiv ist. Dieses Skript kann verwendet werden, um Entfernungen mit niedriger Priorität zu simulieren, um zu testen, wie ein Workflow auf eine entfernte VM reagiert. Dieses Skript wird in /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh platziert.

#!/bin/bash

# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
  exit 254
fi

Hinweis

Dieses Skript kann über CycleCloud Project auf einem virtuellen Computer platziert werden oder durch direktes Hinzufügen beim Erstellen eines benutzerdefinierten Images.