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