Delen via


Zelfstudie: Een virtuele-machineschaalset automatisch schalen met de Azure CLI

Wanneer u een schaalset maakt, definieert u het aantal VM-exemplaren dat u wilt uitvoeren. Wanneer de vraag van de toepassing verandert, kunt u het aantal VM-exemplaren automatisch vergroten of verkleinen. De mogelijkheid van automatisch schalen stelt u in staat om altijd te voldoen aan de vraag van klanten houden of om gedurende de levenscyclus van uw app te reageren op wijzigingen in de prestaties van de toepassing. In deze zelfstudie leert u het volgende:

  • Automatisch schalen gebruiken met een schaalset
  • Regels voor automatisch schalen maken en gebruiken
  • Stresstest uitvoeren voor VM-exemplaren en regels voor automatisch schalen activeren
  • Automatisch terugschalen bij afname van de vraag

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor deze zelfstudie is versie 2.0.32 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een schaalset maken

Maak een resourcegroep maken met az group create.

az group create --name myResourceGroup --location eastus

Maak nu een virtuele-machineschaalset met az vmss create. In het volgende voorbeeld wordt een schaalset gemaakt met het aantal exemplaren van 2 en worden SSH-sleutels gegenereerd als deze niet bestaan.

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image <SKU image> \
  --orchestration-mode Flexible \
  --instance-count 2 \
  --admin-username azureuser \
  --generate-ssh-keys

Een profiel voor automatisch schalen definiëren

Als u automatisch schalen wilt inschakelen voor een schaalset, moet u eerst een profiel voor automatisch schalen definiëren. In dit profiel worden de minimum-, maximum- en standaardcapaciteit ingesteld voor de schaalset. Met behulp van deze limieten kunt u de kosten in de hand houden doordat er niet steeds VM-exemplaren hoeven te worden gemaakt, en kunt u aanvaardbare prestaties realiseren met een minimum aantal exemplaren die altijd kunnen worden ingeschaald. U maakt een profiel voor automatisch schalen met az monitor autoscale create. In het volgende voorbeeld worden de minimum- en standaardcapaciteit ingesteld op 2 VM-exemplaren en het maximum op 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

Een regel maken voor automatisch uitschalen

Als de vraag van uw toepassing toeneemt, neemt de belasting van de VM-exemplaren in de schaalset ook toe. Als deze toegenomen belasting consistent is, en geen piekbelasting is, kunt u regels voor automatisch schalen configureren om het aantal VM-exemplaren in de schaalset te verhogen. Wanneer deze VM-exemplaren worden gemaakt en uw toepassingen worden geïmplementeerd, zorgt de schaalset ervoor dat er via de load balancer verkeer wordt gedistribueerd naar de exemplaren. U bepaalt welke metrische gegevens moeten worden bewaakt, hoe lang de belasting van de toepassing moet voldoen aan een bepaalde drempelwaarde en hoeveel VM-exemplaren aan de schaalset moeten worden toegevoegd.

Maak een regel met az monitor autoscale rule create waarmee het aantal VM-exemplaren in een schaalset wordt verhoogd wanneer de gemiddelde CPU-belasting gedurende een periode van vijf minuten groter is dan 70%. Wanneer de regel wordt geactiveerd, wordt het aantal VM-exemplaren met drie verhoogd.

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

Een regel maken voor automatisch inschalen

In het weekend of 's avonds kan de vraag voor uw toepassing afnemen. Als deze afgenomen belasting consistent is gedurende een bepaalde periode, kunt u regels voor automatisch schalen configureren om het aantal VM-exemplaren in de schaalset te verlagen. Deze inschaalactie reduceert de kosten voor het uitvoeren van uw schaalset, aangezien u alleen het aantal exemplaren uitvoert dat vereist is om te voldoen aan de actuele vraag.

We gaan nog een regel maken met az monitor autoscale create, maar met deze regel wordt het aantal VM-exemplaren in een schaalset verlaagd wanneer de gemiddelde CPU-belasting gedurende een periode van vijf minuten minder dan 30% is. In het volgende voorbeeld wordt een regel gedefinieerd voor het inschalen van het aantal VM-exemplaren met één.

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

CPU-belasting genereren voor schaalset

