Partilhar via


Reparos automáticos de instância para Conjuntos de Dimensionamento de Máquina Virtual do Azure

Habilitar reparos automáticos de instância para Conjuntos de Escala de Máquina Virtual do Azure ajuda a obter alta disponibilidade para aplicativos mantendo um conjunto de instâncias íntegras. Se uma instância não íntegra for encontrada pela extensão de integridade do aplicativo ou pelas sondas de integridade do balanceador de carga, os reparos automáticos da instância tentarão recuperá-la acionando ações de reparo, como excluir a instância não íntegra e criar uma nova para substituí-la, criar uma nova imagem da instância não íntegra ou reiniciar a instância não íntegra.

Requisitos para o uso de reparos automáticos de instâncias

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

O conjunto de dimensionamento deve ter o monitoramento da integridade do aplicativo para instâncias habilitado. O monitoramento de integridade pode ser feito usando a extensão de integridade do aplicativo ou as sondas de integridade do balanceador de carga, onde apenas uma pode ser habilitada de cada vez. A extensão de integridade do aplicativo ou o balanceador de carga investiga o ping do 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 escala para monitorar a integridade da instância e executar reparos quando necessário.

Configurar o ponto de extremidade para fornecer 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 um 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, você pode usar Estados de Integridade Binários ou Estados de Integridade Avançados. Para configurar o status de integridade usando as sondas de integridade do balanceador de carga, consulte Comportamento de sondagem.

Para instâncias marcadas como "Não íntegro" ou "Desconhecido" (o estado desconhecido só está disponível com a extensão Application Health - Rich Health States), os reparos automáticos são acionados pelo conjunto de escalas. Verifique se o ponto de extremidade do aplicativo está configurado corretamente antes de habilitar a política de reparos automáticos para evitar reparos não intencionais da instância, enquanto o ponto de extremidade está sendo configurado.

Versão da API

A política de reparos automáticos é suportada para a API de computação versão 2018-10-01 ou superior.

A repairAction configuração para Reimage e Restart é suportada para as versões de API de computação 2021-11-01 ou superiores.

Restrições em movimentações de recursos ou assinaturas

Atualmente, não há suporte para movimentos de recursos ou assinaturas para conjuntos de dimensionamento quando o recurso de reparos automáticos está habilitado.

Restrição para conjuntos de dimensionamento de malha de serviço

Atualmente, esse recurso não é suportado para conjuntos de dimensionamento de malha de serviço.

Restrição para VMs com erros de provisionamento

Atualmente, os reparos automáticos não oferecem suporte a cenários em que uma instância de VM é 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 da integridade de instâncias individuais em um conjunto de escalas. As instâncias de VM em um conjunto de escala podem ser configuradas para emitir o status de integridade do aplicativo usando a extensão de integridade do aplicativo ou as sondas de integridade do balanceador de carga. Se uma instância não estiver íntegra, o conjunto de dimensionamento executará uma ação de reparo pré-configurada na instância não íntegra. Os reparos automáticos de instância podem ser habilitados no modelo de Conjunto de Escala de Máquina Virtual usando o automaticRepairsPolicy objeto.

O processo de reparos automáticos de instâncias é o seguinte:

  1. A extensão de integridade do aplicativo ou a integridade do balanceador de carga investiga o ping do ponto de extremidade do aplicativo dentro de cada máquina virtual no conjunto de escala 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 (inclusive se o ponto de extremidade estiver inacessível), a instância será marcada como "Não íntegra".
  3. Quando uma instância não está í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ância são realizados em lotes. A qualquer momento, não mais do que 5% do total de instâncias no conjunto de escala são reparados. Se um conjunto de escala tiver menos de 20 instâncias, os reparos serão feitos para uma instância não íntegra de cada vez.
  5. O processo acima continua até que todas as instâncias não íntegras no conjunto de escala sejam reparadas.

