Jetpack

Jetpack is vereist op elk knooppunt van een cluster. Het wordt automatisch geïnstalleerd door Azure CycleCloud op elke virtuele machine die is ingericht om een knooppunt in een cluster te worden. Jetpack biedt drie hoofdfuncties:

  • Knooppuntconfiguratie : CycleCloud gebruikt scripts en Chef om de configuratie van een ingerichte VM in een werkend clusterknooppunt te automatiseren. Een Chef-client en de benodigde resources voor de configuratie van de VM zijn ingesloten in Jetpack.
  • Gedistribueerde synchronisatie : Jetpack beheert de communicatie tussen het knooppunt en de CycleCloud-toepassingsserver. Hierdoor kan CycleCloud de status van de inrichtings-VM's bewaken en de indeling van meerdere knooppunten in het cluster synchroniseren.
  • HealthCheck : Jetpack gebruikt HealthCheck om de status van VM's te bepalen, zodat beschadigde VM's kunnen worden beëindigd.

Jetpack-installatie

Het installatieprogramma van Jetpack wordt in de cache opgeslagen in uw Azure Storage-account wanneer u voor het eerst een cluster start met Behulp van CycleCloud. Wanneer cluster-VM's worden ingericht, wordt een aangepaste scriptextensie uitgevoerd als onderdeel van het opstartproces waarmee het Jetpack-installatieprogramma wordt gedownload uit uw Azure Storage-cache en deze vervolgens op de VIRTUELE machine wordt geïnstalleerd.

Het Jetpack-installatieprogramma:

  • Pak de Jetpack-bestanden uit naar één mapstructuur:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Hiermee worden systeem-init-opstartscripts gemaakt waarmee een VM als clusterknooppunt wordt geconfigureerd
  • Installeert de HealthCheck-service
  • Installeert het jetpack-opdrachtregelprogramma voor:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Udev-regels maken in Linux
  • Hiermee stelt u de omgevingsvariabele in CYCLECLOUD_HOME

Notitie

Als Jetpack vooraf is geïnstalleerd op de installatiekopieën, wordt Jetpack niet opnieuw geïnstalleerd met de aangepaste scriptextensie. In plaats daarvan wordt een initialisatiestap uitgevoerd waarmee de verbinding van het knooppunt met CycleCloud wordt gevalideerd en de healthcheck services en jetpackd worden gestart voordat u doorgaat met het configureren van het knooppunt.

Jetpack-submappen

Directory Description
bin Nuttige binaire bestanden en scripts.
config Door de gebruiker gedefinieerde en door het cluster gedefinieerde configuratiebestanden en scripts.
logs Logboeken die worden gegenereerd door het samenvoegen van een cluster en het samenvoegen van het knooppunt, zijn van bijzonder belang de chef-client.log die de resultaten van het samenvoegen van Chef-recepten bevat.
run Runtimebestanden die door het systeem worden gegenereerd. We raden u niet aan om rechtstreeks toegang te krijgen tot deze bestanden.
system Interne bestanden. We raden u niet aan bestanden in deze map rechtstreeks te gebruiken, omdat deze aanzienlijk kunnen veranderen van release naar release.

Statuscontrole

De HealthCheck-service voert door de gebruiker gedefinieerde scripts uit om de huidige levensvatbaarheid van een VIRTUELE machine als clusterknooppunt te bepalen. Raadpleeg de HealthCheck-documentatie voor meer informatie.

Jetpack-opdrachtregelprogramma

Het jetpack-opdrachtregelprogramma biedt een handige set subopdrachten voor het bewerken van de huidige VM en interactie met Azure CycleCloud.

Opdracht Beschrijving
jetpack autoscale Automatisch schalen van het cluster waartoe dit knooppunt behoort.
jetpack config Haal een configuratiewaarde op.
jetpack converge Een Chef-converge uitvoeren.
jetpack download Download een blobresource uit een project in Azure Storage.
jetpack keepalive Vertraging van systeembeëindiging door de HealthCheck-service.
jetpack log Meld een bericht aan bij de gebruikersinterface van het CycleCloud-cluster.
jetpack run_on_shutdown Voeg een script toe dat moet worden aangeroepen voordat het knooppunt wordt beëindigd.
jetpack send Verzend een willekeurig AMQP-bericht naar de CycleCloud-server.
jetpack shutdown Vraag het afsluiten van de VM aan via CycleCloud.
jetpack test Voer tests uit die zijn gekoppeld aan projecten die zijn toegewezen aan de VM.
jetpack users Maak een lijst met gebruikers die door CycleCloud worden beheerd op deze VM.
jetpack report_issue Archieflogboekbestanden van VM naar Azure Storage

automatische schaalaanpassing van jetpack

jetpack autoscale stelt de doelen voor automatisch schalen in voor het cluster waartoe het knooppunt behoort. Clusters kunnen worden geschaald op basis van kernen, aantal exemplaren of aangepaste definities.

Schalen naar 100 kernen:

jetpack autoscale --corecount=100

De gpu-knooppuntarray schalen naar 5 knooppunten:

jetpack autoscale --instancecount 5 --name=gpu

Als u automatische schaalaanpassing wilt aanpassen, moet een JSON-bestand naar de schijf worden geschreven met de knooppuntmaarray-definitie die u wilt schalen. Schalen met 100 kernen:

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

jetpack-configuratie

jetpack config haalt informatie op die door CycleCloud is doorgegeven aan een VIRTUELE machine. Het volgende wordt weergegeven:

  • alle systeemeigenschappen die beschikbaar worden gesteld via Ohai
  • een subset van de Azure-metagegevens van de VM
  • informatie over het bovenliggende CycleCloud-cluster.

