Freigeben über


Jetpack

Sie benötigen Jetpack auf jedem Knoten eines Clusters. Azure CycleCloud installiert Jetpack automatisch auf jedem virtuellen Computer, den Sie bereitstellen, um zu einem Knoten in einem Cluster zu werden. Jetpack bietet drei Hauptfunktionen:

  • Node-Konfiguration – CycleCloud verwendet Skripts und Chef , um die Konfiguration einer bereitgestellten VM in einem Arbeitsclusterknoten zu automatisieren. Ein Chefclient und die erforderlichen Ressourcen für die Konfiguration der VM sind in Jetpack eingebettet.
  • Verteilte Synchronisierung – Jetpack verwaltet die Kommunikation zwischen dem Knoten und dem CycleCloud-Anwendungsserver. Diese Verwaltung ermöglicht CycleCloud, den Status der Bereitstellungs-VMs zu überwachen und die Orchestrierung mehrerer Knoten im Cluster zu 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 eine benutzerdefinierte Skripterweiterung als Teil des Startvorgangs ausgeführt. Diese Erweiterung lädt das Jetpack-Installationsprogramm aus Ihrem Azure Storage-Cache herunter und installiert es dann auf dem virtuellen Computer.

Das Jetpack-Installationsprogramm:

  • Entpackt die Jetpack-Dateien in eine einzelne Verzeichnisstruktur:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Erstellt Systeminit-Startskripts, 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 auf dem Image vorinstalliert ist, installiert die benutzerdefinierte Skripterweiterung Jetpack nicht neu. Stattdessen wird ein Initialisierungsschritt ausgeführt, der die Verbindung des Knotens mit CycleCloud überprüft und die Dienste healthcheck und jetpackd startet, bevor der Knoten konfiguriert wird.

Jetpack-Unterverzeichnisse

Verzeichnis BESCHREIBUNG
bin Nützliche Binärdateien und Skripts.
config Benutzerdefinierte und clusterdefinierte Konfigurationsdateien und -skripts.
logs Protokolle, die erzeugt werden, indem sie einem Cluster beitreten und den Knoten verbinden. Von besonderem Interesse ist jetpack.log, das die Ergebnisse des konvergenten Prozesses 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 Rentabilität eines virtuellen Computers als Clusterknoten zu ermitteln. Weitere Informationen finden Sie in der HealthCheck-Dokumentation .

Jetpack-Befehlszeilentool

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

Befehl BESCHREIBUNG
jetpack autoscale Autoskalieren des Clusters, zu dem dieser Knoten gehört.
jetpack config Dient zum Abrufen eines Konfigurationswerts.
jetpack converge Führen Sie eine "Konvergenz" aus, um die Knotenkonfiguration zu aktualisieren.
jetpack download Laden Sie eine BLOB-Ressource aus einem Projekt in Azure Storage herunter.
jetpack keepalive Verzögern Sie die Systembeendigung über den HealthCheck-Dienst.
jetpack log Protokollieren Sie eine Nachricht auf der CycleCloud-Clusterbenutzeroberfläche.
jetpack run_on_shutdown Fügen Sie ein Skript hinzu, das vor dem Beenden des Knotens aufgerufen werden soll.
jetpack send Senden Sie eine beliebige AMQP-Nachricht an den CycleCloud-Server.
jetpack shutdown Fordern Sie das Herunterfahren des virtuellen Computers von CycleCloud an.
jetpack test Führen Sie Tests aus, die projekten zugeordnet sind, die der VM zugewiesen sind.
jetpack users Auflisten von Benutzern, die CycleCloud auf dieser VM verwaltet.
jetpack report_issue Archiviert Protokolldateien von vm in Azure Storage

jetpack Automatische Skalierung

Verwenden Sie jetpack autoscale, um die Autoskalierungsziele für den Cluster festzulegen, zu dem der Knoten gehört. Sie können Cluster nach Kernen, Instanzenanzahl oder benutzerdefinierten Definitionen skalieren.

So skalieren Sie auf 100 Kerne:

jetpack autoscale --corecount=100

So skalieren Sie das Knotenarray "gpu" auf fünf Knoten:

jetpack autoscale --instancecount 5 --name=gpu

Um die automatische Skalierung anzupassen, schreiben Sie eine JSON-Datei auf den Datenträger, die die Knotenarraydefinition enthält, die Sie skalieren möchten. Um mit 100 Kernen zu skalieren:

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

Jetpack-Konfiguration

Verwenden Sie jetpack config zum Abrufen von Informationen, die CycleCloud an einen virtuellen Computer übergibt. Es macht Folgendes verfügbar:

  • alle über Ohai zur Verfügung gestellten Systemeigenschaften
  • eine Teilmenge der Azure-Metadaten des virtuellen Computers
  • Informationen zum übergeordneten CycleCloud-Cluster

jetpack converge

jetpack converge befehl lädt alle CycleCloud-Projekte herunter, die dem Knoten zugeordnet sind, und startet einen Konvergenten Prozess, der die Cluster-init-Skripts für den Knoten ausführt.

Jetpack herunterladen

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

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

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

jetpack keepalive

jetpack keepalive der Befehl interagiert mit dem HealthCheck-Dienst, um die Beendigung des virtuellen Computers aufgrund eines fehlerhaften HealthCheck-Vorgangs zu verzögern. Sie können die Verzögerung auf einen festen Zeitraum oder unbegrenzt festlegen. Standardmäßig verzögert der Befehl die Beendigung um eine Stunde.

So verzögern Sie die Systemendung 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. a. um die Beendigung auf unbestimmte Zeit zu verzögern:

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), dem Hauptereignisprotokoll und der Cluster-UI-Seite angezeigt.

Jede Nachricht verfügt über zwei Eigenschaften: level und priority.

Die level Eigenschaft gibt den Nachrichtentyp an. Gültige Ebenen sind info, warnund error. Die Ebene gibt nicht die Wichtigkeit einer bestimmten Nachricht an. Einige Fehler sind z. B. trivial; manche Informationsnachrichten sind kritisch.

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

Um eine Informationsprotokollnachricht zu senden, die auf der Benutzeroberfläche der Cluster-Seite angezeigt wird:

jetpack log 'system is now ready'

So senden Sie eine Protokollnachricht mit niedriger Priorität, die auf der Cluster-UI-Seite nicht 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

Der jetpack run_on_shutdown Befehl registriert ein Bash-Skript, das vor dem Beenden des Knotens aufgerufen werden soll.

Der Befehl verwendet den absoluten Pfad zum Skript als Argument.

Wenn Azure den Knoten beendet und Benachrichtigungen über beendigungen aktiviert sind, empfängt Jetpack die Benachrichtigung über die Beendigung. Es versucht, das Skript auszuführen, bevor der Knoten heruntergefahren wird.

Knoten müssenBeendigungsbenachrichtigungen aktivieren, damit run_on_shutdown aktiviert werden kann.

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, den wir nicht empfehlen, es sei denn, Sie entwickeln Plug-Ins für CycleCloud.

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

Jetpack Abschalten

Verwenden Sie jetpack shutdown, um anzufordern, dass CycleCloud den Knoten terminiert. Sie können Optionen an den Befehl übergeben, um den Grund für die Herunterfahren-Anforderung (im Leerlauf oder ungesund) anzugeben und den Knoten zu beenden (beenden vs deallocate).

Verwenden Sie zum Herunterfahren eines fehlerhaften Knotens den folgenden Befehl:

jetpack shutdown --unhealthy

Um den Knoten freizugeben:

jetpack shutdown --deallocate

Jetpack-Test

Verwenden Sie jetpack test, um alle Tests auszuführen, die in Projekten enthalten sind, die dem Knoten zugewiesen sind. Mit dem Befehl werden die Ergebnisse in "stdout" gedruckt.

Jetpack-Benutzer

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

So rufen Sie einen benutzerfreundlichen Ausdruck der Benutzer ab, 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 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 Problem melden

jetpack report_issue archiviert Protokollverzeichnisse von der VM, optional hochladen sie in Azure Storage und erstellen eine signierte URL für den externen Zugriff. Der Befehl lädt Protokolle in das Azure Storage-Konto hoch, auf das vom Schließfach des Knotens verwiesen wird. Wenn Sie ein Archiv in Azure Storage signieren, hat das resultierende SAS-Token 30 Tage lang schreibgeschützten Zugriff.

Verwendung:

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

Zum Archivieren, Hochladen und Signieren der Jetpack-Standardprotokolle ($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, Hochladen, aber nicht Signieren eines nicht standardmäßigen Protokollverzeichnisses:

$ 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 Protokolle auf dem lokalen virtuellen Computer:

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