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
- Testar instâncias de VM sob estresse e disparar regras de dimensionamento automático
- Redimensionar automaticamente conforme a demanda é reduzida
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- 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.
az group create --name myResourceGroup --location eastus
Crie um Conjunto de Dimensionamento de Máquinas Virtuais com az vmss create. O exemplo abaixo criará um conjunto de dimensionamento com contagem de instâncias de 2 e gerará chaves SSH se elas não existirem.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU image> \
--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, bem como um máximo de 10:
az monitor autoscale create \
--resource-group myResourceGroup \
--resource myScaleSet \
--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 demanda breve, configure as regras de dimensionamento automático para aumentar o número de instâncias de VM no conjunto de dimensionamento. Quando essas instâncias de VM forem criadas e os aplicativos implantados, o conjunto de dimensionamento começará a distribuir o tráfego para eles por meio do balanceador de carga. Você controla quais métricas são monitoradas, por quanto tempo a carga do aplicativo deve atender a determinado limite e quantas instâncias de VM devem ser adicionadas ao conjunto de dimensionamento.
Criar uma regra com az monitor autoscale rule create que aumenta o número de instâncias de VM em um conjunto de dimensionamento definido quando a carga da CPU média for maior que 70% por 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 myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Criar uma regra de dimensionamento automático para redução
À noite ou durante o fim de semana, a demanda do seu aplicativo pode diminuir. Se essa diminuição de carga for consistente durante determinado período, configure as regras de dimensionamento automático para reduzir o número de instâncias de VM no conjunto de dimensionamento. Esta ação de redução diminui o custo para executar seu conjunto de dimensionamento, visto que apenas o número de instâncias necessárias para atender à demanda atual é executado.
Crie outra regra com az monitor autoscale rule create que diminua o número de instâncias de VM em um conjunto de dimensionamento definido quando a carga da CPU média ficar abaixo de 30% por um período de 5 minutos. O exemplo a seguir define a regra para reduzir o número de instâncias de VM em um.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Gerar carga de CPU no conjunto de dimensionamento
Para testar as regras de dimensionamento automático, gere alguma carga de CPU nas instâncias de VM no conjunto de dimensionamento. Essa carga de CPU simulada faz com que o dimensionamento automático escale horizontalmente e aumente o número de instâncias de VM. Conforme a carga simulada de CPU vai sendo reduzida, as regras de dimensionamento automático reduzem horizontalmente e diminuem o número de instâncias de VM.
Para se conectar a uma instância individual, consulte Tutorial: conectar-se a instâncias do Conjunto de dimensionamento de máquinas virtuais
Depois de conectado, instale o utilitário stress ou o stress-ng. Inicie 10 trabalhos de stress que geram carga de CPU. Esses trabalhos são executados por 420 segundos, o que é suficiente para fazer com que as regras de dimensionamento automático implementem a ação desejada.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Quando stress exibe uma saída semelhante a stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, pressione a tecla Enter para retornar ao prompt.
Para confirmar que o stress gera carga de CPU, examine a carga do sistema ativo com o utilitário top:
top
Saia do top e feche a conexão com a instância de VM. stress continuará a ser executado na instância de VM.
Ctrl-c
exit
Conecte-se à segunda instância de VM com o número da porta listado no az vmss list-instance-connection-info anterior:
ssh azureuser@13.92.224.66 -p 50003
Instale e execute stress ou stress-nge inicie os dez trabalhos nessa segunda instância de VM.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Novamente, quando stress exibe uma saída semelhante a stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, pressione a tecla Enter para retornar ao prompt.
Feche a conexão com a segunda instância de VM. stress continuará a ser executado na instância de VM.
exit
Monitorar as regras de dimensionamento automático ativas
Para monitorar o número de instâncias de VM em seu conjunto de dimensionamento, use watch. Demoram 5 minutos para as regras de dimensionamento automático começarem o processo de escala horizontal em resposta à carga da CPU gerada pelo stress em cada uma das instâncias de VM:
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--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 a seguir mostra três VMs criadas à medida que conjunto de dimensionamento é escalado horizontal e automaticamente:
Every 2.0s: az vmss list-instances --resource-group myResourceGroup --name myScaleSet --output table
InstanceId LatestModelApplied Location Name ProvisioningState ResourceGroup VmId
------------ -------------------- ---------- ------------ ------------------- --------------- ------------------------------------
1 True eastus myScaleSet_1 Succeeded myResourceGroup 4f92f350-2b68-464f-8a01-e5e590557955
2 True eastus myScaleSet_2 Succeeded myResourceGroup d734cd3d-fb38-4302-817c-cfe35655d48e
4 True eastus myScaleSet_4 Creating myResourceGroup 061b4c90-0d73-49fc-a066-19eab0b3d95c
5 True eastus myScaleSet_5 Creating myResourceGroup 4beff8b9-4e65-40cb-9652-43899309da27
6 True eastus myScaleSet_6 Creating myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Assim que o stress é interrompido nas instâncias de VM inicias, a carga média da CPU volta 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 horizontal removem instâncias de VM começando pelas IDs mais altas. Quando um conjunto de dimensionamento usa Conjuntos de Disponibilidade ou Zonas de Disponibilidade, as ações de reduzir horizontalmente são distribuídas uniformemente entre essas instâncias de VM. A saída de exemplo a seguir mostra uma instância de VM excluída conforme o conjunto de dimensionamento reduz horizontal e automaticamente:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Saia do watch usando Ctrl-c
. O conjunto de dimensionamento continua a reduzir horizontalmente a cada 5 minutos e a remover uma instância de VM até que a contagem mínima de duas instâncias seja alcançada.
Limpar os recursos
Para remover o conjunto de dimensionamento e outros recursos, exclua o grupo de recursos e todos os seus recursos com az group delete. O parâmetro --no-wait
retorna o controle ao prompt sem aguardar a conclusão da operação. O parâmetro --yes
confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso.
az group delete --name myResourceGroup --yes --no-wait
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
- Testar instâncias de VM sob estresse e disparar regras de dimensionamento automático
- Redimensionar automaticamente conforme a demanda é reduzida