Jetpack

Jetpack ist auf jedem Knoten eines Clusters erforderlich. Es wird automatisch von Azure CycleCloud auf jedem virtuellen Computer installiert, der bereitgestellt wird, um zu einem Knoten in einem Cluster zu werden. Jetpack bietet drei Standard Funktionen:

  • Knotenkonfiguration : CycleCloud verwendet Skripts und Chef , um die Konfiguration einer bereitgestellten VM in einem Arbeitsclusterknoten zu automatisieren. Ein Chef-Client sowie die erforderlichen Ressourcen für die Konfiguration des virtuellen Computers sind in Jetpack eingebettet.
  • Verteilte Synchronisierung : Jetpack verwaltet die Kommunikation zwischen dem Knoten und dem CycleCloud-Anwendungsserver. Dadurch kann CycleCloud die status der Bereitstellungs-VMs überwachen und die Orchestrierung mehrerer Knoten im Cluster synchronisieren.
  • HealthCheck : Jetpack verwendet HealthCheck , um die Integrität von VMs zu ermitteln, damit fehlerhafte VMs beendet werden können.

Jetpack-Installation

Das Jetpack-Installationsprogramm wird in Ihrem Azure Storage-Konto zwischengespeichert, wenn Sie einen Cluster mit CycleCloud zum ersten Mal starten. Wenn Cluster-VMs bereitgestellt werden, wird im Rahmen des Startvorgangs eine benutzerdefinierte Skripterweiterung ausgeführt, die das Jetpack-Installationsprogramm aus Ihrem Azure Storage-Cache herunterlädt und dann auf dem virtuellen Computer installiert.

Das Jetpack-Installationsprogramm:

  • Entpackt die Jetpack-Dateien in eine einzelne Verzeichnisstruktur:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Erstellt Systeminitstartskripts, die einen virtuellen Computer als Clusterknoten konfigurieren
  • Installiert den HealthCheck-Dienst
  • Installiert das Jetpack-Befehlszeilentool für Folgendes:
    • Windows : C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Erstellt udev-Regeln unter Linux
  • Legt die Umgebungsvariable fest CYCLECLOUD_HOME

Hinweis

Wenn Jetpack für das Image vorinstalliert wurde, wird Jetpack von der benutzerdefinierten Skripterweiterung nicht erneut installiert. Stattdessen wird ein Initialisierungsschritt ausgeführt, der die Verbindung des Knotens mit CycleCloud überprüft und die Dienste und jetpackd startet, healthcheck bevor sie mit der Konfiguration des Knotens fortfahren.

Jetpack-Unterverzeichnisse

Verzeichnis BESCHREIBUNG
bin Nützliche Binärdateien und Skripts.
config Benutzerdefinierte und clusterdefinierte Konfigurationsdateien und Skripts.
logs Protokolle, die durch das Verknüpfen eines Clusters und die Konvergenz des Knotens generiert werden, sind besonders interessant die chef-client.log , die die Ergebnisse aus konvergierten Chef-Rezepten enthält.
run Vom System generierte Laufzeitdateien. Es wird nicht empfohlen, direkt auf diese Dateien zuzugreifen.
system Interne Dateien. Es wird nicht empfohlen, Dateien in diesem Verzeichnis direkt zu verwenden, da sie sich von Release zu Release erheblich ändern können.

HealthCheck

Der HealthCheck-Dienst führt benutzerdefinierte Skripts aus, um die aktuelle Tragfähigkeit eines virtuellen Computers als Clusterknoten zu bestimmen. Weitere Informationen finden Sie in der HealthCheck-Dokumentation .

Jetpack-Befehlszeilentool

Das Jetpack-Befehlszeilentool bietet eine nützliche Reihe von Unterbefehlen zum Bearbeiten der aktuellen VM und zur Interaktion mit Azure CycleCloud.