jetpack converge

jetpack converge downloadt alle CycleCloud-projecten die zijn gekoppeld aan het knooppunt en start een Chef-converge-proces waarmee alle Chef-recepten en cluster-init-scripts voor het knooppunt worden uitgevoerd.

jetpack downloaden

jetpack download downloadt een blob die is geüpload met een project naar het knooppunt. U moet het project opgeven waartoe de blob behoort.

De blob-big-file.zip die als onderdeel van het example-project project is geüpload naar de huidige map downloaden:

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

jetpack keepalive

jetpack keepalive communiceert met de HealthCheck-service om de beëindiging van de VM te vertragen vanwege een mislukte HealthCheck. Beëindiging kan worden uitgesteld voor een vaste periode of voor onbepaalde tijd. De beëindiging wordt standaard één uur uitgesteld.

Systeembeëindiging met één uur uitstellen:

jetpack keepalive

Systeembeëindiging met zes uur uitstellen:

jetpack keepalive 6h

De HealthCheck-service volledig uitschakelen, d.w.w.: beëindiging voor onbepaalde tijd uitstellen:

jetpack keepalive forever

Notitie

Alleen de forever optie is beschikbaar voor Statuscontrole op Windows-VM's

jetpack-logboek

jetpack log stuurt een logboekbericht terug naar CycleCloud. Het bericht wordt weergegeven in het toepassingsserverlogboek (meestal /opt/cycle_server/cycle_server.log), het hoofd gebeurtenislogboek en de pagina Cluster UI.

Elk bericht heeft twee eigenschappen: niveau en prioriteit.

De eigenschap niveau geeft het type bericht aan. Geldige niveaus zijn 'info', 'waarschuwen' en 'fout'. Het niveau geeft niet het belang van een bepaald bericht aan. Sommige fouten zijn bijvoorbeeld triviaal en sommige informatieve berichten zijn essentieel.

Prioriteit geeft het belang van het bericht aan. Geldige prioriteitswaarden zijn 'laag', 'gemiddeld' en 'hoog'. Alleen berichten met een prioriteit van gemiddeld of hoger worden weergegeven op de pagina Gebruikersinterface van het cluster om te voorkomen dat de pagina wordt overspoeld met berichten met een lage prioriteit.

Ga als volgt te werk om een informatielogboekbericht te verzenden dat wordt weergegeven op de pagina Gebruikersinterface van het cluster:

jetpack log 'system is now ready'

Ga als volgt te werk om een logboekbericht met lage prioriteit te verzenden dat u niet wilt weergeven op de pagina Gebruikersinterface van het cluster:

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

Standaard hebben berichten met een foutniveau een hoge prioriteit. Een foutbericht verzenden:

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

Een triviaal foutbericht verzenden:

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

jetpack run_on_shutdown

jetpack run_on_shutdown registreert een bash-script dat moet worden aangeroepen voordat het knooppunt wordt beëindigd.

De opdracht gebruikt het absolute pad naar het script als argument.

Wanneer het knooppunt wordt beëindigd door Azure en beëindigingsmeldingen zijn ingeschakeld, wordt Jetpack op de hoogte gesteld van de beëindiging en wordt geprobeerd het script uit te voeren voordat het knooppunt wordt afgesloten.

Knooppunten moetenmeldingen over beëindiging inschakelen om in te schakelen run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Deze opdracht wordt niet ondersteund voor Windows-knooppunten.

jetpack verzenden

jetpack send verzendt een AMQP-bericht naar CycleCloud. Het is een geavanceerde opdracht die niet wordt aanbevolen, tenzij u invoegtoepassingen voor CycleCloud ontwikkelt.

U kunt willekeurige tekenreeksen of bestanden verzenden met opgegeven AMQP-routeringssleutels.

jetpack afsluiten

jetpack shutdown vraagt dat CycleCloud het knooppunt beëindigt. Opties kunnen worden doorgegeven aan de opdracht om de reden op te geven voor de afsluitaanvraag (niet-actief versus beschadigd) en hoe het knooppunt moet worden beëindigd (beëindigen versus toewijzing ongedaan maken).

Een beschadigd knooppunt afsluiten:

jetpack shutdown --unhealthy

De toewijzing van het knooppunt ongedaan maken:

jetpack shutdown --deallocate

jetpack-test

jetpack test voert alle tests uit die zijn opgenomen in projecten die zijn toegewezen aan het knooppunt en drukt de resultaten af op stdout.

jetpack-gebruikers

jetpack users geeft een lijst weer van de gebruikers die CycleCloud beheert op het knooppunt. Deze lijst kan na verloop van tijd veranderen als gebruikers worden toegewezen en verwijderd aan het cluster.

Een gebruiksvriendelijke afdruk van de gebruikers die zijn toegewezen aan het knooppunt:

$ jetpack users

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

Scriptvriendelijke JSON-uitvoer ophalen:

$ 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 archiveert logboekmappen van de VM, uploadt deze desgewenst naar Azure Storage en maakt een ondertekende URL voor externe toegang. Logboeken worden geüpload naar het Azure Storage-account waarnaar wordt verwezen door de Locker van het knooppunt. Wanneer u een archief ondertekent in Azure Storage, heeft het resulterende SAS-token gedurende 30 dagen alleen-lezentoegang .

Gebruik:

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

Als u wilt archiveren, uploadt en ondertekent u de standaard Jetpack-logboeken ($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

Als u wilt archiveren, uploadt u een niet-standaardlogboekmap, maar ondertekent u deze niet:

$ 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

Ga als volgende te werk om logboeken op de lokale VM te archiveren:

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