Jetpack
O Jetpack é necessário em todos os nós de um cluster. É instalado automaticamente pelo Azure CycleCloud em cada máquina virtual que é aprovisionada para se tornar um nó num cluster. O Jetpack fornece três funções principais:
- Configuração do Nó – o CycleCloud utiliza scripts e o Chef para automatizar a configuração de uma VM aprovisionada num nó de cluster funcional. Um cliente Chef, bem como os recursos necessários para a configuração da VM, estão incorporados no Jetpack.
- Sincronização Distribuída – o Jetpack gere a comunicação entre o nó e o servidor de aplicações CycleCloud. Isto permite ao CycleCloud monitorizar o estado das VMs de aprovisionamento e sincronizar a orquestração de múltiplos nós no cluster.
- HealthCheck -- O Jetpack utiliza o HealthCheck para determinar o estado de funcionamento das VMs para que as VMs em mau estado de funcionamento possam ser terminadas.
Instalação do Jetpack
O instalador do Jetpack é colocado em cache na sua Conta de Armazenamento do Azure quando inicia um cluster pela primeira vez com o CycleCloud. À medida que as VMs do cluster são aprovisionadas, uma extensão de script personalizado é executada como parte do processo de arranque que transfere o instalador do Jetpack a partir da cache de Armazenamento do Azure e, em seguida, instala-o na VM.
O instalador do Jetpack:
- Descompacta os ficheiros do Jetpack numa única árvore de diretórios:
- Windows: C:\cycle\jetpack
- Linux: /opt/cycle/Jetpack
- Cria scripts de arranque init do sistema que configuram uma VM como um nó de cluster
- Instala o serviço HealthCheck
- Instala a Ferramenta de Linha de Comandos do Jetpack para:
- Windows: C:\cycle\jetpack\bin\jetpack
- Linux: /opt/cycle/jetpack/bin/jetpack
- Cria regras udev no Linux
- Define a variável de ambiente
CYCLECLOUD_HOME
Nota
Se o Jetpack tiver sido pré-instalado na imagem, a extensão de script personalizado não reinstalará o Jetpack. Em vez disso, será executado um passo de inicialização que validará a ligação do nó ao CycleCloud e iniciará os healthcheck
serviços e jetpackd
antes de continuar a configurar o nó.
Subdiretórios do Jetpack
Diretório | Description |
---|---|
bin |
Binários e scripts úteis. |
config |
Ficheiros e scripts de configuração definidos pelo utilizador e definidos pelo cluster. |
logs |
Os registos gerados ao associar um cluster e convergir o nó, de particular interesse, são os chef-client.log que contém os resultados das receitas convergentes do Chef. |
run |
Ficheiros de runtime gerados pelo sistema. Não recomendamos que aceda diretamente a estes ficheiros. |
system |
Ficheiros internos. Não recomendamos que utilize diretamente quaisquer ficheiros neste diretório, uma vez que podem mudar significativamente de versão para versão. |
Verificação de Estado de Funcionamento
O serviço HealthCheck executa scripts definidos pelo utilizador para determinar a viabilidade atual de uma VM como um nó de cluster. Consulte a documentação Do HealthCheck para obter mais informações.
Ferramenta de Linha de Comandos do Jetpack
A ferramenta de linha de comandos jetpack fornece um conjunto útil de subcomandos para manipular a VM atual e interagir com o Azure CycleCloud.
Comando | Descrição |
---|---|
jetpack autoscale |
Dimensione automaticamente o cluster a que este nó pertence. |
jetpack config |
Obter um valor de configuração. |
jetpack converge |
Execute um Chef converge. |
jetpack download |
Transfira um recurso de blobs a partir de um projeto no Armazenamento do Azure. |
jetpack keepalive |
Atrase a terminação do sistema pelo Serviço HealthCheck. |
jetpack log |
Registe uma mensagem na IU do cluster do CycleCloud. |
jetpack run_on_shutdown |
Adicione um script a ser chamado antes da terminação do nó. |
jetpack send |
Envie uma mensagem AMQP arbitrária para o servidor CycleCloud. |
jetpack shutdown |
Peça o encerramento da VM por CycleCloud. |
jetpack test |
Execute testes associados a projetos atribuídos à VM. |
jetpack users |
Liste os utilizadores que o CycleCloud irá gerir nesta VM. |
jetpack report_issue |
Arquiva ficheiros de registo da VM para o Armazenamento do Azure |
jetpack autoscale
jetpack autoscale
define os destinos de dimensionamento automático para o cluster a que o nó pertence. Os clusters podem ser dimensionados por núcleos, contagem de instâncias ou definições personalizadas.
Para dimensionar para 100 núcleos:
jetpack autoscale --corecount=100
Para dimensionar o nó "gpu"array para 5 nós:
jetpack autoscale --instancecount 5 --name=gpu
Para personalizar o dimensionamento automático, um ficheiro json tem de ser escrito no disco que contém a definição de nóarray que pretende dimensionar. Para dimensionar por 100 núcleos:
[
{
"Name": "execute",
"TargetCoreCount": 100
}
]
jetpack autoscale --file=custom-autoscale.json
configuração do jetpack
jetpack config
obtém informações transmitidas para uma VM pela CycleCloud. Expõe:
- todas as propriedades do sistema disponibilizadas através de Ohai
- um subconjunto dos metadados do Azure da VM
- informações sobre o cluster principal do CycleCloud.
jetpack convergir
jetpack converge
transfere todos os projetos cycleCloud associados ao nó e inicia um processo de convergição do Chef que executa todas as receitas do Chef e scripts de cluster-init para o nó.
transferência do jetpack
jetpack download
transfere um blob que foi carregado com um projeto para o nó. Tem de especificar o projeto ao qual o blob pertence.
Para transferir o blob big-file.zip que foi carregado como parte do example-project
projeto para o diretório atual:
jetpack download --project example-project big-file.zip .
jetpack keepalive
jetpack keepalive
interage com o serviço HealthCheck para atrasar a terminação da VM devido a uma falha do HealthCheck. A cessação pode ser adiada por um período fixo ou indefinidamente. Por predefinição, a terminação é adiada por uma hora.
Para atrasar a terminação do sistema em uma hora:
jetpack keepalive
Para atrasar a terminação do sistema em seis horas:
jetpack keepalive 6h
Para desativar totalmente o serviço HealthCheck, ou seja, atrasar a terminação indefinidamente:
jetpack keepalive forever
Nota
Apenas a opção forever
está disponível para HealthCheck em VMs do Windows
jetpack log
jetpack log
envia uma mensagem de registo para o CycleCloud. A mensagem será apresentada no registo do servidor de aplicações (normalmente /opt/cycle_server/cycle_server.log), no registo de eventos principal e na página IU do Cluster.
Cada mensagem tem duas propriedades: nível e prioridade.
A propriedade level indica o tipo de mensagem. Os níveis válidos são "informações", "aviso" e "erro". O nível não indica a importância de uma determinada mensagem, por exemplo, alguns erros são triviais e algumas mensagens informativas são críticas.
A prioridade indica a importância da mensagem. Os valores de prioridade válidos são "baixo", "médio" e "alto". Apenas as mensagens com prioridade média ou superior são apresentadas na página IU do Cluster para evitar inundar a página com mensagens de baixa prioridade.
Para enviar uma mensagem de registo informativa que será apresentada na página IU do Cluster:
jetpack log 'system is now ready'
Para enviar uma mensagem de registo de baixa prioridade que não pretende que seja apresentada na página IU do Cluster:
jetpack log 'system is now ready' --priority low
Por predefinição, as mensagens com um nível de erro têm uma prioridade elevada. Para enviar uma mensagem de erro:
jetpack log 'the machine cannot process jobs' --level error
Para enviar uma mensagem de erro trivial:
jetpack log 'the machine cannot process jobs' --level error --priority low
jetpack run_on_shutdown
jetpack run_on_shutdown
regista um script bash a ser chamado antes da terminação do nó.
O comando assume o caminho absoluto para o script como um argumento.
Quando o nó for terminado pelo Azure, se as Notificações de Terminação estiverem ativadas, o Jetpack será notificado da terminação e tentará executar o script antes de o nó ser encerrado.
Os nós têm de ativar as Notificações de Terminação para ativar run_on_shutdown
.
jetpack run_on_shutdown /tmp/example.sh
Este comando não é suportado para nós do Windows.
jetpack send
jetpack send
envia uma mensagem AMQP para o CycleCloud. É um comando avançado que não é recomendado, a menos que esteja a desenvolver plug-ins para o CycleCloud.
Pode enviar cadeias ou ficheiros arbitrários com chaves de encaminhamento AMQP especificadas.
encerramento do jetpack
jetpack shutdown
pede que o CycleCloud termine o nó. As opções podem ser transmitidas ao comando para especificar o motivo do pedido de encerramento (inativo vs. mau estado de funcionamento), bem como como terminar o nó (terminar vs. desalocar).
Para encerrar um nó em mau estado de funcionamento:
jetpack shutdown --unhealthy
Para desalocar o nó:
jetpack shutdown --deallocate
teste do jetpack
jetpack test
executa todos os testes incluídos em projetos atribuídos ao nó e imprime os resultados para stdout.
utilizadores do jetpack
jetpack users
lista os utilizadores que o CycleCloud irá gerir no nó. Esta lista pode mudar ao longo do tempo à medida que os utilizadores são atribuídos e removidos para o cluster.
Para obter uma impressão amigável dos utilizadores atribuídos ao nó:
$ jetpack users
Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True
Para obter a saída JSON compatível com scripts:
$ 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
arquiva diretórios de registo da VM, carregando-os opcionalmente para o Armazenamento do Azure e criando um URL assinado para acesso externo. Os registos serão carregados para a conta de Armazenamento do Azure referenciada pelo Cacifo do nó. Ao assinar um arquivo no Armazenamento do Microsoft Azure, o token SAS resultante terá acesso só de leitura durante 30 dias.
Utilização:
$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]
Para arquivar, carregue e assine os registos predefinidos do Jetpack ($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
Para arquivar, carregue, mas não assine um diretório de registo não predefinido:
$ 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
Para simplesmente arquivar registos na VM local:
$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip