Jetpack

Jetpack è necessario in ogni nodo di un cluster. Viene installato automaticamente da Azure CycleCloud in ogni macchina virtuale di cui viene effettuato il provisioning per diventare un nodo in un cluster. Jetpack offre tre funzioni principali:

  • Configurazione del nodo : CycleCloud usa script e Chef per automatizzare la configurazione di una macchina virtuale di cui è stato effettuato il provisioning in un nodo del cluster funzionante. Un client Chef e le risorse necessarie per la configurazione della macchina virtuale vengono incorporate all'interno di Jetpack.
  • Sincronizzazione distribuita : Jetpack gestisce la comunicazione tra il nodo e il server applicazioni CycleCloud. Ciò consente a CycleCloud di monitorare lo stato delle macchine virtuali di provisioning e sincronizzare l'orchestrazione di più nodi nel cluster.
  • HealthCheck : Jetpack usa HealthCheck per determinare l'integrità delle macchine virtuali in modo che le macchine virtuali non integre possano essere terminate.

Installazione di Jetpack

Il programma di installazione di Jetpack viene memorizzato nella cache nell'account di archiviazione di Azure quando si avvia un cluster usando CycleCloud. Quando viene effettuato il provisioning delle macchine virtuali del cluster, viene eseguita un'estensione di script personalizzata come parte del processo di avvio che scarica il programma di installazione jetpack dalla cache di Archiviazione di Azure e lo installa nella macchina virtuale.

Il programma di installazione di Jetpack:

  • Decomprime i file Jetpack in un singolo albero di directory:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Crea script di avvio init di sistema che configurano una macchina virtuale come nodo del cluster
  • Installa il servizio HealthCheck
  • Installa lo strumento da riga di comando Jetpack per:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Crea regole udev in Linux
  • Imposta la variabile di ambiente CYCLECLOUD_HOME

Nota

Se Jetpack è stato preinstallato nell'immagine, l'estensione dello script personalizzato non installerà nuovamente Jetpack. Verrà invece eseguito un passaggio di inizializzazione che convaliderà la connessione del nodo a CycleCloud e avvierà i healthcheck servizi e jetpackd prima di continuare a configurare il nodo.

Sottodirectory jetpack

Directory Descrizione
bin File binari e script utili.
config File e script di configurazione definiti dall'utente e del cluster.
logs I log generati aggiungendo un cluster e convergendo il nodo, di particolare interesse è il chef-client.log che contiene i risultati delle ricette chef convergenti.
run File di runtime generati dal sistema. Non è consigliabile accedere direttamente a questi file.
system File interni. Non è consigliabile usare direttamente i file in questa directory perché possono cambiare in modo significativo dal rilascio al rilascio.

HealthCheck

Il servizio HealthCheck esegue script definiti dall'utente per determinare la redditività corrente di una macchina virtuale come nodo del cluster. Per altre informazioni, vedere la documentazione di HealthCheck .

Strumento da riga di comando Jetpack

Lo strumento da riga di comando Jetpack fornisce un set utile di sottocomandi per modificare la macchina virtuale corrente e interagire con Azure CycleCloud.

Comando Descrizione
jetpack autoscale Ridimensionare automaticamente il cluster a cui appartiene questo nodo.
jetpack config Recuperare un valore di configurazione.
jetpack converge Eseguire una convergenza chef.
jetpack download Scaricare una risorsa BLOB da un progetto in Archiviazione di Azure.
jetpack keepalive Ritardare la terminazione del sistema dal servizio HealthCheck.
jetpack log Registrare un messaggio nell'interfaccia utente del cluster CycleCloud.
jetpack run_on_shutdown Aggiungere uno script da chiamare prima della terminazione del nodo.
jetpack send Inviare un messaggio AMQP arbitrario al server CycleCloud.
jetpack shutdown Richiedere l'arresto della macchina virtuale da CycleCloud.
jetpack test Eseguire test associati ai progetti assegnati alla macchina virtuale.
jetpack users Elencare gli utenti che CycleCloud gestirà in questa macchina virtuale.
jetpack report_issue Archivia i file di log dalla macchina virtuale ad Archiviazione di Azure

scalabilità automatica di jetpack

jetpack autoscale imposta le destinazioni di scalabilità automatica per il cluster a cui appartiene il nodo. I cluster possono essere ridimensionati in base a core, numero di istanze o definizioni personalizzate.

Per ridimensionare fino a 100 core:

jetpack autoscale --corecount=100

Per ridimensionare l'oggetto nodearray 'gpu' a 5 nodi:

jetpack autoscale --instancecount 5 --name=gpu

Per personalizzare la scalabilità automatica, è necessario scrivere un file JSON su disco contenente la definizione nodearray da ridimensionare. Per ridimensionare di 100 core:

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

configurazione jetpack

