Jetpack
O Jetpack é necessário em todos os nós de um cluster. Ele é instalado automaticamente pelo Azure CycleCloud em cada máquina virtual provisionada para se tornar um nó em um cluster. O Jetpack fornece três funções main:
- Configuração do nó – o CycleCloud usa scripts e o Chef para automatizar a configuração de uma VM provisionada em um nó de cluster em funcionamento. Um cliente Chef, bem como os recursos necessários para a configuração da VM, são inseridos no Jetpack.
- Sincronização distribuída – o Jetpack gerencia a comunicação entre o nó e o servidor de aplicativos CycleCloud. Isso permite que o CycleCloud monitore o status das VMs de provisionamento e sincronize a orquestração de vários nós no cluster.
- HealthCheck – o Jetpack usa HealthCheck para determinar a integridade das VMs para que as VMs não íntegras possam ser encerradas.
Instalação do Jetpack
O instalador do Jetpack é armazenado em cache em sua Conta de Armazenamento do Azure quando você inicia um cluster pela primeira vez usando o CycleCloud. À medida que as VMs de cluster são provisionadas, uma extensão de script personalizado é executada como parte do processo de inicialização que baixa o instalador do Jetpack do cache do Armazenamento do Azure e, em seguida, instala-o na VM.
O instalador do Jetpack:
- Descompacta os arquivos do Jetpack em uma única árvore de diretório:
- Windows: C:\cycle\jetpack
- Linux: /opt/cycle/Jetpack
- Cria scripts de inicialização de inicialização do sistema que configuram uma VM como um nó de cluster
- Instala o serviço HealthCheck
- Instala a Ferramenta de Linha de Comando do Jetpack para:
- Windows: C:\cycle\jetpack\bin\jetpack
- Linux: /opt/cycle/jetpack/bin/jetpack
- Cria regras de udev no Linux
- Define a variável de ambiente
CYCLECLOUD_HOME
Observação
Se o Jetpack tiver sido pré-instalado na imagem, a extensão de script personalizado não reinstalará o Jetpack. Em vez disso, será executada uma etapa de inicialização que validará a conexão do nó com o CycleCloud e iniciará os healthcheck
serviços e jetpackd
antes de continuar a configurar o nó.
Subdiretórios jetpack
Diretório | Descrição |
---|---|
bin |
Binários e scripts úteis. |
config |
Scripts e arquivos de configuração definidos pelo usuário e definidos pelo cluster. |
logs |
Os logs gerados ao ingressar em um cluster e convergir o nó, de interesse específico, são os chef-client.log que contém os resultados das receitas convergentes do Chef. |
run |
Arquivos de runtime gerados pelo sistema. Não recomendamos acessar diretamente esses arquivos. |
system |
Arquivos internos. Não recomendamos usar diretamente nenhum arquivo nesse diretório, pois eles podem mudar significativamente de versão para versão. |
HealthCheck
O serviço HealthCheck executa scripts definidos pelo usuário 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 Comando jetpack
A ferramenta de linha de comando 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 ao qual este nó pertence. |
jetpack config |
Recupere um valor de configuração. |
jetpack converge |
Execute uma convergência do Chef. |
jetpack download |
Baixe um recurso de blob de um projeto no Armazenamento do Azure. |
jetpack keepalive |
Atrasar o encerramento do sistema pelo Serviço HealthCheck. |
jetpack log |
Registre uma mensagem na interface do usuário do cluster CycleCloud. |
jetpack run_on_shutdown |
Adicione um script a ser chamado antes do encerramento do nó. |
jetpack send |
Envie uma mensagem AMQP arbitrária para o servidor CycleCloud. |
jetpack shutdown |
Solicite o desligamento da VM pelo CycleCloud. |
jetpack test |
Execute testes associados a projetos atribuídos à VM. |
jetpack users |
Listar usuários que o CycleCloud gerenciará nessa VM. |
jetpack report_issue |
Arquiva arquivos de log da VM para o Armazenamento do Azure |
dimensionamento automático do jetpack
jetpack autoscale
define os destinos de dimensionamento automático para o cluster ao qual 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 a nodearray 'gpu' para 5 nós:
jetpack autoscale --instancecount 5 --name=gpu
Para personalizar o dimensionamento automático, um arquivo json deve ser gravado no disco que contém a definição de nodearray que você deseja dimensionar. Para dimensionar por 100 núcleos:
[
{
"Name": "execute",
"TargetCoreCount": 100
}
]
jetpack autoscale --file=custom-autoscale.json
configuração do jetpack
jetpack config
busca informações passadas para uma VM pelo CycleCloud. Ele expõe:
- todas as propriedades do sistema disponibilizadas via Ohai
- um subconjunto dos metadados do Azure da VM
- informações sobre o cluster pai do CycleCloud.
convergir jetpack
jetpack converge
baixa todos os projetos do CycleCloud associados ao nó e inicia um processo convergente do Chef que executa todas as receitas do Chef e os scripts de cluster-init para o nó.
download do jetpack
jetpack download
baixa um blob que foi carregado com um projeto para o nó. Você deve especificar o projeto ao qual o blob pertence.
Para baixar 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 o encerramento da VM devido a um HealthCheck com falha. A rescisão pode ser atrasada por um período fixo ou indefinidamente. Por padrão, o encerramento é atrasado por uma hora.
Para atrasar a terminação do sistema em uma hora:
jetpack keepalive
Para atrasar o encerramento do sistema em seis horas:
jetpack keepalive 6h
Para desabilitar totalmente o serviço HealthCheck, ou seja, atrasar o término indefinidamente:
jetpack keepalive forever
Observação
Somente a opção forever
está disponível para HealthCheck em VMs do Windows
log jetpack
jetpack log
envia uma mensagem de log de volta ao CycleCloud. A mensagem será exibida no log do servidor de aplicativos (normalmente /opt/cycle_server/cycle_server.log), no log de eventos do main e na página interface do usuário 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 'info', 'warn' e 'error'. 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 'low', 'medium' e 'high'. Somente as mensagens com prioridade média ou superior são exibidas na página interface do usuário do cluster para evitar inundar a página com mensagens de baixa prioridade.
Para enviar uma mensagem de log informativa que aparecerá na página interface do usuário do cluster:
jetpack log 'system is now ready'
Para enviar uma mensagem de log de baixa prioridade que você não deseja que apareça na página interface do usuário do cluster:
jetpack log 'system is now ready' --priority low
Por padrão, as mensagens com um nível de erro têm uma prioridade alta. 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
registra um script bash a ser chamado antes do encerramento do nó.
O comando usa o caminho absoluto para o script como um argumento.
Quando o nó for encerrado pelo Azure, se as Notificações de Encerramento estiverem habilitadas, o Jetpack será notificado sobre o encerramento e tentará executar o script antes do nó ser desligado.
Os nós devem habilitar as Notificações de Encerramento para habilitar run_on_shutdown
o .
jetpack run_on_shutdown /tmp/example.sh
Este comando não tem suporte para nós do Windows.
jetpack send
jetpack send
envia uma mensagem AMQP para CycleCloud. É um comando avançado que não é recomendado, a menos que você esteja desenvolvendo plug-ins para CycleCloud.
Você pode enviar cadeias de caracteres ou arquivos arbitrários com chaves de roteamento AMQP especificadas.
desligamento do jetpack
jetpack shutdown
solicita que o CycleCloud encerre o nó. As opções podem ser passadas para o comando para especificar o motivo da solicitação de desligamento (ociosa versus não íntegra), bem como como encerrar o nó (encerrar versus desalocar).
Para desligar um nó não íntegro:
jetpack shutdown --unhealthy
Para desalocar o nó:
jetpack shutdown --deallocate
teste jetpack
jetpack test
executa todos os testes incluídos com projetos atribuídos ao nó e imprime os resultados em stdout.
usuários do jetpack
jetpack users
lista os usuários que o CycleCloud gerenciará no nó. Essa lista pode ser alterada ao longo do tempo à medida que os usuários são atribuídos e removidos ao cluster.
Para obter uma impressão amigável dos usuários 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 amigável ao 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
arquiva diretórios de log da VM, carregando-os opcionalmente no Armazenamento do Azure e criando uma URL assinada para acesso externo. Os logs serão carregados na conta de Armazenamento do Azure referenciada pelo Locker do nó. Ao assinar um arquivo morto no Armazenamento do Azure, o token SAS resultante terá acesso somente leitura por 30 dias.
Uso:
$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]
Para arquivar, carregue e assine os logs padrão 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 log não padrão:
$ 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 logs na VM local:
$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip