Självstudie: Skala automatiskt en VM-skalningsuppsättning med Azure CLI
När du skapar en skalningsuppsättning, definierar du antalet virtuella datorinstanser som du vill köra. När ditt program behöver ändras, kan du automatiskt öka eller minska antalet virtuella datorinstanser. Möjligheten att skala automatiskt låter dig hålla dig uppdaterad med kundernas behov eller svara på ändringar i programprestandan under hela livscykeln för din app. I den här självstudiekursen får du lära du dig att:
- Använd automatisk skalning med en skalningsuppsättning
- Skapa och använd regler för automatisk skalning
- Belastningstesta virtuella datorinstanser och utlös regler för automatisk skalning
- Skala tillbaka automatiskt när efterfrågan minskar
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här självstudien kräver version 2.0.32 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Skapa en skalningsuppsättning
Skapa en resursgrupp med az group create.
az group create --name myResourceGroup --location eastus
Skapa nu en VM-skalningsuppsättning med az vmss create. I följande exempel skapas en skalningsuppsättning med instansantalet 2 och SSH-nycklar genereras om de inte finns.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU image> \
--orchestration-mode Flexible \
--instance-count 2 \
--admin-username azureuser \
--generate-ssh-keys
Definiera en autoskalningsprofil
Om du vill aktivera autoskalning för en skalningsuppsättning börjar du med att definiera en autoskalningsprofil. Den här profilen definierar skalningsuppsättningens förvalda, lägsta och högsta kapacitet. Med hjälp av dessa restriktioner kan du begränsa kostnaderna genom att inte skapa VM-instanser kontinuerligt, samtidigt som du kan balansera godtagbara prestanda med minsta antal instanser som bevaras vid en nedskalning. Skapa en autoskalningsprofil med az monitor autoscale create. Följande exempel anger standard- och minimumkapacitet på 2 virtuella datorinstanser och högst 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
Skapa en regel för att automatiskt skala ut
Om dina programkrav ökar, ökar även belastningen på de virtuella datorinstanserna i din skalningsuppsättning. Om den här ökade belastningen är konsekvent istället för bara en kortsiktig efterfrågan, kan du konfigurera regler för automatisk skalning för att öka antalet virtuella datorinstanser i skalningsuppsättningen. När dessa virtuella datorinstanser skapas och dina program distribueras, börjar skalningsuppsättningen att distribuera trafik till dem via lastbalanseraren. Du styr vilka mått som ska övervakas, hur länge programbelastningen måste uppfylla ett visst tröskelvärde och hur många VM-instanser som ska läggas till i skalningsuppsättningen.
Skapa en regel med az monitor autoscale rule create som ökar antalet virtuella datorinstanser i en skalningsuppsättning när den genomsnittliga CPU-belastningen är större än 70 % under en 5-minuters period. När regeln utlöses, ökar antalet virtuella datorinstanser med tre.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Skapa en regel för att automatiskt skala in
På kvällar eller helger, kan efterfrågan på ditt program minska. Om den här minskade belastningen är konsekvent över en tidsperiod, kan du konfigurera regler för automatisk skalning för att minska antalet virtuella datorinstanser i skalningsuppsättningen. Den här åtgärden för skala in minskar kostnaden för att köra din skalningsuppsättningen eftersom du bara köra de antal instanser som krävs för att uppfylla den aktuella efterfrågan.
Skapa en till regel med az monitor autoscale rule create som minskar antalet VM-instanser i en skalningsuppsättning när den genomsnittliga CPU-belastningen faller under 30 % under en 5-minutersperiod. Följande exempel definierar regeln för att skala in antalet virtuella datorinstanser med en.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Generera CPU-belastning på skalningsuppsättningen
Om du vill testa reglerna för automatisk skalning kan du generera lite CPU-belastning på de virtuella datorinstanserna i skalningsuppsättningen. Den här simulerade CPU-belastningen gör att de automatiska skalningarna skalar ut och ökar antalet virtuella datorinstanser. När den simulerade CPU-belastningen sedan minskar så skalar reglerna för automatisk skalning in och minskar antalet virtuella datorinstanser.
Information om hur du ansluter till en enskild instans finns i Självstudie: Ansluta till vm-skalningsuppsättningsinstanser
När du har loggat in installerar du stress - eller stress-ng-verktyget . Starta 10 stressarbetare som genererar CPU-belastning. De här arbetarna kör i 420 sekunder, vilket räcker för att få reglerna för automatisk skalning att implementera den önskade åtgärden.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
När stress visar utdata som liknar stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, trycker du på Retur för att återgå till prompten.
Kontrollera att stress genererar CPU-belastning genom att granska den aktiva systembelastningen med top-verktyget:
top
Avsluta top, stäng sedan anslutningen till den virtuella datorinstansen. stress fortsätter att köras på den virtuella datorinstansen.
Ctrl-c
exit
Anslut till en andra virtuell datorinstans med det portnummer som listas från den föregående az vmss list-instance-connection-info:
ssh azureuser@13.92.224.66 -p 50003
Installera och kör stress eller stress-ng och starta sedan tio arbetare på den andra vm-instansen.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
När stress återigen visar utdata som liknar stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, trycker du på Retur för att återgå till prompten.
Stäng din anslutning till den andra virtuella datorinstansen. stress fortsätter att köras på den virtuella datorinstansen.
exit
Övervaka de aktiva reglerna för automatisk skalning
Du övervakar antalet virtuella datorinstanser i din skalningsuppsättning med watch. Det tar fem minuter innan autoskalningsreglerna börjar utskalningen som svar på CPU-belastningen som genereras av stress på var och en av VM-instanserna:
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
När CPU-tröskelvärdet har uppnåtts, ökar reglerna för automatisk skalning antalet virtuella datorinstanser i skalningsuppsättningen. Följande utdata visar tre virtuella datorer som skapats när skalningsuppsättningen skalar ut automatiskt:
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
När stress stoppar på den första virtuella datorn, återgår den genomsnittliga CPU-belastningen till normal. Efter 5 minuter till, skalar reglerna för automatisk skalning in antalet virtuella datorinstanser. Skalan in-åtgärder tar först bort de virtuella datorinstanserna med de högsta ID. När en skalningsuppsättning använder tillgänglighetsuppsättningar eller tillgänglighetszoner fördelas skala in-åtgärder jämnt över dessa VM-instanser. Följande exempelutdata visar en virtuell datorinstans som tas bort eftersom skalningsuppsättningen skalar in automatiskt:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Avsluta watch med Ctrl-c
. Skalningsuppsättningen fortsätter att skala in var 5:e minut och tar bort en VM-instans tills att det lägsta instansantalet på två har uppnåtts.
Rensa resurser
Om du vill ta bort din skalningsuppsättning och ytterligare resurser så tar du bort resursgruppen och alla dess resurser med az group delete. Parametern --no-wait
återför kontrollen till kommandotolken utan att vänta på att uppgiften slutförs. Parametern --yes
bekräftar att du vill ta bort resurserna utan att tillfrågas ytterligare en gång.
az group delete --name myResourceGroup --yes --no-wait
Nästa steg
I den här självstudien läste du om hur du automatiskt kan skala in eller ut en skalningsuppsättning med Azure CLI:
- Använd automatisk skalning med en skalningsuppsättning
- Skapa och använd regler för automatisk skalning
- Belastningstesta virtuella datorinstanser och utlös regler för automatisk skalning
- Skala tillbaka automatiskt när efterfrågan minskar