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_shutdowno .

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