Reparos automáticos de instância para Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure

A habilitação de reparos automáticos de instâncias para Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure ajuda a obter alta disponibilidade para aplicativos ao manter um conjunto de instâncias íntegras. Se uma instância não íntegra for encontrada pela extensão Integridade do Aplicativo ou pelas investigações de integridade do balanceador de carga, reparos automáticos de instância tentarão recuperar a instância disparando ações de reparo, como excluir a instância não íntegra e criar outra para substituí-la, recriando a imagem da instância não íntegra ou reiniciando a instância não íntegra.

Requisitos para usar os reparos automáticos de instâncias

Habilitar o monitoramento de integridade do aplicativo para o conjunto de dimensionamento

O monitoramento de integridade do aplicativo para as instâncias deve estar habilitado para o conjunto de dimensionamento. O monitoramento de integridade pode ser feito usando a extensão de Integridade do aplicativo ou as investigações de integridade do Balanceador de carga, onde apenas uma pode ser habilitada por vez. A extensão de integridade do aplicativo ou as investigações do balanceador de carga executam o ping no ponto de extremidade do aplicativo, configurado em instâncias de máquina virtual, para determinar o status de integridade do aplicativo. Esse status de integridade é usado pelo orquestrador do conjunto de dimensionamento para monitorar a integridade das instâncias e executar reparos quando necessário.

Configurar o ponto de extremidade para fornecer o status de integridade

Antes de habilitar a política de reparos automáticos de instâncias, verifique se as instâncias do conjunto de dimensionamento têm o ponto de extremidade do aplicativo configurado para emitir o status de integridade do aplicativo. Para configurar o status de integridade na extensão de Integridade do Aplicativo, use os estados de integridade binários ou estados de integridade avançados. Para configurar o status de integridade usando investigações de integridade do Balanceador de Carga, consulte o comportamento de investigação.

Para instâncias marcadas como "Não íntegro" ou "Desconhecido" (o estado Desconhecido só está disponível com a extensão de Integridade do Aplicativo – Estados avançados de integridade), os reparos automáticos são disparados pelo conjunto de dimensionamento. Enquanto o ponto de extremidade está sendo configurado, verifique se o ponto de extremidade do aplicativo está configurado corretamente antes de habilitar a política de reparos automáticos para evitar reparos acidentais de instâncias.

Versão da API

A política de reparos automáticos é compatível com API na versão 2018-10-01 ou superior.

Há suporte pra a configuração repairAction para Recriar imagem e Reiniciar com as versões 2021-11-01 ou superiores da API de computação.

Restrições nas movimentações do recurso ou da assinatura

No momento, as movimentações de recursos ou assinaturas não são compatíveis para conjuntos de dimensionamento quando o recurso de reparos automáticos está habilitado.

Restrição para conjuntos de dimensionamento do Service Fabric

Atualmente, os conjuntos de dimensionamento do Service Fabric não suportam este recurso.

Restrição para VMs com erros de provisionamento

Atualmente, os reparos automáticos não dão suporte a cenários em que uma instância de VM está marcada como Não íntegra devido a uma falha de provisionamento. As VMs devem ser inicializadas com êxito para habilitar o monitoramento de integridade e os recursos de reparo automático.

Como funcionam os reparos automáticos de instâncias?

O recurso de reparo automático de instâncias depende do monitoramento de integridade de instâncias individuais em um conjunto de dimensionamento. As instâncias de VM em um conjunto de dimensionamento podem ser configuradas para emitir o status de integridade do aplicativo usando a extensão de Integridade do aplicativo ou as investigações de integridade do Balanceador de carga. Se uma instância for considerada não íntegra, o conjunto de dimensionamento executará uma ação de reparo pré-configurada nela. Os reparos automáticos de instância podem ser habilitados no modelo do Conjunto de Dimensionamento de Máquinas Virtuais usando o objeto automaticRepairsPolicy.

O processo de reparo automático de instâncias é o seguinte:

  1. A extensão de Integridade do aplicativo ou as investigações de integridade do Balanceador de carga executam ping no ponto de extremidade do aplicativo em cada máquina virtual no conjunto de dimensionamento, para obter o status de integridade do aplicativo para cada instância.
  2. Se o ponto de extremidade responder com um status 200 (OK), a instância será marcada como "Íntegra". Em todos os outros casos (incluindo se o ponto de extremidade estiver inacessível), a instância é marcada como "Não íntegra".
  3. Quando uma instância é considerada não íntegra, o conjunto de dimensionamento aplica a ação de reparo configurada (o padrão é Substituir) à instância não íntegra.
  4. Os reparos de instâncias são executados em lotes. Em um determinado momento, não mais do que 5% do total de instâncias no conjunto de dimensionamento são reparadas. Se um conjunto de dimensionamento tiver menos de 20 instâncias, os reparos são feitos para uma instância não íntegra por vez.
  5. O processo acima continua até que todas as instâncias não íntegras no conjunto de dimensionamento sejam reparadas.

