Compartilhar via


Usar políticas para reduzir horizontalmente Conjuntos de Dimensionamento de Máquinas Virtuais do Azure

Uma implantação de Conjunto de Dimensionamento de Máquinas Virtuais pode ser expandida ou reduzida horizontalmente com base em uma matriz de métricas, incluindo métricas de plataforma e definidas pelo usuário. Embora uma expansão crie novas máquinas virtuais com base no modelo do conjunto de dimensionamento, uma redução horizontal afeta a execução de máquinas virtuais que podem ter diferentes configurações e/ou funções à medida que a carga de trabalho do conjunto de dimensionamento evolui.

O recurso da política de redução horizontal fornece aos usuários uma maneira de configurar a ordem na qual as máquinas virtuais são reduzidas horizontalmente, por meio de três configurações de redução:

  1. Padrão
  2. NewestVM
  3. OldestVM

Política de redução horizontal padrão

Orquestração flexível

Por padrão, o conjunto de dimensionamento de máquinas virtuais aplica essa política para determinar quais instâncias serão reduzidas. Com a política Padrão, as VMs são selecionadas para serem reduzidas horizontalmente na ordem a seguir:

  1. Equilibrar máquinas virtuais entre zonas de disponibilidade (se o conjunto de dimensionamento for implantado na configuração de abrangência de zona)
  2. Balancear máquinas virtuais entre domínios de falha (melhor esforço)
  3. Excluir máquina virtual com a ID de instância mais alta

Os usuários não precisam especificar uma política de redução horizontal se quiserem que a ordem padrão seja seguida.

Orquestração uniforme

Por padrão, o conjunto de dimensionamento de máquinas virtuais aplica essa política para determinar quais instâncias serão reduzidas. Com a política Padrão, as VMs são selecionadas para serem reduzidas horizontalmente na ordem a seguir:

  1. Equilibrar máquinas virtuais entre zonas de disponibilidade (se o conjunto de dimensionamento for implantado na configuração de abrangência de zona)
  2. Balancear máquinas virtuais entre domínios de falha (melhor esforço)
  3. Excluir máquina virtual com a ID de instância mais alta

Os usuários não precisam especificar uma política de redução horizontal se quiserem que a ordem padrão seja seguida.

O balanceamento entre zonas de disponibilidade ou domínios de falha não move instâncias entre zonas de disponibilidade ou domínios de falha. O balanceamento é obtido por meio da exclusão de máquinas virtuais de zonas de disponibilidade desbalanceadas ou domínios de falha, até que a distribuição de máquinas virtuais se torne equilibrada.

Política de redução horizontal NewestVM

Essa política excluirá a máquina virtual mais recente ou mais recentemente criada no conjunto de dimensionamento, depois de balancear VMs entre zonas de disponibilidade (para conjuntos de dimensionamento que abrangem zonas). A habilitação desta política exige uma alteração de configuração no modelo do conjunto de dimensionamento de máquinas virtuais.

Política de redução horizontal OldestVM

Essa política excluirá a mais antiga máquina virtual criada no conjunto de dimensionamento, após balancear as VMs entre as zonas de disponibilidade (para conjuntos de dimensionamento que abrangem várias zonas). A habilitação desta política exige uma alteração de configuração no modelo do conjunto de dimensionamento de máquinas virtuais.

Habilitando políticas de redução horizontal

Uma política de redução horizontal é definida no modelo do conjunto de dimensionamento de máquinas virtuais. Conforme observado nas seções acima, uma definição de política de redução horizontal é necessária ao usar as políticas ‘NewestVM’ e ‘OldestVM’. O conjunto de dimensionamento de máquinas virtuais usará automaticamente a política de redução horizontal ‘Padrão‘ se não houver nenhuma definição de política de redução horizontal encontrada no modelo do conjunto de dimensionamento.

Uma política de redução horizontal pode ser definida no modelo do conjunto de dimensionamento de máquinas virtuais das seguintes maneiras:

portal do Azure

As etapas a seguir definem a política de redução horizontal ao criar um novo conjunto de dimensionamento.

  1. Acesse Conjuntos de Dimensionamento de Máquinas Virtuais.
  2. Selecione + Adicionar para criar um conjunto de dimensionamento.
  3. Vá para a guia Dimensionamento.
  4. Encontre a seção política de redução horizontal.
  5. Selecione uma política de redução horizontal no menu suspenso.
  6. Quando terminar de criar o conjunto de dimensionamento, selecione o botão Revisar + criar.

Usando a API

Execute um PUT no conjunto de dimensionamento de máquinas virtuais usando a API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["OldestVM"]  
        } 
    }    
} 