jetpack config recupera le informazioni passate in una macchina virtuale da CycleCloud. Espone:

  • tutte le proprietà di sistema rese disponibili tramite Ohai
  • un subset dei metadati di Azure della macchina virtuale
  • informazioni sul cluster CycleCloud padre.

jetpack convergente

jetpack converge scarica tutti i progetti CycleCloud associati al nodo e avvia un processo convergente Chef che esegue tutte le ricette Chef e gli script cluster-init per il nodo.

download jetpack

jetpack download scarica un BLOB caricato con un progetto nel nodo. È necessario specificare il progetto a cui appartiene il BLOB.

Per scaricare la big-file.zip BLOB caricata come parte del example-project progetto nella directory corrente:

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

jetpack keepalive

jetpack keepalive interagisce con il servizio HealthCheck per ritardare la chiusura della macchina virtuale a causa di un errore di HealthCheck. La terminazione può essere ritardata per un periodo fisso o per un periodo illimitato. Per impostazione predefinita, la terminazione viene ritardata per un'ora.

Per ritardare la terminazione del sistema entro un'ora:

jetpack keepalive

Per ritardare la terminazione del sistema entro sei ore:

jetpack keepalive 6h

Per disabilitare completamente il servizio HealthCheck, ad esempio ritardare la terminazione per un periodo illimitato:

jetpack keepalive forever

Nota

Solo l'opzione forever è disponibile per HealthCheck nelle macchine virtuali Windows

log jetpack

jetpack log invia un messaggio di log a CycleCloud. Il messaggio verrà visualizzato nel log del server applicazioni (in genere /opt/cycle_server/cycle_server.log), nel registro eventi principale e nella pagina Dell'interfaccia utente del cluster.

Ogni messaggio ha due proprietà: livello e priorità.

La proprietà level indica il tipo di messaggio. I livelli validi sono "info", "warn" e "error". Il livello non indica l'importanza di un determinato messaggio, ad esempio alcuni errori sono semplici e alcuni messaggi informativi critici.

La priorità indica l'importanza del messaggio. I valori di priorità validi sono "low", "medium" e "high". Nella pagina Interfaccia utente cluster vengono visualizzati solo i messaggi con priorità media o superiore per evitare di inondare la pagina con messaggi con priorità bassa.

Per inviare un messaggio di log informativo che verrà visualizzato nella pagina Dell'interfaccia utente del cluster:

jetpack log 'system is now ready'

Per inviare un messaggio di log con priorità bassa che non si vuole visualizzare nella pagina Interfaccia utente cluster:

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

Per impostazione predefinita, i messaggi con un livello di errore hanno una priorità elevata. Per inviare un messaggio di errore:

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

Per inviare un messaggio di errore semplice:

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

jetpack run_on_shutdown

jetpack run_on_shutdown registra uno script bash da chiamare prima della terminazione del nodo.

Il comando accetta il percorso assoluto dello script come argomento.

Quando il nodo viene terminato da Azure, se le notifiche di terminazione sono abilitate, Jetpack riceverà una notifica della terminazione e tenterà di eseguire lo script prima dell'arresto del nodo.

I nodi devono abilitare le notifiche di terminazione per abilitare run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Questo comando non è supportato per i nodi Di Windows.

invio jetpack

jetpack send invia un messaggio AMQP a CycleCloud. È un comando avanzato che non è consigliato a meno che non si sviluppano plug-in per CycleCloud.

È possibile inviare stringhe o file arbitrari con chiavi di routing AMQP specificate.

arresto jetpack

jetpack shutdown richiede che CycleCloud termina il nodo. Le opzioni possono essere passate al comando per specificare il motivo della richiesta di arresto (inattiva o non integra) e come terminare il nodo (termina vs deallocate).

Per arrestare un nodo non integro:

jetpack shutdown --unhealthy

Per deallocare il nodo:

jetpack shutdown --deallocate

test jetpack

jetpack test esegue tutti i test inclusi nei progetti assegnati al nodo e stampa i risultati in stdout.

utenti jetpack

jetpack users elenca gli utenti gestiti da CycleCloud nel nodo. Questo elenco può cambiare nel tempo perché gli utenti vengono assegnati e rimossi nel cluster.

Per ottenere una stampa descrittiva degli utenti assegnati al nodo:

$ jetpack users

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

Per ottenere l'output JSON descrittivo dello script:

$ 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 archivia le directory di log dalla macchina virtuale, facoltativamente caricandole in Archiviazione di Azure e creando un URL firmato per l'accesso esterno. I log verranno caricati nell'account di archiviazione di Azure a cui fa riferimento l'Locker del nodo. Quando si firma un archivio in Archiviazione di Azure, il token di firma di accesso condiviso risultante avrà accesso in sola lettura per 30 giorni.

Utilizzo:

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

Per archiviare, caricare e firmare i log Jetpack predefiniti ($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

Per archiviare, caricare ma non firmare una directory di log non predefinita:

$ 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

Per archiviare semplicemente i log nella macchina virtuale locale:

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