Atualizações automáticas da imagem do sistema operacional do conjunto de dimensionamento de máquinas virtuais do Azure

Observação

Muitas das etapas listadas neste documento se aplicam a Conjuntos de Dimensionamento de Máquinas Virtuais usando o modo Orquestração Uniforme. É recomendável usar a Orquestração Flexível para cargas de trabalho novas. Para saber mais, confira Modos de orquestração para Conjuntos de Dimensionamento de Máquinas Virtuais no Azure.

Habilitar as atualizações automáticas de imagem do sistema operacional em seu conjunto de dimensionamento ajuda a facilitar o gerenciamento de atualizações, atualizando de modo automático e seguro o disco do sistema operacional para todas as instâncias no conjunto de dimensionamento.

A atualização automática de sistema operacional tem as seguintes características:

  • Depois de configurada, a imagem mais recente do sistema operacional publicada pelos editores de imagem é aplicada automaticamente ao conjunto de dimensionamento sem intervenção do usuário.
  • Atualiza lotes de instâncias de maneira ininterrupta sempre que uma nova imagem é publicada pelo editor.
  • Integra-se com as investigações de integridade do aplicativo e a extensão de Integridade do Aplicativo.
  • Funciona para todos os tamanhos de VM e para imagens Windows e Linux, incluindo imagens personalizadas por meio da Galeria de Computação do Azure.
  • É possível recusar os upgrades automáticos a qualquer momento (os upgrades do sistema operacional podem ser iniciados manualmente também).
  • O disco do sistema operacional de uma VM é substituído pelo novo disco do sistema operacional criado com a versão mais recente da imagem. As extensões configuradas e os scripts de dados personalizados são executados, enquanto os discos de dados persistentes são retidos.
  • O sequenciamento de extensões é compatível.
  • Pode ser habilitada em um conjunto de dimensionamento de qualquer tamanho.

Observação

Antes de habilitar atualizações automáticas de imagem do sistema operacional, verifique a seção de requisitos desta documentação.

Como a atualização automática de imagem do sistema operacional funciona?

Uma atualização funciona substituindo o disco do sistema operacional de uma VM por um novo disco criado usando a versão da imagem. As extensões configuradas e os scripts de dados personalizados são executados no disco do sistema operacional, enquanto os discos de dados são retidos. Para minimizar o tempo de inatividade do aplicativo, as atualizações ocorrem em lotes, com até 20% do conjunto de dimensionamento sendo atualizado de cada vez.

Você pode integrar uma investigação de integridade do aplicativo Azure Load Balancer ou a extensão de integridade do aplicativo para acompanhar a integridade do aplicativo após uma atualização. É recomendável incorporar uma pulsação do aplicativo para validar o sucesso da atualização.

Atualizações com priorização de disponibilidade

O modelo com priorização de disponibilidade para atualizações orquestradas da plataforma descrito abaixo garante que as configurações de disponibilidade no Azure sejam respeitadas em vários níveis de disponibilidade.

Entre regiões:

  • Uma atualização se moverá entre o Azure globalmente em fases para evitar falhas de implantação em todo o Azure.
  • Uma “fase” pode ter uma ou mais regiões e uma atualização progride entre as fases somente se as VMs qualificadas em uma fase forem atualizadas com êxito.
  • Regiões emparelhadas geograficamente não são atualizadas simultaneamente e não podem estar na mesma fase regional.
  • O sucesso de uma atualização é medido pelo acompanhamento da integridade de uma VM após a atualização.

Dentro de uma região:

  • As VMs de diferentes Zonas de Disponibilidade não são atualizadas simultaneamente com a mesma atualização.

Dentro de um 'conjunto':

  • Todas as VMs em um conjunto de dimensionamento comum não são atualizadas simultaneamente.
  • As VMs de um conjunto comum de dimensionamento de máquinas virtuais são agrupadas em lotes e atualizadas dentro dos limites do domínio de atualização, conforme descrito abaixo.

O processo de atualizações orquestradas da plataforma é seguido para a implantação de atualizações de imagem da plataforma do sistema operacional com suporte todos os meses. Para imagens personalizadas por meio da Galeria de Computação do Azure, uma atualização de imagem só é aprimorada para uma região específica do Azure quando a nova imagem é publicada e replicada para a região desse conjunto de dimensionamento.

Atualizar VMs em um conjunto de dimensionamento

