Verificações do Estado de Funcionamento
O CycleCloud oferece dois mecanismos para verificar o estado de funcionamento das VMs: as Verificações de Estado de Funcionamento do Nó são uma funcionalidade mais recente que efetua as verificações durante a fase de aprovisionamento e impede a associação das VMs em mau estado de funcionamento, enquanto o HealthCheck as executa periodicamente após a VM ter aderido ao cluster como um nó.
Verificações de Estado de Funcionamento do Nó
As Verificações de Estado de Funcionamento do Nó podem detetar hardware em mau estado de funcionamento antes de uma VM poder aderir ao cluster cycleCloud. A versão atual desta funcionalidade irá executar scripts de verificação de estado de funcionamento incorporados nas imagens oficiais do AzureHPC que podem ser encontradas em /opt/azurehpc/test/azurehpc-health-checks/. A origem destes scripts está localizada no repositório Verificações de Estado de Funcionamento do Nó do AzureHPC, mas tenha em atenção que a versão incorporada na 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 Estado de Funcionamento do Nó só suporta imagens do AzureHPC lançadas após 7 de novembro de 2023 (que contêm azurehpc-health-checks versão v2.0.6 ou superior) e imagens personalizadas derivadas das mesmas. Atualmente, as Verificações de Estado de Funcionamento do Nó não são suportadas no Windows.
Ativar verificações de estado de funcionamento do nó para clusters slurm
O formulário de criação do cluster Slurm oferece uma caixa de verificação para ativar as Verificações de Estado de Funcionamento do Nó localizadas no separador Definições Avançadas . A caixa ativa as Verificações de Estado de Funcionamento do Nó na matriz de nós HPC do cluster. Se quiser ativar as Verificações de Estado de Funcionamento do Nó noutras matrizes de nós (ou noutros tipos de cluster), tem de utilizar um modelo de cluster personalizado.
As Verificações de Estado de Funcionamento do Nó podem ser desativadas num cluster em execução ao simplesmente desmarcar a caixa. Não é necessário reduzir verticalmente a matriz do nó para que as alterações entrem em vigor.
Compreender os resultados das Verificações de Estado de Funcionamento do Nó
Depois de uma VM passar as verificações de estado de funcionamento, passará para a fase de configuração do software.
Se uma VM falhar em qualquer um dos scripts de verificação de estado de funcionamento, será enviada uma mensagem de erro para o CycleCloud e a VM será automaticamente impedida de aderir ao cluster.
Se a VM for iniciada num NodeArray com o aprovisionamento excessivo ativado (por exemplo, a Matriz de Nós slurm hpc), a VM deve ser substituída automaticamente como parte do aprovisionamento excessivo. Nesse caso, não é necessária nenhuma ação e as VMs em bom estado de funcionamento serão selecionadas para aderir ao cluster (embora veja uma mensagem de erro na página do cluster a indicar que uma ou mais VMs falharam).
Se a VM for iniciada para um único Nó, uma Matriz de Nós com o aprovisionamento excedido desativado (por exemplo, a Matriz de Nós do Slurm htc) ou se mais VMs falharem as verificações de estado de funcionamento do que as suportadas pelo aprovisionamento excessivo, o Nó será movido para o estado Com falha e a alocação falhará. O CycleCloud pode tentar voltar a imagem da VM para corrigir o problema, mas se a imagem voltar a falhar, o nó terá de ser terminado e substituído (manualmente por um administrador ou automaticamente pelo dimensionador automático).
Nota
Se tiver ativado as Verificações de Estado de Funcionamento do Nó, mas a imagem da VM não cumprir os requisitos acima, todas as VMs terão permissão para aderir ao cluster, mas o estado conterá um aviso a indicar que as verificações não são suportadas.
Referência de Atributos
Atributo | Tipo | Definição |
---|---|---|
EnableNodeHealthChecks | Booleano | (Opcional) Ativar verificações de estado de funcionamento do nó no arranque para esta Matriz de Nós ou Nó |
Verificação de Estado de Funcionamento
O Azure CycleCloud fornece um mecanismo para terminar máquinas virtuais (VMs) que estão num estado de mau estado de funcionamento chamado HealthCheck. Os scripts definidos pelo sistema e pelo utilizador (Python e Bash) são executados periodicamente (5 minutos no Windows, 10 minutos no Linux) para determinar o estado de funcionamento geral de uma VM. O HealthCheck permite que os administradores definam condições nas quais as VMs devem ser terminadas sem terem de monitorizar e remediar manualmente.
Scripts do HealthCheck incorporados
As VMs ativadas para o CycleCloud vêm com dois scripts healthCheck predefinidos:
- O script converge_timeout terminará uma instância que não concluiu a configuração do software no prazo de quatro horas após o lançamento. Este período de tempo limite pode ser controlado com a
cyclecloud.keepalive.timeout
definição (definida em segundos). - O script de scheduled_shutdown procura ficheiros do criador em $JETPACK_HOME/run/scheduled_shutdown que contêm uma única linha que dá um tempo de encerramento em segundos de carimbo de data/hora Unix e uma segunda linha opcional com uma explicação. Quando a hora atual é posterior ao carimbo de data/hora mais antigo dos ficheiros, a VM é considerada em mau estado de funcionamento.
Como funciona
Os scripts do HealthCheck estão localizados no diretório $JETPACK_HOME/config/healthcheck.d . O Linux suporta scripts Python e Bash, enquanto o Windows suporta apenas scripts Python. O script deve determinar o estado de funcionamento da VM. Se a VM estiver em mau estado de funcionamento, o script deverá sair com um estado de 254
, o que indica ao CycleCloud que a VM está em mau estado de funcionamento e deve ser terminada.
Quando tem sessão iniciada numa VM que está a executar o HealthCheck, pode impedir que a VM seja encerrada ao executar o comando jetpack keepalive. Em instâncias do Linux, pode especificar um período de tempo em horas ou forever
enquanto estiver no Windows forever
é a única opção.
Nota
Quando uma VM é determinada como estando em mau estado de funcionamento, o agente HealthCheck fará um pedido para que a CycleCloud termine a VM, a VM nunca será encerrada localmente através do shutdown
comando. Caso a VM não consiga comunicar com o CycleCloud, a VM permanecerá ativa, mesmo estando em mau estado de funcionamento até que seja possível alcançar o CycleCloud.
Exemplo
Como exemplo simples, vamos escrever um script HealthCheck que irá garantir que uma VM do Linux não está ativa durante mais de 24 horas. Este script pode ser utilizado para simular expulsões de baixa prioridade para testar como um fluxo de trabalho reage a uma VM expulsa. Este 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
Nota
Este script pode ser colocado numa VM através do Projeto CycleCloud ou ao adicioná-lo diretamente ao Criar uma Imagem Personalizada.