Tutorial: Dimensionar automaticamente um conjunto de dimensionamento de máquina virtual com a CLI do Azure
Quando criar um conjunto de dimensionamento, pode definir o número de instâncias de VM que quer executar. À medida que a sua aplicação exige alterações, pode aumentar ou reduzir automaticamente o número de instâncias de VM. A capacidade de dimensionamento automático permite-lhe manter-se a par da exigência do cliente ou responder às alterações de desempenho durante todo o ciclo de vida da aplicação. Neste tutorial, ficará a saber como:
- Utilizar o dimensionamento automático com um conjunto de dimensionamento
- Criar e utilizar regras de dimensionamento automático
- Teste de esforço das instâncias e acionar as regras de dimensionamento automático
- Voltar ao dimensionamento automático à medida que a exigência diminui
Se não tiver uma subscrição 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, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este tutorial requer a versão 2.0.32 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Criar um conjunto de dimensionamento
Crie um grupo de recursos com az group create.
az group create --name myResourceGroup --location eastus
Agora crie um conjunto de escala de máquina virtual com az vmss create. O exemplo a seguir cria um conjunto de escala com uma contagem de instâncias de 2 e gera 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 dimensionamento automático
Para ativar o dimensionamento automático num conjunto de dimensionamente, tem primeiro que definir um perfil de dimensionamento automático. Este perfil define a capacidade predefinida, máxima e mínima do conjunto de dimensionamento. Esses limites permitem controlar o custo não criando continuamente instâncias de VM e equilibrar o desempenho aceitável com um número mínimo de instâncias que permanecem em um evento de escala. Criar um perfil de dimensionamento automático com az monitor autoscale create. O exemplo seguinte define a capacidade predefinida e mínima de 2 instâncias de VM e 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 para dimensionamento automático para aumentar horizontalmente
Se a exigência da aplicação aumentar, a carga sobre as instâncias de VM no conjunto de dimensionamento também aumenta. Se este aumento de carga for consistente, em vez de ser apenas uma breve exigência, pode configurar regras de dimensionamento automático para aumentar o número de instâncias de VM no conjunto de dimensionamento. Quando estas instâncias de VM forem criadas e as aplicações forem implementadas, o conjunto de dimensionamento começa a distribuir o tráfego pelas mesmas através do balanceador de carga. Você controla quais métricas monitorar, por quanto tempo a carga do aplicativo deve atender a um determinado limite e quantas instâncias de VM adicionar ao conjunto de escala.
Crie uma regra com az monitor autoscale rule create que aumente o número de instâncias de VM em um conjunto de escala quando a carga média da CPU for superior a 70% durante um período de 5 minutos. Quando a regra for acionada, o número de instâncias de VM é aumentado em 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 para dimensionamento automático, para reduzir horizontalmente
À noite ou ao fim de semana, a exigência da aplicação pode diminuir. Se esta diminuição de carga for consistente durante um certo período de tempo, pode configurar regras de dimensionamento automático para diminuir o número de instâncias de VM no conjunto de dimensionamento. Esta ação de dimensionamento para reduzir horizontalmente reduz o custo de execução do conjunto de dimensionamento, uma vez que apenas executa o número de instâncias necessário para satisfazer a exigência atual.
Crie outra regra com az monitor autoscale rule create que diminui o número de instâncias de VM num conjunto de dimensionamento quando a carga média da CPU passa a ser inferior a 30% durante um período de 5 minutos. O exemplo seguinte define a regra para reduzir horizontalmente o número de instâncias de VM para um.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Gerar a carga da CPU no conjunto de dimensionamento
Para testar as regras de dimensionamento automático, gere a carga de CPU nas instâncias de VM no conjunto de dimensionamento. Esta carga de CPU simulada faz com que os dimensionamentos automáticos aumentem horizontalmente e aumentem o número de instâncias de VM. Uma vez que a carga de CPU simulada é diminuída, as regras de dimensionamento automático reduzem horizontalmente e reduzem 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áquina virtual
Uma vez conectado, instale o utilitário stress ou stress-ng . Inicie 10 trabalhadores de estresse que geram carga da CPU. Estas funções de trabalho são executadas durante 420 segundos, que é o suficiente para fazer com que as regras de dimensionamento automático implementem a ação pretendida.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Quando o stress mostrar um resultado semelhante a stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, prima a tecla Enter para regressar à linha de comandos.
Para confirmar que o stress gera carga de CPU, examine a carga de sistema ativa com o utilitário top:
top
Saia de top e, em seguida, feche a ligação à instância de VM. O stress continua a ser executado na instância de VM.
Ctrl-c
exit
Ligue à segunda instância de VM com o número de porta listado do anterior az vmss list-instance-connection-info:
ssh azureuser@13.92.224.66 -p 50003
Instale e execute stress ou stress-ng e, em seguida, inicie dez trabalhadores nesta segunda instância de VM.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Novamente, quando o stress mostrar um resultado semelhante a stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, prima a tecla Enter para regressar à linha de comandos.
Feche a ligação à segunda instância de VM. O stress continua a ser executado na instância de VM.
exit
Monitorizar as regras de dimensionamento automático ativas
Para monitorizar o número de instâncias de VM no conjunto de dimensionamento, utilize watch. Demora 5 minutos até as regras de dimensionamento automático iniciarem o processo de aumentar horizontalmente para a carga de CPU gerada por stress em cada uma das instâncias de VM:
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
Assim que tiver sido cumprido o limiar de CPU, as regras de dimensionamento automático aumentam o número de instâncias de VM no conjunto de dimensionamento. O resultado seguinte mostra três VMs criadas à medida que o conjunto de dimensionamento aumenta horizontalmente:
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 para nas instâncias de VM iniciais, a carga de CPU média 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 para reduzir horizontalmente removem primeiro as instâncias de VM com os IDs mais elevados. Quando um conjunto de dimensionamento utiliza Conjuntos de Disponibilidade ou Zonas de Disponibilidade, as ações de redução horizontal são distribuídas uniformemente nessas instâncias de VMs. O resultado de exemplo seguinte mostra uma instância de VM eliminada à medida que o conjunto de dimensionamento reduz horizontalmente de forma automática:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Saia de watch com Ctrl-c
. O conjunto de dimensionamento continua a reduzir horizontalmente a cada 5 minutos e remove uma instância de VM até ser atingida uma contagem mínima de duas instâncias.
Clean up resources (Limpar recursos)
Para remover o seu conjunto de dimensionamento e recursos adicionais, elimine o grupo de recursos e todos os respetivos recursos com az group delete. O parâmetro --no-wait
devolve o controlo à linha de comandos, sem aguardar a conclusão da operação. O parâmetro --yes
confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo.
az group delete --name myResourceGroup --yes --no-wait
Próximos passos
Neste tutorial, aprendeu a aumentar e reduzir automaticamente um conjunto de dimensionamento com a CLI do Azure:
- Utilizar o dimensionamento automático com um conjunto de dimensionamento
- Criar e utilizar regras de dimensionamento automático
- Teste de esforço das instâncias e acionar as regras de dimensionamento automático
- Voltar ao dimensionamento automático à medida que a exigência diminui