A região de um conjunto de dimensionamento se torna qualificada para obter atualizações de imagem por meio do processo de disponibilidade primeiro para imagens de plataforma ou da replicação de novas versões de imagens personalizadas para a Galeria de Imagens Compartilhadas. A atualização de imagem é aplicada a um conjunto de dimensionamento individual em lote da seguinte maneira:

  1. Antes de iniciar o processo de atualização, o orquestrador garantirá que no máximo 20% das instâncias em todo o conjunto de dimensionamento não estejam íntegras (por qualquer motivo).
  2. O orquestrador de atualização identifica o lote de instâncias de VM a serem atualizadas, tendo qualquer lote um máximo de 20% da contagem total de instâncias, sujeito a um tamanho de lote mínimo de uma máquina virtual. Não há nenhum requisito mínimo de tamanho do conjunto de dimensionamento e os conjuntos de dimensionamento com cinco ou menos instâncias terão uma VM por lote de atualização (tamanho mínimo do lote).
  3. O disco do SO de cada VM no lote de atualização selecionado é substituído por um novo disco do SO criado a partir da imagem. Todas as extensões e configurações especificadas no modelo do conjunto de dimensionamento são aplicadas à instância atualizada.
  4. Para conjuntos de dimensionamento com investigações de integridade do aplicativo ou extensão de Integridade do Aplicativo, a atualização aguardará até cinco minutos para que a instância se torne íntegra antes de passar para a atualização do próximo lote. Se uma instância não recuperar a integridade em até cinco minutos após uma atualização, por padrão, o disco do sistema operacional anterior para a instância será restaurado.
  5. O orquestrador de atualização também acompanha o percentual das instâncias que se tornarão não íntegro após uma atualização. A atualização será interrompida se mais de 20% das instâncias atualizadas se tornarem não íntegras durante o processo de atualização.
  6. O processo acima continua até todas as instâncias no conjunto de dimensionamento serem atualizadas.

O orquestrador de atualização do sistema operacional do conjunto de dimensionamento verifica a integridade geral do conjunto de dimensionamento antes de atualizar cada lote. Ao atualizar um lote, pode haver outras atividades manutenção planejada ou não planejada simultânea acontecendo que podem afetar a integridade de suas instâncias de conjunto de dimensionamento. Nesses casos, se há mais de 20% das instâncias do conjunto de dimensionamento que se tornam não íntegras, a atualização do conjunto de dimensionamento é interrompida no final do lote atual.

Para modificar as configurações padrão associadas às Atualizações sem interrupção, analise a Política de atualização sem interrupção do Azure.

Observação

A atualização automática do sistema operacional não atualiza a SKU da imagem de referência no conjunto de dimensionamento. Para alterar o SKU (como o Ubuntu 18.04 -LTS para 20.04 -LTS), você deve atualizar o modelo do conjunto de escalas diretamente com o SKU da imagem desejada. O editor de imagens e a oferta não podem ser alterados para um conjunto de dimensionamento atual.

Atualização de imagem do sistema operacional versus refazer imagem

Tanto a Atualização de imagem do sistema operacional quanto Refazer imagem são métodos usados para atualizar VMs em um conjunto de dimensionamento, mas atendem a diferentes finalidades e têm impactos distintos.

A atualização da imagem do sistema operacional envolve a atualização da imagem do sistema operacional subjacente que é usada para criar novas instâncias em um conjunto de dimensionamento. Quando você executar uma atualização de imagem do sistema operacional, o Azure criará novas instâncias de VM com a imagem do sistema operacional atualizada e substituirá gradualmente as instâncias de VM antigas no conjunto de dimensionamento pelas novas. Esse processo normalmente é executado em estágios para garantir alta disponibilidade. As atualizações de imagem do sistema operacional são uma maneira não disruptiva de aplicar atualizações ou alterações ao sistema operacional subjacente das VMs em um conjunto de dimensionamento. As instâncias de VM existentes não são afetadas até serem substituídas pelas novas instâncias.

Refazer a imagem de uma instância de VM em um conjunto de dimensionamento é uma ação mais imediata e disruptiva. Quando você optar por refazer a imagem de uma instância de VM, o Azure interromperá a instância de VM selecionada, executará a operação de nova imagem e reiniciará a VM usando a mesma imagem do sistema operacional. Isso reinstala efetivamente o sistema operacional nessa instância de VM específica. A produção de uma nova imagem normalmente é usada quando você precisa solucionar problemas ou redefinir uma instância de VM específica devido a problemas com essa instância.

Principais diferenças:

  • A atualização de imagem do sistema operacional é um processo gradual e sem interrupções que atualiza a imagem do sistema operacional para todo o conjunto de dimensionamento de máquinas virtuais ao longo do tempo, garantindo um impacto mínimo na execução de cargas de trabalho.
  • Refazer imagem é uma ação mais imediata e disruptiva que afeta apenas a instância de VM selecionada, interrompendo-a temporariamente e reinstalando o sistema operacional.

Quando usar cada método:

  • Use a atualização de imagem do sistema operacional quando quiser atualizar a imagem do sistema operacional para todo o conjunto de dimensionamento, mantendo a alta disponibilidade.
  • Use a opção de refazer imagem quando precisar solucionar problemas ou redefinir uma instância de VM específica dentro do conjunto de dimensionamento de máquinas virtuais.

É essencial planejar e escolher cuidadosamente o método apropriado com base em seus requisitos específicos para minimizar qualquer interrupção em seus aplicativos e serviços em execução em um conjunto de dimensionamento de máquinas virtuais.

Imagens do sistema operacional com suporte

No momento, há suporte apenas determinadas imagens de plataforma do sistema operacional. Haverá suporte para imagens personalizadas se o conjunto de dimensionamento usar imagens personalizadas por meio da Galeria de Computação do Azure.

Os seguintes SKUs de plataforma são compatíveis (periodicamente novos são adicionados):

Publisher Oferta de sistema operacional Sku
Canônico UbuntuServer 18.04-LTS
Canônico UbuntuServer 18_04-LTS-Gen2
Canônico 0001-com-ubuntu-server-focal 20_04-LTS
Canônico 0001-com-ubuntu-server-focal 20_04-LTS-Gen2
Canônico 0001-com-ubuntu-server-jammy 22_04-LTS
Canônico 0001-com-ubuntu-server-jammy 22_04-LTS-Gen2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-1
MicrosoftCblMariner Cbl-Mariner 1-Gen2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-2-Gen2
MicrosoftSqlServer Sql2017-ws2019 corporativo
MicrosoftWindowsServer WindowsServer 2012-R2-Datacenter
MicrosoftWindowsServer WindowsServer 2016-Datacenter
MicrosoftWindowsServer WindowsServer 2016-Datacenter-gensecond
MicrosoftWindowsServer WindowsServer 2016-Datacenter-gs
MicrosoftWindowsServer WindowsServer 2016-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-Containers
MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-containers-gs
MicrosoftWindowsServer WindowsServer 2019-Datacenter
MicrosoftWindowsServer WindowsServer 2019-Datacenter-Core
MicrosoftWindowsServer WindowsServer 2019-Datacenter-Core-with-Containers
MicrosoftWindowsServer WindowsServer 2019-Datacenter-gensecond
MicrosoftWindowsServer WindowsServer 2019-Datacenter-gs
MicrosoftWindowsServer WindowsServer 2019-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2019-Datacenter-with-Containers
MicrosoftWindowsServer WindowsServer 2019-Datacenter-with-Containers-gs
MicrosoftWindowsServer WindowsServer 2022-Datacenter
MicrosoftWindowsServer WindowsServer 2022-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2022-Datacenter-smalldisk-g2
MicrosoftWindowsServer WindowsServer 2022-Datacenter-core
MicrosoftWindowsServer WindowsServer 2022-Datacenter-core-smalldisk
MicrosoftWindowsServer WindowsServer 2022-Datacenter-g2
MicrosoftWindowsServer WindowsServer Datacenter-core-20h2-with-containers-smalldisk-gs
MicrosoftWindowsServer WindowsServer 2022-Datacenter-azure-edition
MicrosoftWindowsServer WindowsServer 2022-Datacenter-azure-edition-smalldisk

Requisitos para configurar a atualização automática de imagem do sistema operacional

  • A propriedade version da imagem precisa ser definida como mais recente.
  • Você precisa usar as investigações de integridade do aplicativo ou a extensão de Integridade do Aplicativo para conjuntos de dimensionamento que não sejam do Service Fabric. Para saber os requisitos do Service Fabric, confira o requisito do Service Fabric.
  • Use a API de Computação versão 2018-10-01 ou superior.
  • Verifique se os recursos externos especificados no modelo de conjunto de dimensionamento estão disponíveis e atualizados. Exemplos incluem o URI SAS para conteúdo de inicialização nas propriedades de extensão da VM, o conteúdo na conta de armazenamento, a referência a segredos no modelo e outros.
  • Para conjuntos de dimensionamento usando máquinas virtuais do Windows, começando com a API de computação versão 2019-03-01, a propriedade virtualMachineProfile.osProfile.windowsConfiguration.enableAutomaticUpdates deve ser definida como false na definição do modelo do conjunto de dimensionamento. A propriedade enableAutomaticUpdates habilita a aplicação de patch na VM em que "Windows Update" aplica patches do sistema operacional sem substituir o disco do sistema operacional. Com as atualizações automáticas de imagens do SO habilitadas em seu conjunto de dimensionamento, o que pode ser feito definindo automaticOSUpgradePolicy.enableAutomaticOSUpgrade para true, não é necessário um processo de aplicação de patch extra por meio do Windows Update.

