Compartilhar via


Tutorial: Escalar automaticamente um conjunto de dimensionamento de máquinas virtuais com a CLI do Azure

Ao criar um conjunto de dimensionamento, o número de instâncias de VM que você deseja executar é definido. À medida que seu aplicativo precisar de alterações, você poderá aumentar ou diminuir automaticamente o número de instâncias de VM. A capacidade de autoescala permite acompanhar a demanda do cliente ou reagir a alterações de desempenho do aplicativo durante todo o ciclo de vida do aplicativo. Neste tutorial, você aprenderá a:

  • Usar o dimensionamento automático com um conjunto de dimensionamento
  • Criar e usar regras de dimensionamento automático
  • Simular a carga da CPU para disparar regras de dimensionamento automático
  • Monitorar ações de dimensionamento automático conforme a demanda muda

Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Este tutorial requer a versão 2.0.32 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um conjunto de escala

Crie um grupo de recursos com az group create.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="WestUS2"
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
az group create --name $MY_RESOURCE_GROUP_NAME --___location $REGION

Crie um Conjunto de Dimensionamento de Máquinas Virtuais com az vmss create. O exemplo a seguir cria um conjunto de dimensionamento com uma contagem de instâncias de 2, gera chaves SSH se elas não existem e usa uma imagem válida Ubuntu2204.

export MY_SCALE_SET_NAME="myScaleSet$RANDOM_SUFFIX"
az vmss create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --instance-count 2 \
  --admin-username azureuser \
  --generate-ssh-keys

Definir um perfil de autoescala

Para habilitar o dimensionamento automático em um conjunto de dimensionamento, primeiro você define um perfil de dimensionamento automático. Esse perfil define a capacidade padrão, mínima e máxima do conjunto de dimensionamento. Esses limites permitem controlar o custo ao não criar instâncias de VM de forma contínua e equilibra o desempenho aceitável com um número mínimo de instâncias que permanecem em um evento de redução. Crie um perfil de dimensionamento automático com az monitor autoscale create. O exemplo a seguir define a capacidade padrão e mínima de 2 instâncias de VM e um máximo de 10:

az monitor autoscale create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --resource $MY_SCALE_SET_NAME \
  --resource-type Microsoft.Compute/virtualMachineScaleSets \
  --name autoscale \
  --min-count 2 \
  --max-count 10 \
  --count 2

Criar uma regra de dimensionamento automático para aumento

Se a demanda do aplicativo aumentar, a carga em instâncias de VM no seu conjunto de dimensionamento também aumentará. Se esse aumento de carga for consistente, em vez de apenas uma breve demanda, você poderá configurar regras de dimensionamento automático para aumentar o número de instâncias de VM. Quando essas instâncias são criadas e seu aplicativo é implantado, o conjunto de dimensionamento começa a distribuir o tráfego para elas por meio do balanceador de carga. Você controla quais métricas monitorar, por quanto tempo a carga deve atender a um determinado limite e quantas instâncias de VM adicionar.

Crie uma regra com az monitor autoscale rule create que aumenta o número de instâncias de VM quando a carga média da CPU for maior que 70% em um período de 5 minutos. Quando a regra é disparada, a quantidade de instâncias de VM aumenta por três.

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU > 70 avg 5m" \
  --scale out 3

Criar uma regra de dimensionamento automático para redução

Quando a demanda do aplicativo diminui, a carga nas instâncias da máquina virtual diminui. Se essa carga reduzida persistir durante um período de tempo, você poderá configurar regras de dimensionamento automático para diminuir o número de instâncias de VM no conjunto de dimensionamento. Essa ação de dimensionamento ajuda a reduzir os custos executando apenas o número necessário de instâncias necessárias para atender à demanda atual.

Crie outra regra com az monitor autoscale rule create que diminui o número de instâncias de VM quando a carga média da CPU cai abaixo de 30% em um período de 5 minutos. O exemplo a seguir aumenta o número de instâncias de VM em uma.

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU < 30 avg 5m" \
  --scale in 1

Simular carga de CPU em conjunto de escala

Para testar as regras de dimensionamento automático, você precisa simular uma carga de CPU sustentada nas instâncias de VM no conjunto de dimensionamento. Nessa abordagem minimalista, evitamos a instalação de pacotes adicionais usando o comando interno yes para gerar a carga da CPU. O comando a seguir inicia três processos em segundo plano que geram dados continuamente para /dev/null por 60 segundos e, em seguida, os encerra.

for i in {1..3}; do
  yes > /dev/null &
done
sleep 60
pkill yes

Esse comando simula a carga da CPU sem introduzir erros de instalação do pacote.

Monitorar as regras de dimensionamento automático ativas

Para monitorar o número de instâncias de VM em seu conjunto de dimensionamento, use o watch comando. Pode levar até 5 minutos para que as regras de dimensionamento automático iniciem o processo de expansão em resposta à carga da CPU. No entanto, depois que isso acontecer, você poderá sair do modo de observação com CTRL + C.

Nesse momento, o conjunto de escalonamento aumentará automaticamente o número de instâncias de VM para atender à demanda. O comando a seguir mostra a lista de instâncias de VM no conjunto de escalas:

az vmss list-instances \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --output table

Assim que o limite de CPU for atingido, as regras de dimensionamento automático aumentam o número de instâncias de VM no conjunto de dimensionamento. A saída mostrará a lista de instâncias de VM à medida que novas são criadas.

  InstanceId  LatestModelApplied    Location    Name              ProvisioningState    ResourceGroup         VmId
------------  --------------------  ----------  ---------------   -------------------  --------------------  ------------------------------------
           1  True                  WestUS2     myScaleSet_1      Succeeded            myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           2  True                  WestUS2     myScaleSet_2      Succeeded            myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           4  True                  WestUS2     myScaleSet_4      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           5  True                  WestUS2     myScaleSet_5      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           6  True                  WestUS2     myScaleSet_6      Creating             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Depois que a carga da CPU diminui, a carga média da CPU retorna ao normal. Após mais 5 minutos, as regras de dimensionamento automático reduzem horizontalmente o número de instâncias de VM. As ações de redução removem primeiro as instâncias de VM com os IDs mais altos. Quando um conjunto de dimensionamento usa Conjuntos de Disponibilidade ou Zonas de Disponibilidade, as ações de scale-in são distribuídas uniformemente entre as instâncias da VM. O exemplo de saída a seguir mostra uma instância de VM sendo excluída à medida que o conjunto de dimensionamento é dimensionado automaticamente:

6  True                  WestUS2     myScaleSet_6  Deleting             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Limpar os recursos

Para remover o conjunto de dimensionamento e os recursos associados, exclua manualmente o grupo de recursos usando seu método preferencial.

Próximas etapas

Neste tutorial, você aprendeu como dimensionar automaticamente ou reduzir horizontalmente um conjunto de dimensionamento com a CLI do Azure:

  • Usar o dimensionamento automático com um conjunto de dimensionamento
  • Criar e usar regras de dimensionamento automático
  • Simular a carga da CPU para disparar regras de dimensionamento automático
  • Monitorar ações de dimensionamento automático conforme a demanda muda