Get-Help BESCHREIBUNG
jetpack autoscale Automatische Skalierung des Clusters, zu dem dieser Knoten gehört.
jetpack config Rufen Sie einen Konfigurationswert ab.
jetpack converge Führen Sie ein Chef-Konvergieren aus.
jetpack download Laden Sie eine Blobressource aus einem Projekt in Azure Storage herunter.
jetpack keepalive Verzögert die Systembeendigung durch den HealthCheck-Dienst.
jetpack log Protokollieren Sie eine Nachricht auf der Benutzeroberfläche des CycleCloud-Clusters.
jetpack run_on_shutdown Fügen Sie ein Skript hinzu, das vor der Knotenbeendigung aufgerufen werden soll.
jetpack send Senden Sie eine beliebige AMQP-Nachricht an den CycleCloud-Server.
jetpack shutdown Fordern Sie das Herunterfahren des virtuellen Computers durch CycleCloud an.
jetpack test Führen Sie Tests aus, die Projekten zugeordnet sind, die dem virtuellen Computer zugewiesen sind.
jetpack users Listet Benutzer auf, die CycleCloud auf dieser VM verwalten wird.
jetpack report_issue Archivieren von Protokolldateien vom virtuellen Computer in Azure Storage

Jetpack Autoskalierung

jetpack autoscale legt die Ziele für die automatische Skalierung für den Cluster fest, zu dem der Knoten gehört. Cluster können nach Kernen, instance Anzahl oder benutzerdefinierten Definitionen skaliert werden.

So skalieren Sie auf 100 Kerne:

jetpack autoscale --corecount=100

So skalieren Sie das Nodearray "gpu" auf 5 Knoten:

jetpack autoscale --instancecount 5 --name=gpu

Zum Anpassen der automatischen Skalierung muss eine JSON-Datei auf den Datenträger geschrieben werden, der die Nodearray-Definition enthält, die Sie skalieren möchten. So skalieren Sie um 100 Kerne:

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

jetpack-Konfiguration

jetpack config ruft Informationen ab, die von CycleCloud an einen virtuellen Computer übergeben werden. Es macht Folgendes verfügbar:

  • alle Systemeigenschaften, die über Ohai zur Verfügung gestellt werden
  • eine Teilmenge der Azure-Metadaten des virtuellen Computers
  • Informationen zum übergeordneten CycleCloud-Cluster.

Jetpack-Konvergieren

jetpack converge lädt alle CycleCloud-Projekte herunter, die dem Knoten zugeordnet sind, und startet einen Chef-Konvergierprozess, der alle Chef-Rezepte und Clusterinitskripts für den Knoten ausführt.

Jetpack-Download

jetpack download lädt ein Blob herunter, das mit einem Projekt auf den Knoten hochgeladen wurde. Sie müssen das Projekt angeben, zu dem das Blob gehört.

So laden Sie das Blob big-file.zip herunter, das als Teil des Projekts in das example-project aktuelle Verzeichnis hochgeladen wurde:

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive interagiert mit dem HealthCheck-Dienst, um die Beendigung des virtuellen Computers aufgrund eines Fehlerhaften HealthCheck-Fehlers zu verzögern. Die Kündigung kann für einen bestimmten Zeitraum oder auf unbestimmte Zeit verzögert werden. Standardmäßig wird die Kündigung um eine Stunde verzögert.

So verzögern Sie die Systembeendigung um eine Stunde:

jetpack keepalive

So verzögern Sie die Systembeendigung um sechs Stunden:

jetpack keepalive 6h

So deaktivieren Sie den HealthCheck-Dienst vollständig, d. h. verzögern Sie die Beendigung auf unbestimmte Zeit:

jetpack keepalive forever

Hinweis

Nur die forever Option ist für HealthCheck auf Windows-VMs verfügbar.

Jetpack-Protokoll

jetpack log sendet eine Protokollnachricht zurück an CycleCloud. Die Meldung wird im Anwendungsserverprotokoll (in der Regel /opt/cycle_server/cycle_server.log), im Standard Ereignisprotokoll und auf der Seite Cluster UI angezeigt.

Jede Nachricht hat zwei Eigenschaften: Ebene und Priorität.

Die level-Eigenschaft gibt den Typ der Nachricht an. Gültige Ebenen sind "info", "warn" und "error". Die Ebene gibt nicht die Bedeutung einer bestimmten Nachricht an. Beispielsweise sind einige Fehler trivial und einige Informationsmeldungen kritisch.

Priorität gibt die Wichtigkeit der Nachricht an. Gültige Prioritätswerte sind "niedrig", "mittel" und "hoch". Nur Nachrichten mit einer Priorität von mittlerer oder höherer Priorität werden auf der Seite clusterbenutzeroberfläche angezeigt, um zu vermeiden, dass die Seite mit Nachrichten mit niedriger Priorität überflutet wird.

So senden Sie eine Informationsprotokollmeldung, die auf der Seite Cluster-Benutzeroberfläche angezeigt wird:

jetpack log 'system is now ready'

So senden Sie eine Protokollmeldung mit niedriger Priorität, die nicht auf der Seite Cluster-Benutzeroberfläche angezeigt werden soll:

jetpack log 'system is now ready' --priority low

Standardmäßig haben Nachrichten mit einer Fehlerstufe eine hohe Priorität. So senden Sie eine Fehlermeldung:

jetpack log 'the machine cannot process jobs' --level error

So senden Sie eine triviale Fehlermeldung:

jetpack log 'the machine cannot process jobs' --level error --priority low

Jetpack-run_on_shutdown

jetpack run_on_shutdown registriert ein Bash-Skript, das vor der Knotenbeendigung aufgerufen werden soll.

Der Befehl verwendet den absoluten Pfad zum Skript als Argument.

Wenn der Knoten von Azure beendet wird und Beendigungsbenachrichtigungen aktiviert sind, wird Jetpack über die Beendigung benachrichtigt und versucht, das Skript auszuführen, bevor der Knoten heruntergefahren wird.

Knoten müssenBeendigungsbenachrichtigungen aktivieren, um zu aktivieren run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Dieser Befehl wird für Windows-Knoten nicht unterstützt.

Jetpack senden

jetpack send sendet eine AMQP-Nachricht an CycleCloud. Es handelt sich um einen erweiterten Befehl, der nicht empfohlen wird, es sei denn, Sie entwickeln Plug-Ins für CycleCloud.

Sie können beliebige Zeichenfolgen oder Dateien mit angegebenen AMQP-Routingschlüsseln senden.

Jetpack-Herunterfahren

jetpack shutdown fordert an, dass CycleCloud den Knoten beendet. Optionen können an den Befehl übergeben werden, um den Grund für die Anforderung zum Herunterfahren (im Leerlauf im Vergleich zu fehlerhaft) sowie das Beenden des Knotens (Beenden oder Aufheben der Zuordnung) anzugeben.

So fahren Sie einen fehlerhaften Knoten herunter:

jetpack shutdown --unhealthy

So heben Sie die Zuordnung des Knotens auf:

jetpack shutdown --deallocate

Jetpack-Test

jetpack test führt alle Tests aus, die in Projekten enthalten sind, die dem Knoten zugewiesen sind, und gibt die Ergebnisse in stdout aus.

Jetpack-Benutzer

jetpack users listet die Benutzer auf, die CycleCloud auf dem Knoten verwalten wird. Diese Liste kann sich im Laufe der Zeit ändern, wenn Benutzer dem Cluster zugewiesen und entfernt werden.

So erhalten Sie einen benutzerfreundlichen Ausdruck der Benutzer, die dem Knoten zugewiesen sind:

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

So rufen Sie eine skriptfreundliche JSON-Ausgabe ab:

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue archiviert Protokollverzeichnisse vom virtuellen Computer, wobei sie optional in Azure Storage hochgeladen und eine signierte URL für den externen Zugriff erstellt werden. Protokolle werden in das Azure Storage-Konto hochgeladen, auf das vom Schließfach des Knotens verwiesen wird. Beim Signieren eines Archivs in Azure Storage hat das resultierende SAS-Token 30 Tage lang schreibgeschützten Zugriff.

Syntax:

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

So archivieren, laden Sie die Jetpack-Standardprotokolle hoch und signieren sie ($JETPACK_HOME/logs):

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

Zum Archivieren laden Sie ein protokollfremdes Verzeichnis hoch, ohne es zu signieren:

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

So archivieren Sie einfach Protokolle auf der lokalen VM:

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip