Jetpack

Jetpack krävs på varje nod i ett kluster. Den installeras automatiskt av Azure CycleCloud på varje virtuell dator som etableras för att bli en nod i ett kluster. Jetpack har tre huvudfunktioner:

  • Nodkonfiguration – CycleCloud använder skript och Chef för att automatisera konfigurationen av en etablerad virtuell dator till en fungerande klusternod. En Chef-klient samt nödvändiga resurser för konfigurationen av den virtuella datorn bäddas in i Jetpack.
  • Distribuerad synkronisering – Jetpack hanterar kommunikationen mellan noden och CycleCloud-programservern. Detta gör att CycleCloud kan övervaka statusen för de virtuella etableringsdatorerna och synkronisera orkestreringen av flera noder i klustret.
  • HealthCheck – Jetpack använder HealthCheck för att fastställa hälsotillståndet för virtuella datorer så att felaktiga virtuella datorer kan avslutas.

Jetpack-installation

Jetpack-installationsprogrammet cachelagras i ditt Azure Storage-konto när du först startar ett kluster med CycleCloud. När virtuella klusterdatorer etableras körs ett tillägg för anpassat skript som en del av startprocessen som laddar ned Jetpack-installationsprogrammet från Azure Storage-cachen och sedan installerar det på den virtuella datorn.

Jetpack-installationsprogrammet:

  • Packar upp Jetpack-filerna till ett enda katalogträd:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Skapar systeminit-startskript som konfigurerar en virtuell dator som en klusternod
  • Installerar HealthCheck-tjänsten
  • Installerar Jetpack-kommandoradsverktyget för att:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Skapar udev-regler i Linux
  • Anger miljövariabeln CYCLECLOUD_HOME

Anteckning

Om Jetpack har förinstallerats på avbildningeninstallerar inte det anpassade skripttillägget Jetpack igen. I stället körs ett initieringssteg som verifierar nodens anslutning till CycleCloud och startar healthcheck tjänsterna och jetpackd innan noden konfigureras.

Jetpack-underkataloger

Katalog Description
bin Användbara binärfiler och skript.
config Användardefinierade och klusterdefinierade konfigurationsfiler och skript.
logs Loggar som genereras genom att ansluta till ett kluster och konvergera noden, av särskilt intresse är chef-client.log som innehåller resultatet från konvergerande Chef-recept.
run Körningsfiler som genereras av systemet. Vi rekommenderar inte direkt åtkomst till dessa filer.
system Interna filer. Vi rekommenderar inte att du använder några filer direkt i den här katalogen eftersom de kan ändras avsevärt från version till version.

Hälsokontroll

HealthCheck-tjänsten kör användardefinierade skript för att fastställa en virtuell dators aktuella livskraft som en klusternod. Mer information finns i HealthCheck-dokumentationen .

Kommandoradsverktyg för Jetpack

Kommandoradsverktyget Jetpack innehåller en användbar uppsättning underkommandon för att manipulera den aktuella virtuella datorn och interagera med Azure CycleCloud.

Kommando Beskrivning
jetpack autoscale Skala klustret automatiskt som den här noden tillhör.
jetpack config Hämta ett konfigurationsvärde.
jetpack converge Kör en Chef-konvergering.
jetpack download Ladda ned en blobresurs från ett projekt i Azure Storage.
jetpack keepalive Fördröj systemavslutning av HealthCheck-tjänsten.
jetpack log Logga ett meddelande till CycleCloud-klustrets användargränssnitt.
jetpack run_on_shutdown Lägg till ett skript som ska anropas innan noden avslutas.
jetpack send Skicka ett godtyckligt AMQP-meddelande till CycleCloud-servern.
jetpack shutdown Begär att den virtuella datorn stängs av av CycleCloud.
jetpack test Kör tester som är associerade med projekt som tilldelats den virtuella datorn.
jetpack users Visa en lista över användare som CycleCloud hanterar på den här virtuella datorn.
jetpack report_issue Arkiverar loggfiler från en virtuell dator till Azure Storage

jetpack autoscale

jetpack autoscale anger autoskalningsmålen för klustret som noden tillhör. Kluster kan skalas efter kärnor, antal instanser eller anpassade definitioner.

Skala till 100 kärnor:

jetpack autoscale --corecount=100

Så här skalar du nodmatrisen "gpu" till 5 noder:

jetpack autoscale --instancecount 5 --name=gpu

Om du vill anpassa autoskalning måste en json-fil skrivas till en disk som innehåller den nodearray-definition som du vill skala. Skala med 100 kärnor:

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

jetpack-konfiguration

jetpack config hämtar information som skickas till en virtuell dator av CycleCloud. Den exponerar:

  • alla systemegenskaper som gjorts tillgängliga via Ohai
  • en delmängd av den virtuella datorns Azure-metadata
  • information om det överordnade CycleCloud-klustret.