Observação

Após um disco do sistema operacional ter sido substituído ao refazer sua imagem ou fazer um upgrade, as letras das unidades dos discos de dados anexados poderão ser reatribuídas. Para manter as mesmas letras da unidade para os discos anexados, sugerimos que você use um script de inicialização personalizado.

Requisitos do Service Fabric

Se você estiver usando o Service Fabric, verifique se as seguintes condições foram atendidas:

  • O nível de durabilidade do Service Fabric é Prata ou Ouro. Se a durabilidade do Service Fabric é Bronze, somente tipos de nó sem estado dão suporte a atualizações automáticas de imagem do sistema operacional).
  • A extensão do Service Fabric na definição do modelo do conjunto de dimensionamento deve ter TypeHandlerVersion 1.1 ou superior.
  • O nível de durabilidade deve ser o mesmo no cluster do Service Fabric e na extensão do Service Fabric na definição do modelo do conjunto de dimensionamento.
  • Uma investigação de integridade adicional ou o uso da extensão de integridade do aplicativo não é necessário para durabilidde prata ou ouro. A durabilidade bronze com tipos de nó somente sem estado requer uma investigação de integridade adicional.
  • A propriedade virtualMachineProfile.osProfile.windowsConfiguration.enableAutomaticUpdates deve ser definida como false na definição do modelo do conjunto de dimensionamento. A enableAutomaticUpdates habilita a adoção de aplicação de patch na VM usando o "Windows Update" e não tem suporte em conjuntos de dimensionamento Service Fabric. Você deve usar a propriedade automaticOSUpgradePolicy.enableAutomaticOSUpgrade em vez disso.

Verifique se as configurações de durabilidade não são incompatíveis no cluster Service Fabric e na extensão do Service Fabric, pois isso resultaria em erros de atualização. Os níveis de durabilidade podem ser modificados de acordo com as diretrizes descritas nesta página.

Atualização automática da imagem do sistema operacional para imagens personalizadas

A atualização automática de imagem do sistema operacional tem suporte para imagens personalizadas implantadas por meio da Galeria de Computação do Azure. Outras imagens personalizadas não têm suporte para atualizações automáticas de imagem do sistema operacional.

Requisitos adicionais para imagens personalizadas

  • O processo de instalação e configuração da atualização automática da imagem do sistema operacional é o mesmo para todos os conjuntos de dimensionamento, conforme detalhado na seção de configuração desta página.
  • As instâncias de conjuntos de escala configuradas para atualizações automáticas de imagem do sistema operacional serão atualizadas para a versão da imagem da Galeria de Computação do Azure quando uma nova versão da imagem for publicada e replicada para a região desse conjunto de escala. Se a nova imagem não for replicada para a região onde a escala está implantada, as instâncias do conjunto de escala não serão atualizadas para a versão. A replicação de imagem regional permite que você controle a distribuição da nova imagem para seus conjuntos de dimensionamento.
  • A nova versão da imagem não deve ser excluída da versão dessa imagem da galeria. As versões de imagem excluídas da versão da imagem da galeria não são implementadas na escala definida por meio da atualização automática da imagem do sistema operacional.

Observação

Pode levar até 3 horas para que um conjunto de dimensionamento dispare a primeira distribuição de atualizações de imagem depois que o conjunto de dimensionamento for configurado pela primeira vez para atualizações automáticas do sistema operacional devido a determinados fatores, como manutenção do Windows ou outras restrições. Os clientes com a imagem mais recente podem não receber uma atualização até que uma nova imagem esteja disponível.

Configurar a atualização automática da imagem do sistema operacional

Para configurar a atualização automática da imagem do sistema operacional, verifique se automaticOSUpgradePolicy.enableAutomaticOSUpgrade está definido como true na definição do modelo do conjunto de dimensionamento.

Observação

O modo de política de atualização e a política de atualização automática do sistema operacional são configurações separadas e controlam diferentes aspectos do conjunto de dimensionamento. Quando houver alterações no modelo do conjunto de dimensionamento, a política de atualização mode determinará o que acontece com as instâncias existentes no conjunto de dimensionamento. No entanto, a política de atualização enableAutomaticOSUpgrade automática do sistema operacional é específica para a imagem do sistema operacional e controla as alterações feitas pelo editor de imagem e determina o que acontece quando há uma atualização para a imagem.

Observação

Se enableAutomaticOSUpgrade estiver definido como true, enableAutomaticUpdates será automaticamente definido como false e não poderá ser definido como verdadeiro.

API REST

O exemplo a seguir descreve como configurar atualizações automáticas do sistema operacional em um modelo de conjunto de dimensionamento:

PUT or PATCH on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version=2021-03-01`
{
  "properties": {
    "upgradePolicy": {
      "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade":  true
      }
    }
  }
}

PowerShell do Azure

Use o cmdlet New-AzVmss para configurar atualizações automáticas de imagem do sistema operacional para o conjunto de dimensionamento durante o provisionamento. O seguinte exemplo configura atualizações automáticas para o conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

New-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -AutomaticOSUpgrade $true

Use o cmdlet Update-AzVmss para configurar atualizações automáticas de imagem do sistema operacional para seu conjunto de dimensionamento existente. O seguinte exemplo configura atualizações automáticas para o conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -AutomaticOSUpgrade $true

CLI do Azure 2.0

Use az vmss create para configurar atualizações automáticas de imagem do sistema operacional para o conjunto de dimensionamento durante o provisionamento. Use a CLI do Azure 2.0.47 ou posterior. O seguinte exemplo configura atualizações automáticas para o conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

az vmss create --name myScaleSet --resource-group myResourceGroup --set UpgradePolicy.AutomaticOSUpgradePolicy.EnableAutomaticOSUpgrade=true

Use az vmss update para configurar atualizações automáticas de imagem do sistema operacional para seu conjunto de dimensionamento existente. Use a CLI do Azure 2.0.47 ou posterior. O seguinte exemplo configura atualizações automáticas para o conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

az vmss update --name myScaleSet --resource-group myResourceGroup --set UpgradePolicy.AutomaticOSUpgradePolicy.EnableAutomaticOSUpgrade=true

Observação

Depois de configurar atualizações automáticas de imagem de SO para seu conjunto de dimensionamento, você também deverá colocar as VMs do conjunto de dimensionamento para o modelo de conjunto de dimensionamento mais recente se o conjunto de dimensionamento usar a política de atualização 'Manual'.

Modelos de ARM

O exemplo a seguir descreve como definir atualizações automáticas do sistema operacional em um modelo de conjunto de dimensionamento por meio de modelos do Azure Resource Manager (modelos do ARM):

"properties": {
   "upgradePolicy": {
     "mode": "Automatic",
     "RollingUpgradePolicy": {
         "BatchInstancePercent": 20,
         "MaxUnhealthyInstancePercent": 25,
         "MaxUnhealthyUpgradedInstancePercent": 25,
         "PauseTimeBetweenBatches": "PT0S"
     },
    "automaticOSUpgradePolicy": {
      "enableAutomaticOSUpgrade": true,
        "useRollingUpgradePolicy": true,
        "disableAutomaticRollback": false
    }
  },
  },
"imagePublisher": {
   "type": "string",
   "defaultValue": "MicrosoftWindowsServer"
 },
 "imageOffer": {
   "type": "string",
   "defaultValue": "WindowsServer"
 },
 "imageSku": {
   "type": "string",
   "defaultValue": "2022-datacenter"
 },
 "imageOSVersion": {
   "type": "string",
   "defaultValue": "latest"
 }

Bicep

O exemplo a seguir descreve como configurar atualizações automáticas do sistema operacional em um modelo de conjunto de dimensionamento por meio do Bicep:

properties: {
    overprovision: overProvision
    upgradePolicy: {
      mode: 'Automatic'
      automaticOSUpgradePolicy: {
        enableAutomaticOSUpgrade: true
      }
    }
}

Usando investigações de integridade do aplicativo

Durante a atualização do sistema operacional, as instâncias de VM em um conjunto de dimensionamento são atualizadas em um lote por vez. A atualização deverá continuar apenas se o aplicativo do cliente for íntegro nas instâncias de VM atualizadas. Recomendamos que o aplicativo ofereça sinais de integridade ao mecanismo de atualização do sistema operacional do conjunto de dimensionamento. Por padrão, durante os upgrades do sistema operacional, a plataforma considera o estado de energia da VM e o estado de provisionamento da extensão para determinar se uma instância VM é íntegra após uma atualização. Durante a atualização do sistema operacional de uma instância VM, o disco do sistema operacional em uma instância VM é substituído por um novo com base na versão mais recente da imagem. Após a conclusão de atualização do sistema operacional, as extensões configuradas são executadas nessas VMs. O aplicativo é considerado íntegro somente quando todas as extensões na instância são provisionadas com êxito.

Um conjunto de dimensionamento pode opcionalmente ser configurado com Investigações de integridade do aplicativo para oferecer à plataforma informações precisas sobre o estado em andamento do aplicativo. As Investigações de integridade do aplicativo são Investigações personalizadas do Load Balancer usadas como um sinal de integridade. O aplicativo em execução em uma instância VM do conjunto de dimensionamento pode responder a solicitações HTTP ou TCP externas que indica se ele está íntegro. Para obter mias informações sobre como as Investigações personalizadas do Load Balancer funcionam, consulte Noções básicas de investigações do balanceador de carga. Não há suporte para investigações de integridade de aplicativo para conjuntos de dimensionamento do Service Fabric. Conjuntos de dimensionamento que não são do Service Fabric exigem investigações de integridade do aplicativo do Load Balancer ou a extensão de Integridade do Aplicativo.

Se o conjunto de dimensionamento estiver configurado para usar vários grupos de posicionamento, as investigações que usarem o Load Balancer Standard precisarão ser usadas.

Observação

Apenas uma fonte de monitoramento de integridade pode ser utilizada para um Conjunto de Dimensionamento de Máquinas Virtuais, uma Extensão de Integridade do Aplicativo ou uma Investigação de Integridade. Se você tiver as duas opções habilitadas, precisará remover uma delas antes de utilizar os serviços de orquestração como Reparos de Instância ou Atualizações automáticas do SO.

Configurando uma Investigação personalizada do Load Balancer como uma investigação de integridade do aplicativo em um conjunto de dimensionamento

Como uma melhor prática, crie uma investigação do balanceador de carga explicitamente para a integridade do conjunto de dimensionamento. O mesmo ponto de extremidade para uma investigação de HTTP ou TCP existente pode ser usado, mas uma investigação de integridade pode exigir um comportamento diferente de uma investigação de balanceador de carga tradicional. Por exemplo, uma investigação tradicional do balanceador de carga poderá ser retornada não íntegra se a carga na instância for alta demais, enquanto que isso pode não ser adequado para determinar a integridade da instância durante uma atualização automática do sistema operacional. Configure a investigação para que ela tenha uma alta taxa de sondagem de menos de 2 minutos.

A investigação do balanceador de carga pode ser referenciada no networkProfile do conjunto de dimensionamento e associada a um balanceador de carga interno ou público da seguinte maneira:

"networkProfile": {
  "healthProbe" : {
    "id": "[concat(variables('lbId'), '/probes/', variables('sshProbeName'))]"
  },
  "networkInterfaceConfigurations":
  ...
}

Observação

Ao usar as atualizações automáticas do sistema operacional com o Service Fabric, a nova imagem do sistema operacional é implementada ao domínio de atualização pelo domínio de atualização para manter a alta disponibilidade dos serviços em execução no Service Fabric. Para usar atualizações automáticas do sistema operacional no Service Fabric, o cluster deve ser configurado para usar a camada de durabilidade prata ou superior. Para a camada de durabilidade bronze, a atualização automática de imagem do sistema operacional tem suporte apenas para tipos de nó sem estado. Para obter mais informações sobre as características de durabilidade de clusters do Service Fabric, consulte esta documentação.

Manter as credenciais atualizadas

Se o conjunto de dimensionamento usar qualquer credencial para acessar recursos externos, como uma extensão de VM configurada para usar um token SAS para a conta de armazenamento, verifique se as credenciais estão atualizadas. Se qualquer credencial, incluindo certificados e tokens, tiver expirado, a atualização falhará e o primeiro lote de VMs será deixado em estado de falha.

As etapas recomendadas para recuperar VMs e reativar a atualização automática do sistema operacional se houver uma falha de autenticação de recurso são:

  • Gerar novamente o token (ou qualquer outra credencial) passado para suas extensões.
  • Certificar-se de que qualquer credencial usada de dentro da VM para se comunicar com entidades externas esteja atualizada.
  • Atualizar extensões no modelo do conjunto de escala com quaisquer tokens novos.
  • Implantar o conjunto de escala atualizado, que atualizará todas as instâncias de VM, incluindo aquelas com falha.

Usando a extensão de Integridade do Aplicativo

A extensão Integridade do Application Health é implantada em uma instância do conjunto de dimensionamento de máquinas virtuais e gera relatórios sobre a integridade da VM na instância do conjunto de dimensionamento. Você pode configurar a extensão para investigação em um ponto de extremidade do aplicativo e atualizar o status do aplicativo nessa instância. Esse status da instância é verificada pelo Azure para determinar se uma instância é elegível para operações de atualização.

Já que a extensão relata a integridade de dentro de uma VM, a extensão pode ser usada em situações em que investigações externas como investigações de Integridade do Aplicativo (que utilizam investigações personalizadas do Azure Load Balancer) não podem ser usadas.

Há várias maneiras de implantar a extensão de Integridade do Aplicativo para conjuntos de dimensionamento, conforme detalhado nos exemplos neste artigo.

Observação

Apenas uma fonte de monitoramento de integridade pode ser utilizada para um Conjunto de Dimensionamento de Máquinas Virtuais, uma Extensão de Integridade do Aplicativo ou uma Investigação de Integridade. Se você tiver as duas opções habilitadas, precisará remover uma delas antes de utilizar os serviços de orquestração como Reparos de Instância ou Atualizações automáticas do SO.

Obter o histórico de atualizações automáticas de imagem do sistema operacional

Você pode verificar o histórico da atualização do sistema operacional mais recente executado no conjunto de dimensionamento com o Azure PowerShell, a CLI do Azure 2.0 ou as APIs REST. Você pode obter o histórico das últimas cinco tentativas de atualização do sistema operacional nos últimos dois meses.

API REST

O seguinte exemplo usa a API REST para verificar o status do conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

GET on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/osUpgradeHistory?api-version=2021-03-01`