Ações de reparação disponíveis

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

  • Replace exclui a instância não íntegra e cria uma nova instância para substituí-la. O modelo mais recente de Conjunto de Escala de Máquina Virtual é usado para criar a nova instância. Esta ação de reparo é o padrão.

  • Reimage aplica a operação reimage à instância não íntegra.

  • Restart aplica a operação restart à instância não íntegra.

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

Ação de reparação ID da instância da VM preservado? IP privado preservado? Disco de dados gerenciado preservado? Disco do SO gerenciado preservado? Disco local (temporário) preservado?
Substituir (padrão) No No No No Não
Recriar Imagem Sim Sim Sim No Sim
Reiniciar Sim Sim Sim Sim Sim

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.

Criação de batches

As operações automáticas de reparo de instância são executadas em lotes. A qualquer momento, não mais do que 5% das instâncias no conjunto de escala são reparadas através 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 forem consideradas não íntegras ao mesmo tempo.

Período de tolerâ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 escala, qualquer ação de reparo nessa instância é executada somente após o término do período de carência. Período de carência é a quantidade de tempo para permitir que a instância retorne ao estado saudável. O período de carência começa após a conclusão da mudança de estado, o que ajuda a evitar quaisquer operações de reparação prematuras ou acidentais. O período de carência é honrado para qualquer instância recém-criada no conjunto de escalas, incluindo a 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 carência pode variar entre 10 minutos e 90 minutos e tem um valor padrão de 10 minutos.

Suspensão de Reparações

Os Conjuntos de Dimensionamento de Máquina Virtual oferecem a capacidade de suspender temporariamente os reparos automáticos de instâncias, se necessário. O serviceState para reparos automáticos sob a propriedade orchestrationServices na exibição de instância do Conjunto de Escala de Máquina Virtual mostra o estado atual dos reparos automáticos. Quando um conjunto de escala é optado por reparos automáticos, o valor do parâmetro serviceState é definido como Running. Quando os reparos automáticos são suspensos para um conjunto de escalas, o parâmetro serviceState é definido como Suspended. Se automaticRepairsPolicy estiver definido em um conjunto de escalas, mas o recurso de reparos automáticos não estiver habilitado, o parâmetro serviceState será definido como Não em execução.

Se as instâncias recém-criadas para substituir as não íntegras em um conjunto de escala continuarem a não estar íntegras mesmo depois de executar repetidamente operações de reparo, então, como medida de segurança, a plataforma atualiza o serviceState para reparos automáticos para Suspended. Você pode retomar os reparos automáticos novamente definindo o valor de serviceState para reparos automáticos como Running. Instruções detalhadas são fornecidas na seção sobre visualização e atualização do estado de serviço da política de reparos automáticos para seu conjunto de escalas.

Você também pode configurar as Regras de Alerta do Azure para monitorar as alterações de serviceState e ser notificado se os reparos automáticos forem suspensos em seu conjunto de escala. Para obter detalhes, consulte Usar regras de alerta do Azure para monitorar alterações no estado do serviço de reparos automáticos de instância.

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

Se uma instância em um conjunto de escala 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. Esse comportamento se aplica às políticas de proteção: Proteger contra aumento de escala e Proteger contra ações de conjunto de escala.

Notificação de encerramento e reparações automáticas

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

Ativando a política de reparos automáticos ao criar um novo conjunto de escalas

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão 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 tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub

Para habilitar a política de reparos automáticos ao criar um novo conjunto de escalas, certifique-se de que todos os requisitos para optar por esse recurso sejam atendidos. O ponto de extremidade do aplicativo deve ser configurado corretamente para instâncias de conjunto de escala para evitar o acionamento de reparos não intencionais enquanto o ponto de extremidade está sendo configurado. Para conjuntos de escala recém-criados, todos os reparos de instância são executados somente após a conclusão do período de carência. Para habilitar o reparo automático de instância em um conjunto de escala, use o objeto automaticRepairsPolicy no modelo de Conjunto de Escala de Máquina Virtual.

Você também pode usar esse modelo de início rápido para implantar um Conjunto de Dimensionamento de Máquina Virtual. No início rápido, o conjunto de dimensionamento tem uma sonda de integridade do balanceador de carga e reparos automáticos de instância habilitados com um período de cortesia configurado de 30 minutos.

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

  1. Vá para Conjuntos de Dimensionamento de Máquina Virtual.
  2. Selecione + Adicionar para criar um novo conjunto de escalas.
  3. Vá para a guia Saúde .
  4. Localize a seção Saúde .
  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 Reparos automáticos.
  8. Em 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 novo conjunto de escalas, selecione o botão Rever + criar .

Ativando a política de reparos automáticos ao atualizar um conjunto de dimensionamento existente

Antes de ativar a política de reparos automáticos em um conjunto de dimensionamentos existente, verifique se todos os requisitos para optar por esse recurso foram atendidos. O ponto de extremidade do aplicativo deve ser configurado corretamente para instâncias de conjunto de escala para evitar o acionamento de reparos não intencionais enquanto o ponto de extremidade está sendo configurado. Para habilitar o reparo automático de instância em um conjunto de escala, use o objeto automaticRepairsPolicy no modelo de Conjunto de Escala de Máquina Virtual.

Depois de atualizar o modelo de um conjunto de escala existente, certifique-se de que o modelo mais recente seja aplicado a todas as instâncias da escala. Consulte as instruções sobre como atualizar as VMs com o modelo de conjunto de escala mais recente.

Você pode modificar a política de reparos automáticos de um conjunto de escala existente por meio do portal do Azure.

Nota

Habilite a extensão de integridade do aplicativo ou as sondas de integridade do balanceador de carga em seus conjuntos de dimensionamento de máquina virtual antes de iniciar as próximas etapas.

  1. Vá para um Conjunto de Dimensionamento de Máquina Virtual existente.0
  2. Em Configurações , no menu à esquerda, selecione Saúde e reparo.
  3. Habilite a opção Monitorar integridade do aplicativo.

Se você estiver monitorando sua escala definida usando a extensão Integridade do Aplicativo:

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

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

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

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

    Nota

    A extensão Integridade do Aplicativo executará ping nesse caminho dentro de cada máquina virtual no conjunto de escala para obter o status de integridade do aplicativo para cada instância. Se você estiver usando Estados de Integridade Binários e o ponto de extremidade responder com um status 200 (OK), a instância será marcada como "Íntegra". Em todos os outros casos (inclusive se o ponto de extremidade estiver inacessível), a instância será marcada como "Não íntegra". Para obter mais opções de estado de saúde, explore Rich Health States.

Se você estiver monitorando seu conjunto de escalas usando sondas SLB Health:

  • Escolha Sonda de balanceador de carga na lista suspensa Monitor de integridade do aplicativo.- Para a sonda de integridade do Balanceador de Carga, selecione uma sonda de integridade existente ou crie uma nova sonda de integridade para monitoramento.

Para ativar reparações automáticas:

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

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

A repairAction configuração 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, deverá primeiro desabilitar os reparos automáticos no conjunto de escala e reativá-los com a ação de reparo atualizada. Este processo é ilustrado nos exemplos abaixo.

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

Desative a política de reparos automáticos existente no seu conjunto de escalas

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

Reative 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"
        }
    }
}

Exibindo e atualizando o estado de serviço da política de reparos automáticos de instâncias

Use Get Instance View with API version 2019-12-01 ou superior para Virtual Machine Scale set para exibir o serviceState para reparos automáticos sob a propriedade orchestrationServices.

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

Use set Orchestration Service State 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"
}

Resolver problemas

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

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

Instância não sendo reparada mesmo quando a política está habilitada

A instância poderia estar em período de carência. Este período é o 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 reparação deve acontecer assim que o período de carência for completado para a instância.

Exibindo o status de integridade do aplicativo para instâncias de conjunto de escala

Você pode usar a API Get Instance View para instâncias em um Conjunto de Dimensionamento de Máquina Virtual 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 sob a propriedade vmHealth.

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

Próximos passos

Saiba como configurar a extensão de Integridade do Aplicativo ou as sondas de integridade do balanceador de carga para seus conjuntos de escala.