jetpack konvergera

jetpack converge laddar ned alla CycleCloud-projekt som är associerade med noden och startar en Chef-konvergeringsprocess som kör alla Chef-recept och kluster-init-skript för noden.

jetpack download

jetpack download laddar ned en blob som laddades upp med ett projekt till noden. Du måste ange det projekt som bloben tillhör.

Så här laddar du ned bloben big-file.zip som laddades upp som en del av example-project projektet till den aktuella katalogen:

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

jetpack keepalive

jetpack keepalive interagerar med HealthCheck-tjänsten för att fördröja avslutningen av den virtuella datorn på grund av en misslyckad HealthCheck. Uppsägningen kan fördröjas under en fast period eller på obestämd tid. Som standard fördröjs avslutningen i en timme.

Så här fördröjer du systemavslut med en timme:

jetpack keepalive

Så här fördröjer du systemavslut med sex timmar:

jetpack keepalive 6h

Om du vill inaktivera tjänsten HealthCheck helt, d.v.s. fördröj avslutning på obestämd tid:

jetpack keepalive forever

Anteckning

forever Endast alternativet är tillgängligt för HealthCheck på virtuella Windows-datorer

jetpack-logg

jetpack log skickar ett loggmeddelande tillbaka till CycleCloud. Meddelandet visas i programserverloggen (vanligtvis /opt/cycle_server/cycle_server.log), huvudhändelseloggen och sidan Klustergränssnitt.

Varje meddelande har två egenskaper: nivå och prioritet.

Nivåegenskapen anger typen av meddelande. Giltiga nivåer är "info", "warn" och "error". Nivån anger inte vikten av ett visst meddelande – till exempel är vissa fel triviala och vissa informationsmeddelanden kritiska.

Prioritet anger meddelandets betydelse. Giltiga prioritetsvärden är "low", "medium" och "high". Endast meddelanden med en prioritet på medelhög eller högre visas på sidan Klustergränssnitt för att undvika att överbelasta sidan med meddelanden med låg prioritet.

Så här skickar du ett informationsloggmeddelande som visas på sidan Klustergränssnitt:

jetpack log 'system is now ready'

Så här skickar du ett loggmeddelande med låg prioritet som du inte vill ska visas på sidan Klustergränssnitt:

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

Som standard har meddelanden med en felnivå hög prioritet. Så här skickar du ett felmeddelande:

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

Så här skickar du ett enkelt felmeddelande:

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

jetpack run_on_shutdown

jetpack run_on_shutdown registrerar ett bash-skript som ska anropas innan noden avslutas.

Kommandot tar den absoluta sökvägen till skriptet som ett argument.

När noden avslutas av Azure, om Avslutningsmeddelanden är aktiverat, meddelas Jetpack om avslutningen och försöker köra skriptet innan noden stängs av.

Noder måste aktivera avslutningsmeddelanden för att aktivera run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Det här kommandot stöds inte för Windows-noder.

jetpack send

jetpack send skickar ett AMQP-meddelande till CycleCloud. Det är ett avancerat kommando som inte rekommenderas om du inte utvecklar plugin-program för CycleCloud.

Du kan skicka godtyckliga strängar eller filer med angivna AMQP-routningsnycklar.

jetpack-avstängning

jetpack shutdown begär att CycleCloud avslutar noden. Alternativ kan skickas till kommandot för att ange orsaken till avstängningsbegäran (inaktiv eller inte felfri) samt hur du avslutar noden (avsluta eller frigöra).

Så här stänger du av en nod med feltillstånd:

jetpack shutdown --unhealthy

Så här frigör du noden:

jetpack shutdown --deallocate

jetpack-test

jetpack test kör alla tester som ingår i projekt som tilldelats noden och skriver ut resultatet till stdout.

jetpack-användare

jetpack users visar en lista över de användare som CycleCloud ska hantera på noden. Den här listan kan ändras med tiden när användare tilldelas och tas bort till klustret.

Så här hämtar du en användarvänlig utskrift av de användare som är tilldelade till noden:

$ jetpack users

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

Så här hämtar du skriptvänliga JSON-utdata:

$ 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 arkiverar loggkataloger från den virtuella datorn, om du vill kan du ladda upp dem till Azure Storage och skapa en signerad URL för extern åtkomst. Loggar laddas upp till Azure Storage-kontot som refereras av nodens Locker. När du signerar ett arkiv i Azure Storage har den resulterande SAS-token skrivskyddad åtkomst i 30 dagar.

Användning:

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

Om du vill arkivera laddar du upp och signerar Standard Jetpack-loggarna ($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

Om du vill arkivera laddar du upp men signerar inte en loggkatalog som inte är standard:

$ 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

Så här arkiverar du loggar på den lokala virtuella datorn:

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