Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma implantação de Virtual Machine Scale Set pode ser dimensionada para fora ou para dentro com base numa matriz de métricas, incluindo métricas definidas pela plataforma e pelo utilizador. Enquanto um aumento horizontal cria novas máquinas virtuais com base no modelo do conjunto de dimensionamento, uma redução horizontal afeta a execução das máquinas virtuais que possam ter configurações e/ou funções diferentes, à medida que a carga de trabalho do conjunto de dimensionamento evolui.
O recurso de política de dimensionamento fornece aos usuários uma maneira de configurar a ordem na qual as máquinas virtuais são dimensionadas, por meio de três configurações de expansão:
- Predefinido
- NewestVM
- OldestVM
Política de escalonamento padrão
Orquestração flexível
Por padrão, o Conjunto de Dimensionamento de Máquina Virtual aplica essa política para determinar em quais instâncias serão dimensionadas. Com a política Padrão, as VMs são selecionadas para expansão na seguinte ordem:
- Equilibrar as máquinas virtuais entre zonas de disponibilidade (se o conjunto de escalas for implementado em configuração que abrange zonas)
- Equilibre máquinas virtuais entre domínios de falha (melhor esforço)
- Excluir máquina virtual com o ID de instância mais alto
Os usuários não precisam especificar uma política de expansão se quiserem apenas que a ordem padrão seja seguida.
Orquestração uniforme
Por padrão, o Conjunto de Dimensionamento de Máquina Virtual aplica essa política para determinar em quais instâncias serão dimensionadas. Com a política Padrão, as VMs são selecionadas para expansão na seguinte ordem:
- Equilibrar as máquinas virtuais entre zonas de disponibilidade (se o conjunto de escalas for implementado em configuração que abrange zonas)
- Equilibre máquinas virtuais entre domínios de falha (melhor esforço)
- Excluir máquina virtual com o ID de instância mais alto
Os usuários não precisam especificar uma política de expansão se quiserem apenas 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 das zonas de disponibilidade desequilibradas ou domínios de falha até que a distribuição de máquinas virtuais se torne equilibrada.
Política de escalabilidade de VM mais recente
Esta política irá eliminar a máquina virtual mais recente, ou mais recentemente criada, no conjunto de escala, após o balanceamento das VMs entre zonas de disponibilidade (para conjuntos de escala que abrangem zonas). A habilitação dessa política requer uma alteração de configuração no modelo de Conjunto de Escala de Máquina Virtual.
Política de escalonamento de VM mais antiga
Esta política eliminará a máquina virtual criada mais antiga no conjunto de escala, após o balanceamento das VMs entre zonas de disponibilidade (para conjuntos de escala que abrangem zonas). A habilitação dessa política requer uma alteração de configuração no modelo de Conjunto de Escala de Máquina Virtual.
Habilitando a política de expansão
Uma política de dimensionamento é definida no modelo de Conjunto de Dimensionamento de Máquina Virtual. Como observado nas seções anteriores, uma definição de política de expansão é necessária ao usar as políticas 'NewestVM' e 'OldestVM'. O Conjunto de Dimensionamento de Máquina Virtual usará automaticamente a política de dimensionamento 'Padrão' se não houver nenhuma definição de política de dimensionamento encontrada no modelo de conjunto de escala.
Uma política de dimensionamento pode ser definida no modelo de Conjunto de Dimensionamento de Máquina Virtual das seguintes maneiras:
portal do Azure
As etapas a seguir definem a política de expansão ao criar um novo conjunto de escalas.
- Vá para Conjuntos de Máquinas Virtuais Escaláveis.
- Selecione + Adicionar para criar um novo conjunto de escalas.
- Vá para a guia Dimensionamento .
- Localize a seção Política de expansão .
- Selecione uma política de expansão na lista suspensa.
- Quando terminar de criar o novo conjunto de escalas, selecione o botão Rever + criar .
Utilizar a API
Execute um PUT no conjunto de escala de máquina virtual 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 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
Crie um grupo de recursos e, em seguida, crie um novo conjunto de escala com a política de dimensionamento definida como OldestVM.
New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "<VMSS location>" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-ScaleInPolicy “OldestVM”
Azure CLI (Interface de Linha de Comando da Azure)
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
O exemplo a seguir adiciona uma política de expansão ao criar um novo conjunto de escalas. Primeiro, crie um grupo de recursos e, em seguida, crie um novo conjunto de escala com a política de expansão 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 seu modelo, em "propriedades", adicione a scaleInPolicy propriedade:
"scaleInPolicy": {
"rules": ["OldestVM"]
}
Esses blocos de código especificam que o Conjunto de Dimensionamento de Máquina Virtual excluirá a VM mais antiga em um conjunto de escalas com balanceamento de zona, quando uma escala for acionada (por meio de Autoscale ou exclusão manual).
Quando um Conjunto de Escala de Máquina Virtual não estiver balanceado por zona, o conjunto de escala primeiro excluirá as VMs na(s) zona(s) desequilibrada(s). Dentro das zonas desequilibradas, o conjunto de escala usa a política de dimensionamento especificada para determinar em qual VM deve ser dimensionada. Nesse caso, dentro de uma zona desequilibrada, o conjunto de escala selecionará a VM mais antiga dessa zona a ser excluída.
Para Virtual Machine Scale Set não zonal, a política seleciona a VM mais antiga do conjunto de escalas para eliminação.
O mesmo processo se aplica ao usar a política de expansão 'NewestVM'.
Modificando políticas de expansão
A modificação da política de expansão segue o mesmo processo que a aplicação da política de expansão. Por exemplo, se pretender alterar a política de 'OldestVM' para 'NewestVM', pode fazê-lo da seguinte forma:
portal do Azure
Você pode modificar a política de expansão de um conjunto de escala existente por meio do portal do Azure.
- Em um Conjunto de Dimensionamento de Máquina Virtual existente, selecione Dimensionamento no menu à esquerda.
- Selecione a guia Política de Expansão.
- Selecione uma política de expansão na lista suspensa.
- Quando tiver terminado, selecione Guardar.
Utilizar a API
Execute um PUT no conjunto de escala de máquina virtual 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
Atualize a política de expansão de um conjunto de escalas existente:
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-ScaleInPolicy “OldestVM”
Azure CLI (Interface de Linha de Comando da Azure)
Segue-se um exemplo para atualizar a política de expansão de um conjunto de escalas existente:
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--scale-in-policy OldestVM
modelo do Resource Manager
No seu modelo, em "propriedades", modifique-o como abaixo e reimplante:
"scaleInPolicy": {
"rules": ["NewestVM"]
}
O mesmo processo se aplica se você decidir alterar 'NewestVM' para 'Default' ou 'OldestVM'
Proteção de instâncias e política de escalabilidade
Os Conjuntos de Dimensionamento de Máquina Virtual fornecem dois tipos de proteção de instância:
- Proteja-se contra aumento de escala
- Proteja-se de ações definidas em escala
Uma máquina virtual protegida não é excluída por meio de uma ação de expansão, independentemente da política de expansão aplicada. Por exemplo, se VM_0 (VM mais antiga no conjunto de escala) estiver protegida contra scale-in e o conjunto de escala tiver a política de scale-in 'OldestVM' habilitada, VM_0 não será considerada para ser dimensionada, mesmo que seja a VM mais antiga do conjunto de escala.
Uma máquina virtual protegida pode ser excluída manualmente pelo usuário a qualquer momento, independentemente da política de dimensionamento habilitada no conjunto de escalas.
Exemplos de utilização
Os exemplos abaixo demonstram como um Conjunto de Dimensionamento de Máquina Virtual seleciona VMs a serem excluídas quando um evento de dimensionamento é acionado. As máquinas virtuais com os IDs de instância mais altos são consideradas as VMs mais recentes no conjunto de escala e as VMs com os IDs de instância menores são consideradas as VMs mais antigas do conjunto de escala.
Política de escalonamento de VM mais antiga
| Evento | IDs de instância na Zona1 | IDs de instância na Zona2 | IDs de instância na Zona3 | Seleção de escalonamento |
|---|---|---|---|---|
| Inicial | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
| Escalonamento | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | Escolha entre a Zona 1 e a Zona 2, mesmo que a Zona 3 tenha a VM mais antiga. Exclua o VM2 da Zona 2, pois é a VM mais antiga dessa zona. |
| Escalonamento | 3, 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | Escolha Zona 1 mesmo que a Zona 3 tenha a VM mais antiga. Exclua o VM3 da Zona 1, pois é a VM mais antiga dessa zona. |
| Escalonamento | 4, 5, 10 | 6, 9, 11 | 1, 7, 8 | As zonas são equilibradas. Exclua VM1 na Zona 3, pois é a VM mais antiga no conjunto de escala. |
| Escalonamento | 4, 5, 10 | 6, 9, 11 | 7, 8 | Escolha entre a Zona 1 e a Zona 2. Exclua o VM4 na Zona 1, pois é a VM mais antiga nas duas Zonas. |
| Escalonamento | 5, 10 | 6, 9, 11 | 7, 8 | Escolha Zona 2 mesmo que a Zona 1 tenha a VM mais antiga. Exclua o VM6 na Zona 1, pois é a VM mais antiga dessa zona. |
| Escalonamento | 5, 10 | 9, 11 | 7, 8 | As zonas são equilibradas. Exclua o VM5 na Zona 1, pois é a VM mais antiga do conjunto de escala. |
Para Conjuntos de Escala de Máquinas Virtuais não zonais, a política seleciona a VM mais antiga do conjunto de escala para eliminação. Qualquer VM "protegida" é ignorada para exclusão.
Política de escalabilidade de VM mais recente
| Evento | IDs de instância na Zona1 | IDs de instância na Zona2 | IDs de instância na Zona3 | Seleção de escalonamento |
|---|---|---|---|---|
| Inicial | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | |
| Escalonamento | 3, 4, 5, 10 | 2, 6, 9, 11 | 1, 7, 8 | Escolha entre a Zona 1 e a Zona 2. Exclua o VM11 da Zona 2, pois é a VM mais recente nas duas zonas. |
| Escalonamento | 3, 4, 5, 10 | 2, 6, 9 | 1, 7, 8 | Escolha Zona 1, pois ela tem mais VMs do que as outras duas zonas. Exclua o VM10 da Zona 1, pois é a VM mais recente nessa Zona. |
| Escalonamento | 3, 4, 5 | 2, 6, 9 | 1, 7, 8 | As zonas são equilibradas. Exclua o VM9 na Zona 2, pois é a VM mais recente no conjunto de escala. |
| Escalonamento | 3, 4, 5 | 2, 6 | 1, 7, 8 | Escolha entre a Zona 1 e a Zona 3. Exclua o VM8 na Zona 3, pois é a VM mais recente nessa Zona. |
| Escalonamento | 3, 4, 5 | 2, 6 | 1, 7 | Escolha Zona 1 mesmo que a Zona 3 tenha a VM mais recente. Exclua o VM5 na Zona 1, pois é a VM mais recente nessa Zona. |
| Escalonamento | 3, 4 | 2, 6 | 1, 7 | As zonas são equilibradas. Exclua o VM7 na Zona 3, pois é a VM mais recente no conjunto de escala. |
Para Conjuntos de Escala de Máquinas Virtuais não zonais, a política seleciona a VM mais recente do conjunto de escalas para eliminação. Qualquer VM "protegida" é ignorada para exclusão.
Solucionar problemas
Falha ao ativar o scaleInPolicy: Se receber um erro 'BadRequest' com uma mensagem de erro que indica "Não foi possível encontrar o membro 'scaleInPolicy' no objeto do tipo 'properties'", então verifique a versão da API usada para o Virtual Machine Scale Set. A versão da API 2019-03-01 ou superior é necessária para este recurso.
Seleção errada de VMs para scale-in: Consulte os exemplos neste documento. Se o seu conjunto de escalas abranger várias zonas, a política de redução de escala é aplicada primeiro às zonas desequilibradas e depois em todo o conjunto de escala, uma vez que esteja equilibrado entre zonas. Se a ordem de dimensionamento não for consistente com os exemplos documentados aqui, levante uma consulta com a equipe do Conjunto de Dimensionamento de Máquina Virtual para solução de problemas.
Próximos passos
Saiba como implantar seu aplicativo em conjuntos de dimensionamento de máquina virtual.