Partilhar via


Propulsor 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. Jetpack fornece três funções principais:

  • Configuração de 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 incorporados 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 o HealthCheck para determinar a integridade das VMs para que possa encerrar VMs não íntegras.

Instalação do Jetpack

O instalador do Jetpack é armazenado em cache na sua Conta de Armazenamento Azure quando inicia um cluster pela primeira vez utilizando o CycleCloud. À medida que as VMs de cluster são provisionadas, uma extensão de script personalizada é executada como parte do processo de inicialização. Esta extensão baixa o instalador do Jetpack do cache do Armazenamento do Azure e o instala na VM.

O instalador do Jetpack

  • Desempacota os ficheiros do Jetpack para 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 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

Observação

Se o Jetpack estiver pré-instalado na imagem, a extensão de script personalizada não reinstalará 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 serviços healthcheck e jetpackd 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 pelo cluster.
logs Logs gerados pela junção de um cluster e convergência do nó. De particular interesse é jetpack.log, que contém os resultados do processo de convergência.
run Arquivos de tempo de execução gerados pelo sistema. Não recomendamos o acesso direto a esses ficheiros.
system Ficheiros internos. Não recomendamos o uso direto de quaisquer ficheiros neste diretório, pois podem mudar significativamente de versão para versão.

Exame de saúde

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 Ajustar automaticamente o cluster a que este nó pertence.
jetpack config Recuperar um valor de configuração.
jetpack converge Executar um "converge" para atualizar a configuração do nó.
jetpack download Transfira um recurso blob de um projeto no Azure Storage.
jetpack keepalive Atraso na terminação do sistema pelo Serviço de Verificação de Saúde.
jetpack log Registar uma mensagem na Interface do Utilizador do cluster CycleCloud.
jetpack run_on_shutdown Adicione um script para chamar antes do encerramento do nó.
jetpack send Enviar uma mensagem AMQP arbitrária para o servidor CycleCloud.
jetpack shutdown Solicitar o encerramento da VM pelo CycleCloud.
jetpack test Execute testes associados a projetos atribuídos à VM.
jetpack users Liste os usuários que o CycleCloud gerencia nesta VM.
jetpack report_issue Arquiva ficheiros de registo da VM para o Armazenamento do Azure

jetpack escalamento automático

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 "Nodearray GPU" para cinco nós:

jetpack autoscale --instancecount 5 --name=gpu

Para personalizar o dimensionamento automático, escreva um arquivo JSON no disco que contenha 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

Jetpack configuração

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

  • todas as propriedades do sistema disponibilizadas via Ohai
  • um subconjunto dos metadados do Azure da máquina virtual
  • informações sobre o cluster principal CycleCloud.

Jetpack convergir

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

baixar jetpack

jetpack download O comando baixa um blob que você carregou com um projeto para o nó. É necessário especificar o projeto ao qual o blob pertence.

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

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

jetpack manter ativo

jetpack keepalive interage com o serviço HealthCheck para atrasar o encerramento da VM devido a uma falha 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 adiar a terminação do sistema por uma hora:

jetpack keepalive

Para atrasar a terminação do sistema por seis horas:

jetpack keepalive 6h

Para desativar totalmente o serviço HealthCheck, ou seja, para atrasar a rescisão indefinidamente:

jetpack keepalive forever

Observação

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

Registo de Jetpack

jetpack log envia uma mensagem de log de volta para o 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 críticas.

Prioridade indica a importância da mensagem. Valores válidos de prioridade são 'baixo', 'médio' e 'alto'. Apenas mensagens com prioridade média ou superior são exibidas na página da interface do Cluster para evitar encher a página com mensagens de baixa prioridade.

Para enviar uma mensagem de log informativa que aparece 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, mensagens com nível de erro têm alta prioridade. 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 executar_ao_desligar

O jetpack run_on_shutdown comando registra um script bash a ser chamado antes do encerramento do nó.

O comando aceita o caminho absoluto para o script como argumento.

Quando o Azure encerra o nó e as Notificações de Rescisão são habilitadas, o Jetpack recebe uma notificação da rescisão. Tenta executar o script antes que o nó seja desligado.

Os nós devem ativar Notificações de Término para ativar run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Este comando não é compatível com sistemas Windows.

jetpack enviar

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

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

Encerramento do jetpack

Use jetpack shutdown para pedir que o CycleCloud encerre o nó. Você pode passar opções para o comando para especificar o motivo da solicitação de desligamento (inativo vs não saudável) e como encerrar o nó (encerrar vs dealocar).

Para desligar um nó inativo, use o seguinte comando:

jetpack shutdown --unhealthy

Para desalocar o nó:

jetpack shutdown --deallocate

teste de jetpack

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

Utilizadores do Jetpack

jetpack users lista os usuários que o CycleCloud gerencia no nó. Essa lista pode mudar ao longo do tempo à medida que os usuários são atribuídos e removidos para o cluster.

Para obter uma impressão fácil de usar 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 um output 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 reportar_problema

jetpack report_issue arquiva diretórios de logs da VM, opcionalmente carregando-os para o Armazenamento do Azure e criando um URL assinado para acesso externo. O comando carrega logs na conta de Armazenamento do Azure referenciada pelo Locker do nó. Ao arquivar no Armazenamento do Azure, o token SAS resultante tem acesso somente leitura por 30 dias.

Utilização:

$ 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