A chamada GET retorna propriedades semelhantes à saída de exemplo a seguir:

{
	"value": [
		{
			"properties": {
        "runningStatus": {
          "code": "RollingForward",
          "startTime": "2018-07-24T17:46:06.1248429+00:00",
          "completedTime": "2018-04-21T12:29:25.0511245+00:00"
        },
        "progress": {
          "successfulInstanceCount": 16,
          "failedInstanceCount": 0,
          "inProgressInstanceCount": 4,
          "pendingInstanceCount": 0
        },
        "startedBy": "Platform",
        "targetImageReference": {
          "publisher": "MicrosoftWindowsServer",
          "offer": "WindowsServer",
          "sku": "2016-Datacenter",
          "version": "2016.127.20180613"
        },
        "rollbackInfo": {
          "successfullyRolledbackInstanceCount": 0,
          "failedRolledbackInstanceCount": 0
        }
      },
      "type": "Microsoft.Compute/virtualMachineScaleSets/rollingUpgrades",
      "location": "westeurope"
    }
  ]
}

Azure PowerShell

Use o cmdlet Get-AzVmss para verificar o histórico de atualização do sistema operacional para seu conjunto de dimensionamento. O seguinte exemplo detalha o modo como você examina o status de atualização do sistema operacional para um conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -OSUpgradeHistory