Voor het testen van de regels voor automatisch schalen gaan we wat CPU-belasting genereren voor de VM-exemplaren in de schaalset. Deze gesimuleerde CPU-belasting zorgt ervoor dat de schaalset automatisch wordt uitgeschaald en het aantal VM-exemplaren dus wordt verhoogd. Als de gesimuleerde CPU-belasting vervolgens weer afneemt, wordt de schaalset ingeschaald en zakt het aantal VM-exemplaren.

Zie Zelfstudie: Verbinding maken met instanties van virtuele-machineschaalsets om verbinding te maken met een afzonderlijk exemplaar

Nadat u zich hebt aangemeld, installeert u het hulpprogramma stress of stress-ng . Start 10 stress-werkrollen die CPU-belasting genereren. Deze werkrollen worden gedurende 420 seconden uitgevoerd, wat voldoende is om met de regels voor automatisch schalen de gewenste actie te implementeren.

sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &

Wanneer stress uitvoer laat zien die vergelijkbaar is met stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, drukt u op Enter om terug te gaan naar de prompt.

Om te controleren of stress CPU-belasting genereert, onderzoekt u de actieve systeembelasting met het hulpprogramma top:

top

Sluit top af en verbreek vervolgens de verbinding met het VM-exemplaar. stress wordt nog gewoon uitgevoerd op het VM-exemplaar.

Ctrl-c
exit

Maak verbinding met het tweede VM-exemplaar met het poortnummer dat u hebt opgevraagd met de eerdere opdracht az vmss list-instance-connection-info:

ssh azureuser@13.92.224.66 -p 50003

Installeer stress of stress-ng en start vervolgens tien werkrollen op dit tweede VM-exemplaar.

sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &

Als stress ook hier uitvoer laat zien die vergelijkbaar is met stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, drukt u op Enter om terug te gaan naar de prompt.

Verbreek de verbinding met het tweede VM-exemplaar. stress wordt nog gewoon uitgevoerd op het VM-exemplaar.

exit

De actieve regels voor automatisch schalen bewaken

Gebruik watch om het aantal VM-exemplaren in de schaalset te controleren. Het duurt vijf minuten voordat de regels voor automatisch schalen het proces van uitschalen starten in reactie op de CPU-belasting die met stress wordt gegenereerd op elk van de VM-exemplaren:

watch az vmss list-instances \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --output table

Als de CPU-drempelwaarde is bereikt, zorgen de regels voor automatisch schalen ervoor dat het aantal VM-exemplaren in de schaalset wordt verhoogd. In de volgende uitvoer ziet u dat er drie VM's worden gemaakt op het moment dat de schaalset gaat uitschalen:

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

Als stress is beëindigd op de eerste VM-exemplaren, wordt de gemiddelde CPU-belasting weer normaal. Na nog eens vijf minuten wordt het aantal VM-exemplaren vervolgens ingeschaald. Hierbij worden VM-exemplaren met de hoogste-id's als eerste verwijderd. Wanneer een schaalset gebruikmaakt van Beschikbaarheidssets of Beschikbaarheidszones, worden inschalingsacties gelijkmatig verdeeld over deze VM-exemplaren. In de volgende voorbeelduitvoer ziet u dat één VM-exemplaar wordt verwijderd als de schaalset wordt ingeschaald:

6  True                  eastus      myScaleSet_6  Deleting             myResourceGroup  9e4133dd-2c57-490e-ae45-90513ce3b336

Sluit watch af met Ctrl-c. De capaciteit van de schaalset wordt nog steeds om de vijf minuten aangepast en er wordt dan één VM-exemplaar verwijderd totdat het minimum aantal exemplaren van twee is bereikt.

Resources opschonen

Als u de schaalset en aanvullende resources wilt verwijderen, verwijdert u de resourcegroep en alle bijbehorende resources met az group delete. De parameter --no-wait retourneert het besturingselement naar de prompt zonder te wachten totdat de bewerking is voltooid. De parameter --yes bevestigt dat u de resources wilt verwijderen, zonder een extra prompt om dit te doen.

az group delete --name myResourceGroup --yes --no-wait

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u een schaalset automatisch kunt in- of uitschalen met Azure CLI:

  • Automatisch schalen gebruiken met een schaalset
  • Regels voor automatisch schalen maken en gebruiken
  • Stresstest uitvoeren voor VM-exemplaren en regels voor automatisch schalen activeren
  • Automatisch terugschalen bij afname van de vraag