Atualização automática de extensão para VMs e conjuntos de escala no Azure
A Atualização Automática de Extensão está disponível para VMs do Azure e Conjuntos de Dimensionamento de Máquina Virtual do Azure. Quando a Atualização Automática de Extensão é habilitada em uma VM ou conjunto de escala, a extensão é atualizada automaticamente sempre que o editor da extensão lança uma nova versão para essa extensão.
A Atualização Automática de Extensão tem os seguintes recursos:
- Com suporte para VMs do Azure e Conjuntos de Dimensionamento de Máquina Virtual do Azure.
- As atualizações são aplicadas em um modelo de implantação que prioriza a disponibilidade.
- Para um Conjunto de Dimensionamento de Máquina Virtual, não mais do que 20% das atualizações de máquinas virtuais do conjunto de dimensionamento em um único lote. O tamanho mínimo do lote é uma máquina virtual.
- Funciona para todos os tamanhos de VM e para extensões Windows e Linux.
- Você pode desativar as atualizações automáticas a qualquer momento.
- A atualização automática de extensão pode ser habilitada em conjuntos de escala de máquina virtual de qualquer tamanho.
- Cada extensão suportada é inscrita individualmente e você pode escolher quais extensões atualizar automaticamente.
- Suportado em todas as regiões de nuvem pública.
Como funciona a Atualização Automática de Extensão?
O processo de atualização de extensão substitui a versão de extensão existente em uma VM por uma nova versão da mesma extensão quando publicada pelo editor de extensão. A integridade da VM é monitorada após a instalação da nova extensão. Se a VM não estiver em um estado íntegro dentro de 5 minutos após a conclusão da atualização, a versão da extensão será revertida para a versão anterior.
Uma atualização de extensão com falha é repetida automaticamente. Uma nova tentativa é tentada a cada poucos dias automaticamente sem a intervenção do usuário.
Atualizações de disponibilidade em primeiro lugar
O modelo de disponibilidade em primeiro lugar para atualizações orquestradas de plataforma garante que as configurações de disponibilidade no Azure sejam respeitadas em vários níveis de disponibilidade.
Para um grupo de máquinas virtuais que passam por uma atualização, a plataforma Azure orquestra atualizações:
Entre regiões:
- Uma atualização se move globalmente pelo Azure de forma faseada para evitar falhas de implantação em todo o Azure.
- Uma "fase" pode ter uma ou mais regiões, e uma atualização só se move entre fases se as VMs elegíveis na fase anterior forem atualizadas com êxito.
- As regiões emparelhadas geograficamente não serão atualizadas simultaneamente e não poderão estar na mesma fase regional.
- O sucesso de uma atualização é medido pelo acompanhamento da integridade de uma VM após a atualização. A integridade da VM é rastreada por meio de indicadores de integridade da plataforma para a VM. Para Conjuntos de Dimensionamento de Máquina Virtual, a integridade da VM é controlada por meio de testes de integridade do aplicativo ou da extensão Integridade do Aplicativo, se aplicada ao conjunto de escala.
Dentro de uma região:
- As VMs em zonas de disponibilidade diferentes não são atualizadas simultaneamente com a mesma atualização.
- As VMs únicas que não fazem parte de um conjunto de disponibilidade são agrupadas em lote com base no melhor esforço para evitar atualizações simultâneas para todas as VMs em uma assinatura.
Dentro de um 'conjunto':
- Todas as VMs em um conjunto de disponibilidade comum ou conjunto de escala não são atualizadas simultaneamente.
- As VMs em um conjunto de disponibilidade comum são atualizadas dentro dos limites do Domínio de Atualização e as VMs em vários Domínios de Atualização não são atualizadas simultaneamente.
- As VMs em um conjunto de escala de máquina virtual comum são agrupadas em lotes e atualizadas dentro dos limites do Domínio de Atualização. As políticas de atualização definidas no conjunto de escala são honradas durante a atualização. Se a política de atualização estiver definida como Manual, as VMs não serão atualizadas mesmo que a atualização automática de extensão esteja habilitada.
Processo de atualização para conjuntos de dimensionamento de máquina virtual
Antes do início do processo de atualização, o orquestrador garante que não mais de 20% das VMs em todo o conjunto de escala não estejam íntegras (por qualquer motivo).
O orquestrador de atualização identifica o lote de instâncias de VM a serem atualizadas. Um lote de atualização pode ter no máximo 20% da contagem total de VMs, sujeito a um tamanho de lote mínimo de uma máquina virtual. A definição da Política de Atualização e das Zonas de Disponibilidade é considerada ao identificar o lote.
Após a atualização, a integridade da VM é sempre monitorada antes de passar para o próximo lote. Para conjuntos de dimensionamento com testes de integridade do aplicativo configurados ou extensão de integridade do aplicativo, a integridade do aplicativo também é monitorada. A atualização aguarda até 5 minutos (ou a configuração da sonda de integridade definida) para que a VM fique íntegra antes de atualizar o próximo lote. Se uma VM não recuperar sua integridade após uma atualização, por padrão, a versão de extensão anterior na VM será reinstalada.
O orquestrador de atualização também rastreia a porcentagem de VMs que se tornam não íntegras após uma atualização. A atualização será interrompida se mais de 20% das instâncias atualizadas não estiverem íntegras durante o processo de atualização.
O processo acima continua até que todas as instâncias no conjunto de escala tenham sido atualizadas.
O orquestrador de atualização do conjunto de escala verifica a integridade geral do conjunto de escala antes de atualizar cada lote. Durante uma atualização em lote, pode haver outras atividades de manutenção simultâneas planejadas ou não planejadas que podem afetar a integridade de suas máquinas virtuais de conjunto de escala. Nesses casos, se mais de 20% das instâncias do conjunto de escalas não estiverem íntegras, a atualização do conjunto de escalas será interrompida no final do lote atual.
Extensões suportadas
A Atualização Automática de Extensão suporta as seguintes extensões (e mais são adicionadas periodicamente):
- Extensão do Azure Automation Hybrid Worker - Linux e Windows
- Agente de Dependência – Linux e Windows
- Extensão de integridade de aplicativos – Linux e Windows
- Extensão de Atestado de Convidado - Linux e Windows
- Extensão de configuração de convidado – Linux e Windows
- Key Vault – Linux e Windows
- Azure Monitor Agent
- Agente do Log Analytics para Linux
- Extensão do Azure Diagnostics para Linux
- Service Fabric – Linux
Ativando a atualização automática de extensão
Para habilitar a Atualização Automática de Extensão para uma extensão, você deve garantir que a propriedade enableAutomaticUpgrade
seja definida e true
adicionada a cada definição de extensão individualmente.
API REST para máquinas virtuais
Para habilitar a atualização automática de extensão para uma extensão (neste exemplo, a extensão do Agente de Dependência) em uma VM do Azure, use a seguinte chamada:
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{
"name": "extensionName",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "<location>",
"properties": {
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5"
}
}
API REST para conjuntos de dimensionamento de máquinas virtuais
Use a seguinte chamada para adicionar a extensão ao modelo de conjunto de escala:
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
"location": "<location>",
"properties": {
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"name": "<extensionName>",
"properties": {
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5"
}
}
]
}
}
}
}
Azure PowerShell para Máquinas Virtuais
Use o cmdlet Set-AzVMExtension :
Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
-ResourceGroupName "myResourceGroup" `
-VMName "myVM" `
-Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
-ExtensionType "DependencyAgentWindows" `
-TypeHandlerVersion 9.5 `
-Location WestUS `
-EnableAutomaticUpgrade $true
Azure PowerShell para conjuntos de escala de máquina virtual
Use o cmdlet Add-AzVmssExtension para adicionar a extensão ao modelo de conjunto de escala:
Add-AzVmssExtension -VirtualMachineScaleSet $vmss
-Name "Microsoft.Azure.Monitoring.DependencyAgent" `
-Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
-Type "DependencyAgentWindows" `
-TypeHandlerVersion 9.5 `
-EnableAutomaticUpgrade $true
Atualize o conjunto de escala usando Update-AzVmss depois de adicionar a extensão.
CLI do Azure para Máquinas Virtuais
Use o cmdlet az vm extension set :
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name DependencyAgentLinux \
--publisher Microsoft.Azure.Monitoring.DependencyAgent \
--version 9.5 \
--enable-auto-upgrade true
CLI do Azure para conjuntos de dimensionamento de máquina virtual
Use o cmdlet az vmss extension set para adicionar a extensão ao modelo de conjunto de escala:
az vmss extension set \
--resource-group myResourceGroup \
--vmss-name myVMSS \
--name DependencyAgentLinux \
--publisher Microsoft.Azure.Monitoring.DependencyAgent \
--version 9.5 \
--enable-auto-upgrade true
Modelo ARM para máquinas virtuais
O exemplo a seguir descreve como definir atualizações automáticas de extensão para uma extensão (Extensão de Agente de Dependência neste exemplo) em uma Máquina Virtual usando o Azure Resource Manager
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "[resourceGroup().location]",
"name": "<extensionName>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
],
"properties": {
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"enableAMA": "true"
}
}
}
Modelo ARM para conjuntos de dimensionamento de máquina virtual
Use o exemplo a seguir para definir a atualização automática de extensão na extensão dentro do modelo de conjunto de escala:
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
"apiVersion": "2023-09-01",
"name": "[variables('vmScaleSetName')]",
"location": "[resourceGroup().location]",
"properties": {
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [{
"name": "<extensionName>",
"properties": {
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
}
}]
}
}
}
}
Através do portal do Azure
Você pode usar o portal do Azure - Folha de extensão para habilitar a atualização automática de extensões em Máquinas Virtuais e Conjuntos de Dimensionamento de Máquina Virtual existentes.
- Navegue até a folha Máquinas Virtuais ou Conjuntos de Dimensionamento de Máquinas Virtuais e selecione o recurso clicando em seu nome.
- Navegue até a folha "Extenisons + applications" em Configurações para visualizar todas as extensões instaladas no recurso. A coluna "Status da atualização automática" informa se a atualização automática da extensão está habilitada, desativada ou não é suportada.
- Navegue até a folha Detalhes da extensão clicando no nome da extensão.
- Clique em "Ativar atualização automática" para ativar a atualização automática da extensão. Este botão também pode ser usado para desativar a atualização automática quando necessário.
Atualizações de extensão com várias extensões
Uma VM ou um Conjunto de Dimensionamento de Máquina Virtual pode ter várias extensões com a atualização automática de extensão habilitada. A mesma VM ou conjunto de escala também pode ter outras extensões sem a atualização automática de extensão habilitada.
Se várias atualizações de extensão estiverem disponíveis para uma máquina virtual, as atualizações podem ser agrupadas em lote, mas cada atualização de extensão é aplicada individualmente em uma máquina virtual. Uma falha em uma extensão não afeta a(s) outra(s) extensão(ões) que podem estar sendo atualizadas. Por exemplo, se duas extensões estiverem agendadas para uma atualização e a primeira atualização falhar, a segunda extensão ainda será atualizada.
As Atualizações Automáticas de Extensão também podem ser aplicadas quando uma VM ou um conjunto de dimensionamento de máquina virtual tem várias extensões configuradas com sequenciamento de extensão. O sequenciamento de extensão é aplicável para a implantação pela primeira vez da VM, e quaisquer atualizações de extensão futuras em uma extensão são aplicadas independentemente.
Diferença entre enableAutomaticUpgrade e autoUpgradeMinorVersion
AutoUpgradeMinorVersion:
- Essa propriedade é usada durante a criação da VM e durante a atualização da VM com uma nova configuração.
- Quando definido como "true", ele garante que a versão secundária mais recente da extensão seja instalada automaticamente na máquina virtual.
- Ele substitui o TypeHandlerVersion com a versão secundária estável mais recente disponível.
- Ao atualizar a configuração da VM, se uma nova versão secundária estiver disponível, será considerada uma alteração de configuração e a extensão será reinstalada com a versão secundária mais recente.
- Isso ajuda a manter as VMs recém-criadas atualizadas com a versão de extensão secundária estável mais recente.
- Se você quiser definir manualmente a extensão para uma versão específica, defina essa propriedade como "false".
EnableAutomaticUpgrade:
- Essa propriedade afeta as máquinas virtuais existentes.
- Isso não afeta a versão instalada durante a criação da VM.
- Após a criação da VM, se a VM não estiver executando a versão secundária mais recente da extensão, habilitar essa propriedade acionará uma atualização automática.
- As atualizações não causam a reinicialização da VM, são implementadas de forma contínua segura e as atualizações com falha são revertidas imediatamente para fornecer alta disponibilidade e confiabilidade do serviço.
- Ele garante que as VMs existentes permaneçam seguras e atualizadas, atualizando-as automaticamente para a versão secundária mais recente.
É recomendável permitir que ambas as propriedades mantenham todas as VMs seguras e atualizadas.
As atualizações para as principais versões de extensão nunca são executadas automaticamente por nenhuma das propriedades, pois podem causar alterações ininterruptas. Você deve definir manualmente o TypeHandlerVersion para uma versão principal e atualizar manualmente cada VM existente para a versão principal mais recente.