CLI do Azure 2.0

Use az vmss get-os-upgrade-history para verificar o histórico de atualização do sistema operacional para seu conjunto de dimensionamento. Use a CLI do Azure 2.0.47 ou posterior. O seguinte exemplo detalha o modo como você examina o status de atualização do sistema operacional para um conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

az vmss get-os-upgrade-history --resource-group myResourceGroup --name myScaleSet

Como obter a versão mais recente de uma imagem do sistema operacional da plataforma?

Você pode obter as versões de imagem disponíveis para SKUs de atualização automática do SO com suporte usando os exemplos abaixo:

API REST

GET on `/subscriptions/subscription_id/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions?api-version=2021-03-01`

Azure PowerShell

Get-AzVmImage -Location "westus" -PublisherName "Canonical" -offer "0001-com-ubuntu-server-jammy" -sku "22_04-lts"

CLI do Azure 2.0

az vm image list --location "westus" --publisher "Canonical" --offer "0001-com-ubuntu-server-jammy" --sku "22_04-lts" --all

Disparar manualmente atualizações de imagem do SO

Com a atualização automática de imagem do sistema operacional habilitada no conjunto de dimensionamento, não é necessário disparar manualmente as atualizações de imagem no conjunto de dimensionamento. O orquestrador de atualização do SO aplicará automaticamente a versão de imagem mais recente disponível às instâncias do conjunto de dimensionamento sem nenhuma intervenção manual.

