Verificações de Integridade

O CycleCloud oferece dois mecanismos para verificar a integridade das VMs: As Verificações de Integridade do Nó são um recurso mais recente que executa as verificações durante o estágio de provisionamento e impede que as VMs não íntegras ingressem, enquanto o HealthCheck as executa periodicamente após a VM ter ingressado no cluster como um nó.

Verificações de integridade do nó

As Verificações de Integridade do Nó podem detectar hardware não íntegro antes que uma VM possa ingressar no cluster do CycleCloud. A versão atual desse recurso executará scripts de integridade marcar integrados às imagens oficiais do AzureHPC que podem ser encontradas em /opt/azurehpc/test/azurehpc-health-checks/. A origem desses scripts está localizada no repositório de Verificações de Integridade do Nó do AzureHPC, mas observe que a versão incorporada à versão do cluster da imagem do AzureHPC pode não ser a mais recente disponível no repositório.

Requisitos

A versão atual das Verificações de Integridade do Nó só dá suporte a imagens do AzureHPC lançadas após 7 de novembro de 2023 (contendo azurehpc-health-checks versão v2.0.6 ou superior) e imagens personalizadas derivadas delas. No momento, as Verificações de Integridade do Nó não têm suporte no Windows.

Habilitando verificações de integridade de nó para clusters slurm

O formulário de criação do cluster Slurm oferece uma caixa de seleção para habilitar as Verificações de Integridade do Nó localizadas na guia Configurações Avançadas . A caixa de verificação habilita verificações de integridade do nó na matriz de nós HPC do cluster. Se você quiser habilitar as Verificações de Integridade do Nó em outras matrizes de nós (ou para outros tipos de cluster), deverá usar um modelo de cluster personalizado.

As Verificações de Integridade do Nó podem ser desabilitadas em um cluster em execução simplesmente desmarcando a caixa. Não é necessário reduzir a matriz de nós para que as alterações entrem em vigor.

GUI de Verificações de Integridade do Nó

Noções básicas sobre os resultados das Verificações de Integridade do Nó

Depois que uma VM passar por verificações de integridade, ela passará para a fase de configuração de software.

Se uma VM falhar em qualquer um dos scripts de marcar de integridade, uma mensagem de erro será enviada ao CycleCloud e a VM será automaticamente impedida de ingressar no cluster.

Logs de erros de Verificações de Integridade do Nó

Se a VM for iniciada em um NodeArray com o provisionamento excessivo habilitado (por exemplo, a Matriz de Nós slurm hpc), a VM deverá ser substituída automaticamente como parte do provisionamento excessivo. Nesse caso, não há nenhuma ação necessária e as VMs íntegras serão selecionadas para ingressar no cluster (embora você veja uma mensagem de erro na página do cluster indicando que uma ou mais VMs falharam nas verificações).

Se a VM for iniciada para um único Nó, uma Matriz de Nós com excesso de provisionamento desabilitado (por exemplo, o Slurm htc Node Array) ou se mais VMs falharem nas verificações de integridade do que com suporte pelo provisionamento excessivo, o Nó passará para o estado com falha e a alocação falhará. O CycleCloud pode tentar refazer a imagem da VM para corrigir o problema, mas se a nova imagem falhar, o nó precisará ser encerrado e substituído (manualmente por um administrador ou automaticamente pelo dimensionador automático).

Observação

Se você tiver habilitado as Verificações de Integridade do Nó, mas a imagem da VM não atender aos requisitos acima, todas as VMs terão permissão para ingressar no cluster, mas o status conterá um aviso indicando que as verificações não têm suporte. Detalhes do erro verificações de integridade do nó

Referência de atributo

Atributo Type Definição
EnableNodeHealthChecks Booliano (Opcional) Habilitar verificações de integridade do nó na inicialização para este nó ou matriz de nós

HealthCheck

O Azure CycleCloud fornece um mecanismo para encerrar VMs (máquinas virtuais) que estão em um estado não íntegro chamado HealthCheck. Os scripts definidos pelo sistema e pelo usuário (Python e Bash) são executados periodicamente (5 minutos no Windows, 10 minutos no Linux) para determinar a integridade geral de uma VM. O HealthCheck permite que os administradores definam condições sob as quais as VMs devem ser encerradas sem precisar monitorar e corrigir manualmente.

Scripts internos do HealthCheck

As VMs habilitadas para CycleCloud vêm com dois scripts padrão healthcheck:

  • O script converge_timeout encerrará uma instância que não concluiu a configuração de software dentro de quatro horas após a inicialização. Esse período de tempo limite pode ser controlado com a configuração cyclecloud.keepalive.timeout (definida em segundos).
  • O script scheduled_shutdown procura arquivos de criador em $JETPACK_HOME/run/scheduled_shutdown que contêm uma única linha que dá um tempo de desligamento em segundos de carimbo de data/hora do Unix e uma segunda linha opcional com uma explicação. Quando a hora atual for posterior ao carimbo de data/hora mais antigo nos arquivos, a VM será considerada não íntegra.

Como ele funciona

Os scripts healthcheck estão localizados no diretório $JETPACK_HOME/config/healthcheck.d . O Linux dá suporte a scripts Python e Bash, enquanto o Windows dá suporte apenas a scripts Python. O script deve determinar a integridade da VM. Se a VM não estiver íntegra, o script deverá sair com um status de 254, o que indica ao CycleCloud que a VM não está íntegra e deve ser encerrada.

Ao fazer logon em uma VM que está executando o HealthCheck, você pode impedir que a VM seja desligada executando o comando jetpack keepalive. Em instâncias do Linux, você pode especificar um período de tempo em horas ou forever enquanto no Windows forever é a única opção.

Observação

Quando uma VM for determinada como não íntegra, o agente HealthCheck fará uma solicitação para que o CycleCloud encerre a VM, a VM nunca será desligada localmente por meio do shutdown comando . Caso a VM não consiga se comunicar com o CycleCloud, a VM permanecerá ativa mesmo que não esteja íntegra até um momento em que o CycleCloud possa ser alcançado.

Exemplo

Como exemplo simples, escreveremos um script HealthCheck que garantirá que uma VM linux não esteja ativa por mais de 24 horas. Esse script pode ser usado para simular remoções de baixa prioridade para testar como um fluxo de trabalho reage a uma VM removida. Esse script seria colocado em /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh

#!/bin/bash

# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
  exit 254
fi

Observação

Esse script pode ser colocado em uma VM por meio do CycleCloud Project ou adicionando-o diretamente ao criar uma imagem personalizada.