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