Azure PowerShell

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

Crie um grupo de recursos e um novo conjunto de dimensionamento com a política de redução horizontal definida como OldestVM.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "<VMSS location>" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -ScaleInPolicy “OldestVM”

CLI do Azure

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

O exemplo a seguir adiciona uma política de redução ao criar um novo conjunto de dimensionamento. Primeiro crie um grupo de recursos e um novo conjunto de dimensionamento com a política de redução horizontal como OldestVM.

az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --orchestration-mode flexible \
  --image Ubuntu2204 \
  --admin-username <azureuser> \
  --generate-ssh-keys \
  --scale-in-policy OldestVM

modelo do Resource Manager

No modelo, em “propriedades”, adicione a propriedade scaleInPolicy:

"scaleInPolicy": {  
      "rules": ["OldestVM"]  
}

Esses blocos de código especificam que o conjunto de dimensionamento de máquinas virtuais excluirá a VM mais antiga em um conjunto de dimensionamento com balanceamento de zona, quando uma redução horizontal for disparada (por meio de dimensionamento automático ou exclusão manual).

Quando um conjunto de dimensionamento de máquinas virtuais não for balanceado por zona, o conjunto de dimensionamento excluirá primeiro as VMs em todas as zonas desbalanceadas. Dentro das zonas desbalanceadas, o conjunto de dimensionamento usa a política de redução horizontal especificada para determinar qual VM será reduzida horizontalmente. Nesse caso, em uma zona desbalanceada, o conjunto de dimensionamento selecionará a VM mais antiga nessa zona a ser excluída.

Para o Conjunto de Escala de Máquina Virtual não zonal, a política seleciona a VM mais antiga do conjunto para ser excluída.

O mesmo processo se aplica ao usar a política de redução horizontal ‘NewestVM’.

Modificando políticas de redução horizontal

A modificação da política de redução horizontal segue o mesmo processo da aplicação da política de redução horizontal. Por exemplo, se você quiser alterar a política de ‘OldestVM’ para ‘NewestVM’, poderá fazer isso por meio do:

portal do Azure

Você pode modificar a política de redução horizontal de um conjunto de dimensionamento existente por meio do portal do Azure.

  1. Em um conjunto de dimensionamento de máquinas virtuais existente, selecione Escala no menu à esquerda.
  2. Selecione a guia Política de redução horizontal.
  3. Selecione uma política de redução horizontal no menu suspenso.
  4. Quando terminar, selecione Salvar.

Usando a API

Execute um PUT no conjunto de dimensionamento de máquinas virtuais usando a API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01 

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["NewestVM"]  
        } 
    }    
}

Azure PowerShell

Atualizar a política de redução horizontal em um conjunto de dimensionamento existente:

Update-AzVmss `
 -ResourceGroupName "myResourceGroup" `
 -VMScaleSetName "myScaleSet" `
 -ScaleInPolicy “OldestVM”

CLI do Azure

A seguir temos um exemplo de como atualizar a política de redução horizontal de um conjunto de dimensionamento existente:

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --scale-in-policy OldestVM

modelo do Resource Manager

No modelo, em "Propriedades", modifique o modelo conforme abaixo e reimplante:

"scaleInPolicy": {  
      "rules": ["NewestVM"]  
} 

O mesmo processo será aplicado se você decidir alterar ‘NewestVM’ para ‘Padrão’ ou ‘OldestVM’

Proteção de instância e política de redução horizontal

Os conjuntos de dimensionamento de máquinas virtuais fornecem dois tipos de proteção de instância:

  1. Proteger contra redução horizontal
  2. Proteger contra as ações do conjunto de dimensionamento

Uma máquina virtual protegida não é excluída por meio de uma ação de redução horizontal, independentemente da política de redução horizontal aplicada. Por exemplo, se a VM_0 (VM mais antiga no conjunto de dimensionamento) estiver protegida da redução horizontal e o conjunto de dimensionamento tiver a política de redução horizontal ‘OldestVM’ habilitada, a VM_0 não será considerada para ser reduzida horizontalmente, mesmo que seja a VM mais antiga no conjunto de dimensionamento.

Uma máquina virtual protegida pode ser excluída manualmente a qualquer momento pelo usuário, independentemente da política de redução horizontal habilitada no conjunto de dimensionamento.

Exemplos de uso

Os exemplos abaixo demonstram como um conjunto de dimensionamento de máquinas virtuais seleciona as VMs a serem excluídas quando um evento de redução horizontal é disparado. As máquinas virtuais com as IDs de instância mais alta são consideradas as VMs mais novas no conjunto de dimensionamento e as VMs com as IDs de instância menores são consideradas as VMs mais antigas no conjunto de dimensionamento.

Política de redução horizontal OldestVM

Evento IDs de instância na Zona 1 IDs de instância na Zona 2 IDs de instância na Zona 3 Seleção de redução horizontal
Inicial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Reduzir horizontalmente 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Escolha entre a Zona 1 e 2, mesmo que a Zona 3 tenha a VM mais antiga. Exclua a VM2 da Zona 2, pois ela é a VM mais antiga nessa zona.
Reduzir horizontalmente 3, 4, 5, 10 6, 9, 11 1, 7, 8 Escolha a Zona 1 embora a Zona 3 tenha a VM mais antiga. Exclua a VM3 da Zona 1, pois ela é a VM mais antiga nessa zona.
Reduzir horizontalmente 4, 5, 10 6, 9, 11 1, 7, 8 As zonas são balanceadas. Exclua a VM1 da Zona 3, pois ela é a VM mais antiga no conjunto de dimensionamento.
Reduzir horizontalmente 4, 5, 10 6, 9, 11 7, 8 Escolha entre a Zona 1 e a Zona 2. Exclua a VM4 da Zona 1, pois ela é a VM mais antiga entre as duas zonas.
Reduzir horizontalmente 5, 10 6, 9, 11 7, 8 Escolha a Zona 2, mesmo que a Zona 1 tenha a VM mais antiga. Exclua a VM6 da Zona 1, pois ela é a VM mais antiga nessa zona.
Reduzir horizontalmente 5, 10 9, 11 7, 8 As zonas são balanceadas. Exclua a VM5 da Zona 1, pois ela é a VM mais antiga no conjunto de dimensionamento.

Para conjuntos de dimensionamento de máquina virtual nonzonal, a política seleciona a VM mais antiga no conjunto de dimensionamento para exclusão. Qualquer VM “protegida” será ignorada na exclusão.

Política de redução horizontal NewestVM

Evento IDs de instância na Zona 1 IDs de instância na Zona 2 IDs de instância na Zona 3 Seleção de redução horizontal
Inicial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Reduzir horizontalmente 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Escolha entre a Zona 1 e 2. Exclua a VM11 da Zona 2, pois ela é a VM mais nova entre as duas zonas.
Reduzir horizontalmente 3, 4, 5, 10 2, 6, 9 1, 7, 8 Escolha a Zona 1, pois ela tem mais VMs do que as outras duas zonas. Exclua a VM10 da Zona 1, pois ela é a VM mais nova nessa zona.
Reduzir horizontalmente 3, 4, 5 2, 6, 9 1, 7, 8 As zonas são balanceadas. Exclua a VM9 na Zona 2, pois ela é a VM mais nova no conjunto de dimensionamento.
Reduzir horizontalmente 3, 4, 5 2, 6 1, 7, 8 Escolha entre a Zona 1 e a Zona 3. Exclua a VM8 na Zona 3, pois ela é a VM mais nova nessa zona.
Reduzir horizontalmente 3, 4, 5 2, 6 1, 7 Escolha a Zona 1, mesmo que a Zona 3 tenha a VM mais nova. Exclua a VM5 na Zona 1, pois ela é a VM mais nova nessa zona.
Reduzir horizontalmente 3, 4 2, 6 1, 7 As zonas são balanceadas. Exclua a VM7 na Zona 3, pois ela é a VM mais nova no conjunto de dimensionamento.

Para conjuntos de escalonamento de máquinas virtuais não zonais, a política seleciona a VM mais recente no conjunto de escalonamento para exclusão. Qualquer VM “protegida” será ignorada na exclusão.

Solucionar problemas

  • Falha ao habilitar scaleInPolicy: Se você receber um erro 'BadRequest' com uma mensagem de erro informando "Não foi possível localizar o membro 'scaleInPolicy' 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 2019-03-01 ou superior.

  • Seleção incorreta de VMs para o scale-in: Veja os exemplos neste documento. Se o conjunto de dimensionamento estiver abrangendo zonas, a política de redução será aplicada primeiro às zonas desequilibradas e, em seguida, ao conjunto de dimensionamento como um todo, depois que as zonas estiverem equilibradas. Se a ordem da redução horizontal não for consistente com os exemplos documentados aqui, gere uma consulta com a equipe do conjunto de dimensionamento de máquinas virtuais para solução de problemas.

Próximas etapas

Saiba como implantar seu aplicativo nos conjuntos de dimensionamento de máquinas virtuais.