Sobre como reparar VMs para alta disponibilidade


Neste documento, descrevemos como um grupo gerenciado de instâncias (MIG) oferece alta disponibilidade para o aplicativo corrigindo VMs com falhas e não íntegras no grupo.

Um MIG mantém seu aplicativo ativo e disponível mantendo proativamente o número de VMs em execução no grupo. Se uma VM do grupo for desativada, o MIG corrige a VM recriando-a das maneiras a seguir para trazê-la de volta ao serviço:

  • Reparo automático de uma VM com falha: se uma VM falhar ou for excluída por uma ação não iniciada pelo MIG, ele corrige automaticamente a VM com falha. Neste documento, consulte Reparar automaticamente uma VM com falha.
  • Reparar uma VM com base em uma verificação de integridade do aplicativo: uma maneira opcional de melhorar ainda mais a alta disponibilidade reparando VMs não íntegras. Se você configurar uma verificação de integridade baseada em aplicativo e esse processo falhar, o MIG marcará essa VM como não íntegra e a consertará. O reparo de uma VM com base em uma verificação de integridade do aplicativo também é chamado de recuperação automática. Neste documento, consulte Reparar uma VM com base em uma verificação de integridade do aplicativo.

Corrigir automaticamente uma VM com falha

Se uma VM de um MIG falhar, ele corrige automaticamente a VM com falha criando-a novamente. Uma VM pode falhar pelos seguintes motivos:

  • Motivos inesperados, como uma falha de hardware.
  • Ações não iniciadas pelo MIG, como as seguintes:
    • Preempção de uma VM spot.
    • Eventos de manutenção de infraestrutura, quando a instância de VM não está definida para migração em tempo real.
    • Exclusão de uma VM no grupo usando o método instances.delete ou o comando gcloud compute instances delete.

Se o MIG parar intencionalmente uma VM, por exemplo, quando um escalonador automático excluir uma VM, o MIG não vai corrigir a VM.

Recuperar automaticamente uma VM com base em uma verificação de integridade do aplicativo

Além do reparo automático de VMs com falha, também é possível corrigir uma VM se o aplicativo em execução na VM congela, falha ou fica sem memória. Para que o aplicativo responda conforme o esperado, configure uma verificação de integridade baseada em aplicativo.

Uma verificação de integridade baseada em aplicativo verifica periodicamente se o aplicativo em cada VM de um MIG responde conforme o esperado. Se o aplicativo em uma VM não responder, o MIG marca essa VM como não íntegra. Em seguida, o MIG recupera automaticamente a VM não íntegra. O reparo de uma VM com base na verificação de integridade do aplicativo é chamado de recuperação automática.

Para garantir que o MIG continue executando um subconjunto das VMs, o grupo nunca recupera de maneira simultânea todas as instâncias. Isso é útil quando, por exemplo, uma verificação de integridade incorreta aciona reparos desnecessários, uma regra de firewall configurada incorretamente impede que uma verificação de integridade sonda a VM ou há problemas de conectividade de rede ou infraestrutura que identificar incorretamente uma VM íntegra como não íntegra. No entanto, se um MIG zonal tiver apenas uma VM ou um MIG regional tiver apenas uma VM por zona, um MIG recria essas VMs quando elas não forem íntegras.

Política de recuperação automática

Cada MIG tem uma política de recuperação automática em que é possível configurar uma verificação de integridade e também definir um atraso inicial. O atraso inicial é o tempo que uma nova VM leva para inicializar e executar o script de inicialização. O temporizador de atraso inicial começa quando o MIG altera o campo currentAction da VM para VERIFYING. Durante o período de atraso inicial de uma VM, o MIG ignora as verificações de integridade malsucedidas, porque a VM pode estar no processo de inicialização. Isso impede que o MIG recrie prematuramente uma VM. Se a verificação de integridade receber uma resposta íntegra durante o atraso inicial, ela indica que o processo de inicialização foi concluído e que a VM está pronta.

Para mais informações sobre como configurar uma política de recuperação automática, consulte Configurar uma verificação de integridade e recuperação automática de aplicativos.

Monitorar mudanças no estado de integridade do aplicativo

Se você configurou uma verificação de integridade baseada em aplicativo para seu MIG, é possível verificar o estado de integridade de cada VM do MIG. Para mais informações, consulte Como verificar o status.

Também é possível monitorar as alterações no estado de integridade de uma VM. Para saber mais, consulte Monitorar alterações do estado de integridade.

Preços

Por padrão, quando você configura uma verificação de integridade baseada em aplicativo, o Compute Engine grava uma entrada de registro sempre que o estado de integridade de uma instância gerenciada é alterado. O Cloud Logging oferece uma cota gratuita por mês. Depois disso, a geração de registros é cobrada pelo volume de dados. Para evitar custos, é possível desativar os registros de alteração do estado de integridade.