Ações de reparo disponíveis

Há três ações de reparo disponíveis para reparos automáticos de instâncias: Substituir, Recriar imagem e Reiniciar. A ação de reparo padrão é Substituir, mas você pode configurar reparos automáticos para usar Recriar imagem ou Reiniciar, modificando a configuração repairAction no objeto automaticRepairsPolicy.

  • Substituir exclui a instância não íntegra e cria uma nova instância para substituí-la. O modelo de Conjunto de Dimensionamento de Máquinas Virtuais mais recente é usado para criar a nova instância. Essa ação de reparo é o padrão.

  • Refazer imagem aplica a operação de nova imagem à instância não íntegra.

  • Reiniciar aplica a operação de reinicialização à instância não íntegra.

A tabela a seguir compara as diferenças entre as três ações de reparo:

Ação de reparo ID da instância da VM preservada? IP privado preservado? Disco de dados gerenciado preservado? Disco do sistema operacional gerenciado preservado? Disco local (temporário) preservado?
Substituir (padrão) Não No No No Não
Recriação de imagem Sim Sim Sim Não Sim
Reiniciar Sim Sim Sim Sim Yes

Para obter detalhes sobre como atualizar sua ação de reparo na política de reparos automáticos, consulte a seção Configurar uma ação de reparo na política de reparos automáticos.

Separação em lotes

As operações de reparo automático de instâncias são executadas em lotes. Em um determinado momento, não mais do que 5% das instâncias no conjunto de dimensionamento são reparadas por meio da política de reparos automáticos. Esse processo ajuda a evitar a exclusão simultânea e a recriação de um grande número de instâncias, se perderem a integridade ao mesmo tempo.

Período de carência

Quando uma instância passa por uma operação de alteração de estado devido a uma ação PUT, PATCH ou POST executada no conjunto de dimensionamento, qualquer ação de reparo nessa instância é executada somente após o fim do período de carência. O período de carência é o período de tempo que se deve esperar até que a instância retorne ao estado íntegro. O período de carência começa após a conclusão da alteração de estado, o que ajuda a evitar operações de reparo prematuras ou acidentais. O período de carência é respeitado para qualquer instância recém-criada no conjunto de dimensionamento, incluindo aquela criada como resultado da operação de reparo. O período de carência é especificado em minutos no formato ISO 8601 e pode ser definido usando a propriedade automaticRepairsPolicy.gracePeriod. O período de cortesia pode variar de 10 a 90 minutos e tem um valor padrão de 10 minutos.

Suspensão de reparos

Os Conjuntos de Dimensionamento de Máquinas Virtuais fornecem a capacidade de suspender temporariamente os reparos automáticos de instâncias, se necessário. O serviceState para os reparos automáticos na propriedade orchestrationServices, na exibição da instância do Conjunto de Dimensionamento de Máquinas Virtuais, mostra o estado atual dos reparos automáticos. Quando um conjunto de dimensionamento é aceito nos reparos automáticos, o valor do parâmetro serviceState é definido como Em execução. Quando os reparos automáticos são suspensos para um conjunto de dimensionamento, o parâmetro serviceState é definido como Suspenso. Se automaticRepairsPolicy for definido em um conjunto de dimensionamento, mas o recurso de reparos automáticos não estiver habilitado, o parâmetro serviceState é definido como Não executando.

Se as instâncias recém-criadas para substituir as não íntegras em um conjunto de dimensionamento continuarem a permanecer não íntegras, mesmo após a execução repetida das operações de reparo, como medida de segurança, a plataforma atualizará o serviceState para que os reparos automáticos fiquem em Suspenso. Você pode retomar os reparos automáticos novamente definindo o valor de serviceState para que os reparos automáticos fiquem Em execução. Consulte as instruções detalhadas na seção sobre como Exibir e atualizar o estado do serviço da política de reparos automáticos para seu conjunto de dimensionamento.

Também é possível configurar as Regras de Alerta do Azure para monitorar as alterações do serviceState e ser notificado se os reparos automáticos forem suspensos no seu conjunto de dimensionamento. Para obter detalhes, confira Usar as regras de alerta do Azure para monitorar alterações no estado do serviço de reparos automáticos de instâncias.

Proteção de instância e reparos automáticos

Se uma instância em um conjunto de dimensionamento for protegida pela aplicação de uma das políticas de proteção, os reparos automáticos não serão executados nessa instância. Este comportamento se aplica às duas políticas de proteção: ações para Proteger contra redução de dimensionamento e para Proteger contra ajuste de dimensionamento.

Notificação de término e reparos automáticos

Se o recurso de notificação de término estiver habilitado em um conjunto de dimensionamento, então, durante uma operação para Substituir, a exclusão de uma instância não íntegra seguirá a configuração de notificação de término. Uma notificação de término é enviada por meio do serviço de metadados do Azure (eventos agendados), e a exclusão da instância é atrasada até o tempo limite de atraso que foi configurado. No entanto, a criação de uma nova instância para substituir a não íntegra não aguarda o término do tempo limite de atraso.

Habilitação da política de reparos automáticos ao criar um novo conjunto de dimensionamento

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure serão padrão para o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve executar, acesse Alteração interruptiva para clientes PowerShell/CLI do VMSS – Hub de Comunidade da Microsoft

Para habilitar a política de reparos automáticos ao criar um novo conjunto de dimensionamento, confira se todos os requisitos para optar por esse recurso foram atendidos. O ponto de extremidade do aplicativo deve ser configurado corretamente para as instâncias do conjunto de dimensionamento, para evitar o disparo acidental de reparos enquanto o ponto de extremidade está sendo configurado. Para conjuntos de dimensionamento recém-criados, qualquer reparo de instância é executado somente após a conclusão do período de carência. Para habilitar o reparo automático de instâncias em um conjunto de dimensionamento, use o objeto automaticRepairsPolicy no modelo de Conjunto de Dimensionamento de Máquinas Virtuais.

Você também pode usar este modelo de início rápido para implantar um Conjunto de Dimensionamento de Máquinas Virtuais. A investigação de integridade do balanceador de carga e os reparos automáticos de instâncias estão habilitados no conjunto de dimensionamento, com um período de carência de 30 minutos.

As etapas abaixo habilitam a política de reparos automáticos ao criar um novo conjunto de dimensionamento.

  1. Acesse Conjuntos de Dimensionamento de Máquinas Virtuais.
  2. Selecione Adicionar+ para criar um novo conjunto de dimensionamento.
  3. Vá até a guia Integridade.
  4. Localize a seção Integridade.
  5. Habilite a opção Monitorar integridade do aplicativo.
  6. Localize a seção Política de reparo automático.
  7. Ative a opção de Reparos automáticos.
  8. No Período de carência (min), especifique o período de carência em minutos. Os valores permitidos estão entre 10 e 90 minutos.
  9. Quando terminar de criar o conjunto de dimensionamento, selecione o botão Examinar + criar.

Habilitação da política de reparos automáticos ao atualizar um conjunto de dimensionamento existente

Para habilitar a política de reparos automáticos em um conjunto de dimensionamento já existente, confira se todos os requisitos para optar por esse recurso foram atendidos. O ponto de extremidade do aplicativo deve ser configurado corretamente para as instâncias do conjunto de dimensionamento, para evitar o disparo acidental de reparos enquanto o ponto de extremidade está sendo configurado. Para habilitar o reparo automático de instâncias em um conjunto de dimensionamento, use o objeto automaticRepairsPolicy no modelo de Conjunto de Dimensionamento de Máquinas Virtuais.

Depois de atualizar o modelo de um conjunto de dimensionamento existente, confira se o modelo mais recente foi aplicado a todas as instâncias do dimensionamento. Consulte as instruções sobre como atualizar as VMs com o modelo de conjunto de dimensionamento mais recente.

Você pode modificar a política de reparos automáticos de um conjunto de dimensionamento existente, usando o portal do Azure.

Observação

Habilite a extensão de Integridade do Aplicativo ou investigações de integridade do Load Balancer em seus Conjuntos de Dimensionamento de Máquinas Virtuais antes de iniciar as próximas etapas.

  1. Acesse um conjunto de dimensionamento de máquinas virtuais existente.0
  2. No menu à esquerda, em Configurações, selecione Integridade e reparo.
  3. Habilite a opção Monitorar integridade do aplicativo.

Se você estiver monitorando seu conjunto de dimensionamento usando a extensão de Integridade do Aplicativo:

  1. Escolha extensão de Integridade do Aplicativo na lista suspensa Monitor de Integridade do Aplicativo.

  2. Na lista suspensa Protocolo, escolha o protocolo de rede usado pelo aplicativo para relatar a integridade. Selecione o protocolo apropriado com base nos requisitos do aplicativo. As opções de protocolo são HTTP, HTTPS ou TCP.

  3. Na caixa de configuração Número da porta, digite a porta de rede usada para monitorar a integridade do aplicativo.

  4. Para Caminho, forneça o caminho do ponto de extremidade do aplicativo (por exemplo, "/") usado para relatar a integridade do aplicativo.

    Observação

    A extensão Integridade do Aplicativo vai executar ping para este caminho dentro de cada máquina virtual na escala definida para obter o status de saúde da aplicação para cada instância. Se você estiver usando Estados de Integridade Binários e o ponto de extremidade responder com um status 200 (OK), então a instância é marcada como "Íntegro". Em todos os outros casos (incluindo se o ponto de extremidade estiver inacessível), a instância é marcada como "Não íntegra". Para obter mais opções de estado de integridade, explore Estados de Integridade Avançados.

Se você estiver monitorando seu conjunto de dimensionamento usando investigações de integridade do SLB:

  • Escolha Investigação do balanceador de carga na lista suspensa do monitor de Integridade do Aplicativo. Para a investigação de integridade do Load Balancer, selecione uma investigação de integridade existente ou crie uma nova para monitoramento.

Para habilitar reparos automáticos:

  1. Localize a seção Política de reparo automático.
  2. Ative a opção de Reparos automáticos.
  3. No Período de carência (min), especifique o período de carência em Os valores permitidos estão entre 10 e 90 minutos.
  4. Quando terminar, selecione Salvar.

Configurar uma ação de reparo na política de reparos automáticos

A configuração repairAction em automaticRepairsPolicy permite especificar a ação de reparo desejada executada em resposta a uma instância não íntegra. Se você estiver atualizando a ação de reparo em uma política de reparos automáticos existente, primeiro desabilite os reparos automáticos no conjunto de dimensionamento e habilite novamente com a ação de reparo atualizada. Esse processo é ilustrado nos exemplos abaixo.

Este exemplo demonstra como atualizar a ação de reparo em um conjunto de dimensionamento com uma política de reparos automáticos existente. Use a API Rest versão 2021-11-01 ou superior.

Desabilitar a política de reparos automáticos existente em seu conjunto de dimensionamento

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "false"
        }
    }
}

Habilitar novamente a política de reparos automáticos com a ação de reparo desejada

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "true",
            "gracePeriod": "PT40M",
            "repairAction": "Reimage"
        }
    }
}

Exibição e atualização do estado do serviço da política de reparos automáticos de instâncias

Use Get Instance View com a versão de API 2019-12-01 ou superior para o Conjunto de Dimensionamento de Máquinas Virtuais para exibir o serviceState para reparos automáticos na propriedade orchestrationServices.

GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
{
  "orchestrationServices": [
    {
      "serviceName": "AutomaticRepairs",
      "serviceState": "Running"
    }
  ]
}

Use Definir Estado do Serviço de Orquestração para suspender ou retomar o serviceState para reparos automáticos.

POST '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2023-07-01'

{
  "serviceName": "AutomaticRepairs",
  "action": "Suspend"
}

Solucionar problemas

Falha ao habilitar a política de reparos automáticos

Se você receber um erro 'BadRequest' com uma mensagem de erro informando "Não foi possível encontrar o membro 'automaticRepairsPolicy' no objeto do tipo 'properties'", verifique a versão da API usada para o Conjunto de Dimensionamento de Máquinas Virtuais. Para este recurso é necessária a versão de API 2018-10-01 ou superior.

A instância não é reparada, mesmo com a política habilitada

A instância pode estar no período de carência. Esse período é a quantidade de tempo de espera após qualquer alteração de estado na instância antes de realizar reparos, o que ajuda a evitar reparos prematuros ou acidentais. A ação de reparo deve ocorrer depois que o período de carência for concluído para a instância.

Exibição do status de integridade do aplicativo para instâncias do conjunto de dimensionamento

Você pode usar a API Get Instance View para instâncias em um Conjunto de Dimensionamento de Máquinas Virtuais para exibir o status de integridade do aplicativo. Com o Azure PowerShell, você pode usar o cmdlet Get-AzVmssVM com o sinalizador -InstanceView. O status de integridade do aplicativo é fornecido na propriedade vmHealth.

No portal do Azure, você também pode ver o status de integridade. Vá até o conjunto de dimensionamento existente, selecione Instâncias no menu à esquerda e examine a coluna Estado de integridade do status de integridade de cada instância do conjunto de dimensionamento.

Próximas etapas

Saiba como configurar a extensão de Integridade do aplicativo ou as investigações de integridade do Balanceador de carga para seus conjuntos de dimensionamento.