Para casos específicos em que você não deseja esperar que o orquestrador aplique a imagem mais recente, você pode disparar uma atualização de imagem do sistema operacional manualmente usando os exemplos abaixo.

Observação

O gatilho manual de atualizações de imagem do sistema operacional não fornece recursos de reversão automática. Se uma instância não recuperar sua integridade após uma operação de atualização, o disco do SO anterior não poderá ser restaurado.

API REST

Use a chamada à API Iniciar Atualização do Sistema Operacional para iniciar uma atualização sem interrupção a fim de mover todas as instâncias do conjunto de dimensionamento de máquinas virtuais para a última versão do sistema operacional da imagem disponível. As instâncias que já estão executando a versão mais recente do SO disponível não são afetadas. O seguinte exemplo detalha o modo como você pode começar uma atualização de SO dinâmica em conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

POST on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/osRollingUpgrade?api-version=2021-03-01`

Azure PowerShell

Use o cmdlet Start-AzVmssRollingOSUpgrade para verificar o histórico de atualização do sistema operacional para seu conjunto de dimensionamento. O seguinte exemplo detalha o modo como você pode começar uma atualização de SO dinâmica em conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

Start-AzVmssRollingOSUpgrade -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

CLI do Azure 2.0

Use az vmss rolling-upgrade start para verificar o histórico de atualização do sistema operacional de seu conjunto de dimensionamento. Use a CLI do Azure 2.0.47 ou posterior. O seguinte exemplo detalha o modo como você pode começar uma atualização de SO dinâmica em conjunto de dimensionamento denominado myScaleSet no grupo de recursos denominado myResourceGroup:

az vmss rolling-upgrade start --resource-group "myResourceGroup" --name "myScaleSet" --subscription "subscriptionId"

Investigar e resolver erros de atualização automática

A plataforma pode retornar erros em VMs ao executar a Atualização Automática de Imagem com a política de Atualização Sem Interrupção. O erro Obter Exibição de Instância de uma VM contém a mensagem de erro detalhada para investigar e resolver um erro. O erro Atualizações sem interrupção – Obter mais informações pode fornecer mais detalhes sobre a configuração e o status da atualização sem interrupção. O erro Obter Histórico de Atualização do Sistema Operacional fornece detalhes sobre a última operação de atualização de imagem no conjunto de dimensionamento. Abaixo estão os principais erros que podem resultar em atualizações sem interrupção.

RollingUpgradeInProgressWithFailedUpgradedVMs

  • O erro é disparado para uma falha de VM.
  • A mensagem de erro detalhada menciona se a distribuição continuará/pausará com base no limite configurado.

MaxUnhealthyUpgradedInstancePercentExceededInRollingUpgrade

  • O erro é disparado quando a porcentagem de VMs atualizadas excede o limite máximo permitido para VMs não íntegras.
  • A mensagem de erro detalhada agrega o erro mais comum que contribui para as VMs não íntegras. Veja MaxUnhealthyUpgradedInstancePercent.

MaxUnhealthyInstancePercentExceededInRollingUpgrade

  • O erro é disparado quando a porcentagem de VMs não íntegras excede o limite máximo permitido para VMs não íntegras durante uma atualização.
  • A mensagem de erro detalhada exibe a porcentagem não íntegra atual e o percentual de VM não íntegro permitido configurado. See maxUnhealthyInstancePercent.

MaxUnhealthyInstancePercentExceededBeforeRollingUpgrade

  • O erro é disparado quando a porcentagem de VMs não íntegras excede o limite máximo permitido para VMs não íntegras antes que uma atualização ocorra.
  • A mensagem de erro detalhada exibe a porcentagem não íntegra atual e o percentual de VM não íntegro permitido configurado. See maxUnhealthyInstancePercent.

InternalExecutionError

  • O erro é disparado quando ocorre um erro sem tratamento, não formatado ou inesperado durante a execução.
  • A mensagem de erro detalhada exibe a causa do erro.

RollingUpgradeTimeoutError

  • O erro é disparado quando o processo de atualização sem interrupção atingiu o tempo limite.
  • A mensagem de erro detalhada exibe a hora que o sistema atingiu o tempo limite após tentar atualizar.

Próximas etapas