Comportamento durante um reparo

As seções a seguir explicam o comportamento durante reparos e reparos automáticos com base na verificação de integridade do aplicativo.

Atualização durante o reparo

Por padrão, durante um reparo, um MIG recria uma VM com base no modelo de instância original usado para criar a VM. Por exemplo, se uma VM foi criada usando instance-template-a e você atualizou o MIG para usar instance-template-b no modo OPPORTUNISTIC, a recuperação automática ainda usa instance-template-a para recriar a VM.

Se você quiser que o MIG use o modelo de instância mais recente e as configurações por instância durante o reparo da VM, defina o grupo para Aplicar atualizações de configuração durante os reparos

Manusear os discos

Durante um reparo, ao recriar uma VM com base no modelo, o MIG processa diferentes tipos de discos de maneira diferente. Algumas configurações de disco podem fazer com que o reparo falhe ao tentar recriar uma VM.

Tipo de disco autodelete Comportamento durante um reparo
Novo disco permanente true O disco é recriado conforme especificado no modelo de instância. Todos os dados gravados nesse disco são perdidos quando o disco e a VM dele são recriados.
Novo disco permanente false O disco é preservado e reanexado quando o MIG recria a VM.
Disco permanente atual true O disco antigo é excluído. A operação de recriação de VM falha porque o Compute Engine não pode reanexar um disco excluído à VM. No entanto, para discos de leitura/gravação existentes, um MIG pode ter apenas uma VM porque um único disco permanente não pode ser anexado a várias VMs no modo de leitura/gravação.
Disco permanente atual false O disco antigo é reanexado conforme especificado no modelo de instância. Os dados no disco são preservados. No entanto, para discos de leitura/gravação existentes, um MIG pode ter apenas uma VM porque um único disco permanente não pode ser anexado a várias VMs no modo de leitura/gravação.
Novo SSD local N/A O disco é recriado conforme especificado no modelo de instância. Os dados em um SSD local são perdidos quando uma VM é recriada ou excluída.

O MIG não reanexa discos não especificados no modelo de instância ou nas configurações por instância, como discos que anexados a uma VM manualmente após a criação da VM.

Para manter dados importantes que foram gravados no disco, tome precauções como estas:

Se as VMs têm configurações importantes que você quer preservar, o Google também recomenda que você use uma imagem personalizada no modelo de instância. Uma imagem personalizada contém as configurações personalizadas necessárias. Ao especificar uma imagem personalizada no modelo de instância, o MIG recria as VMs usando a imagem personalizada que contém as configurações personalizadas necessárias.

Desativar consertos

É possível desativar os reparos feitos automaticamente por um MIG. Quando você desliga os reparos, o reparo de VMs com falha e o reparo com base em uma verificação de integridade do aplicativo são desativados.

Desative os reparos em um MIG em cenários como os seguintes:

  • Para investigar ou depurar uma VM com falha sem a interrupção do reparo automático.
  • Para reparar VMs manualmente ou implementar sua própria lógica de reparo.
  • Para evitar o registro de novas VMs enquanto um job em lote estiver em andamento.
  • Observar os estados de integridade do aplicativo sem reparar uma VM não íntegra.
  • Para ajustar a configuração da verificação de integridade sem reparos de acionamento falso.

Quando você desativa os reparos, o MIG não realiza nenhuma ação se uma VM no grupo falhar ou não estiver íntegra. As VMs com falha e não íntegras continuam no grupo, e o número desejado de VMs em execução no MIG (targetSize) permanece o mesmo.

Se o tipo de atualização do MIG estiver definido como proactive e um novo modelo de instância estiver disponível, o MIG tentará atualizar as VMs com falha e não íntegras.

Se você configurou uma verificação de integridade baseada em aplicativo, desativar os reparos não afetará o funcionamento da verificação de integridade. A verificação de integridade continua a sondagem do aplicativo e fornece os estados de integridade da VM. Isso permite monitorar os estados de integridade do aplicativo e impedir que o MIG repare VMs não íntegras.

Se o MIG fizer parte de um serviço de back-end de um balanceador de carga e você desativar os reparos no MIG, todas as VMs com falha e não íntegras não vão responder à verificação de integridade do balanceador de carga. Se o número dessas VMs com falha ou não íntegras no MIG aumentar, o balanceador de carga poderá reduzir o tráfego para esse MIG ou alternar para outro back-end, se configurado. Quando as VMs com falha estiverem disponíveis novamente, o balanceador de carga retoma o tráfego para o MIG.

Para mais informações, consulte Desativar reparos em um MIG.

A seguir