Compartilhar via


Jetpack (mochila a jato)

Você precisa do Jetpack em cada nó de um cluster. O Azure CycleCloud instala automaticamente o Jetpack em cada máquina virtual que você provisiona para se tornar um nó em um cluster. O Jetpack fornece três funções principais:

  • 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 e 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. Esse gerenciamento 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 ela possa encerrar VMs não íntegras.

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. Essa extensão baixa o instalador do Jetpack do cache do Armazenamento do Azure e, em seguida, instala-o na VM.

O instalador do Jetpack:

  • Desempacota arquivos Jetpack em uma única árvore de diretórios.
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Cria scripts 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 estiver pré-instalado na imagem, a extensão de script personalizado não reinstala o Jetpack. Em vez disso, ele executa uma etapa de inicialização que valida a conexão do nó com o CycleCloud e inicia os healthcheck e jetpackd serviços antes de continuar a configurar o nó.

Subdiretórios Jetpack

Diretório Descrição
bin Binários e scripts úteis.
config Arquivos e scripts de configuração definidos pelo usuário e definidos pelo cluster.
logs Logs gerados unindo um cluster e convergindo o nó. É de particular interesse jetpack.log, que contém os resultados do processo de convergência.
run Arquivos de runtime gerados pelo sistema. Não recomendamos acessar diretamente esses arquivos.
system Arquivos internos. Não recomendamos o uso direto de arquivos neste 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. Para obter mais informações, consulte a documentação do HealthCheck .

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 Dimensionar automaticamente o cluster ao qual este nó pertence.
jetpack config Recupere um valor de configuração.
jetpack converge Execute um "convergir" para atualizar a configuração do nó.
jetpack download Baixe um recurso de blob de um projeto no Armazenamento do Azure.
jetpack keepalive Atrase a terminação 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 para chamar antes do término 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 gerencia nesta VM.
jetpack report_issue Arquiva arquivos de log da VM no Armazenamento do Azure

escala automática do jetpack

Use jetpack autoscale para definir os destinos de dimensionamento automático para o cluster ao qual o nó pertence. Você pode dimensionar clusters por núcleos, contagem de instâncias ou definições personalizadas.

Para escalar para 100 núcleos:

jetpack autoscale --corecount=100

Para dimensionar o "gpu" nodearray para cinco nós:

jetpack autoscale --instancecount 5 --name=gpu

Para personalizar o dimensionamento automático, escreva um arquivo JSON no disco que contém a definição de nodearray que você deseja dimensionar. Para escalar por 100 núcleos:

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

configuração do jetpack

Use jetpack config para buscar informações que o CycleCloud passa para uma VM. Ele expõe:

  • todas as propriedades do sistema disponibilizadas via Ohai
  • um subconjunto dos metadados do Azure da VM
  • Informações sobre o cluster CycleCloud principal.

convergir o jetpack

jetpack converge O comando baixa todos os projetos do CycleCloud associados ao nó e inicia um processo convergente que executa os scripts de cluster-init para o nó.

baixar o jetpack

O comando jetpack download baixa um blob que você carregou com um projeto no nó. Você deve especificar o projeto ao qual o blob pertence.

Para baixar o blob big-file.zip que você carregou como parte do projeto example-project para o diretório atual:

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

manter jetpack ativo

jetpack keepalive O comando interage com o serviço HealthCheck para atrasar o término da VM devido a uma falha do HealthCheck. Você pode definir o atraso para um período fixo ou indefinidamente. Por padrão, o comando atrasa a terminação 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 desabilitar totalmente o serviço HealthCheck, ou seja, para atrasar a terminação indefinidamente:

jetpack keepalive forever

Observação

Somente a opção forever está disponível para HealthCheck em VMs do Windows.

log do Jetpack

jetpack log envia uma mensagem de log de volta ao CycleCloud. A mensagem aparece no log do servidor de aplicativos (normalmente /opt/cycle_server/cycle_server.log), no log de eventos principal e na página da interface do usuário do cluster.

Cada mensagem tem duas propriedades: level e priority.

A level propriedade indica o tipo de mensagem. Os níveis válidos são info, warne 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 'baixo', 'médio' e 'alto'. Somente as mensagens com prioridade de média ou superior são exibidas na página da interface do usuário do cluster para evitar inundar a página com mensagens de baixa prioridade.

Para enviar uma mensagem de log informativa exibida na página da 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 exibir na página da 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

O comando jetpack run_on_shutdown registra um script bash para chamar antes do término do nó.

O comando usa o caminho absoluto para o script como um argumento.

Quando o Azure encerra o nó e as Notificações de Encerramento são habilitadas, o Jetpack recebe a notificação da terminação. Ele tenta executar o script antes que o nó seja desligado.

Os nós devem habilitar notificações de terminação para habilitar run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Este comando não é suportado para nodos do Windows.

envio do Jetpack

jetpack send envia uma mensagem AMQP ao CycleCloud. É um comando avançado que não recomendamos, a menos que você esteja desenvolvendo plug-ins para o CycleCloud.

Você pode enviar cadeias de caracteres ou arquivos arbitrários com chaves de roteamento AMQP especificadas.

desligamento do jetpack

Use jetpack shutdown para solicitar que o CycleCloud encerre o nó. Você pode passar opções para o comando para especificar o motivo da solicitação de desligamento (ociosa versus não íntegra) e como encerrar o nó (encerrar vs desalocar).

Para desligar um nó não íntegro, use o seguinte comando:

jetpack shutdown --unhealthy

Para desalocar o nó:

jetpack shutdown --deallocate

teste do Jetpack

Use jetpack test para executar todos os testes incluídos com projetos atribuídos ao nó. O comando imprime os resultados para stdout.

usuários do jetpack

jetpack users lista os usuários que são gerenciados pelo CycleCloud no nó. Essa lista pode ser alterada ao longo do tempo à medida que os usuários são atribuídos e removidos para o 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, opcionalmente os carregando para o Armazenamento do Azure e criando uma URL assinada para acesso externo. O comando carrega logs na conta de Armazenamento do Azure referenciada pelo Locker do nó. Quando você arquiva um arquivo no Armazenamento do Azure, o token SAS resultante tem acesso de leitura somente por 30 dias.

Uso:

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

Para arquivar, carregar e assinar 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, carregar, mas não assinar 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 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