Condividi tramite


Esercitazione: Ridimensionare automaticamente un set di scalabilità di macchine virtuali con l'interfaccia della riga di comando di Azure

Quando si crea un set di scalabilità, definire il numero di istanze di macchine virtuali da eseguire. È possibile aumentare o ridurre automaticamente il numero di istanze di macchine virtuali in base alle richieste dell'applicazione. La scalabilità automatica consente di adattarsi alle esigenze dei clienti o di rispondere alle prestazioni dell'applicazione durante il ciclo di vita dell'app. In questa esercitazione si apprenderà come:

  • Usare la scalabilità automatica con un set di scalabilità
  • Creare e usare regole di scalabilità automatica
  • Simulare il carico della CPU per attivare le regole di scalabilità automatica
  • Monitorare le azioni di scalabilità automatica man mano che cambiano le richieste

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Prerequisiti

  • Per questa esercitazione è necessaria la versione 2.0.32 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Creare un set di scalabilità

Creare un gruppo di risorse con 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

Si può ora creare un set di scalabilità di macchine virtuali con il comando az vmss create. L'esempio seguente crea un set di scalabilità con un numero di istanze pari a 2, genera chiavi SSH se non esistono e usa un'immagine valida 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

Definire un profilo di scalabilità automatica

Per abilitare la scalabilità automatica su un set di scalabilità, è innanzitutto necessario definire un profilo di scalabilità automatica. Questo profilo definisce la capacità predefinita, minima e massima del set di scalabilità. Questi limiti consentono di controllare i costi perché le istanze di macchine virtuali non vengono create di continuo. Permettono anche di trovare un equilibrio appropriato tra prestazioni e numero minimo di istanze che rimangono in un evento di riduzione. Creare un profilo di scalabilità automatica con az monitor autoscale create. L'esempio seguente imposta la capacità predefinita e minima di 2 istanze di vm e un massimo di 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

Creare una regola per aumentare automaticamente il numero di istanze

Se aumenta la richiesta da parte dell'applicazione, aumenta il carico sulle istanze di macchine virtuali nel set di scalabilità. Se questo carico aumentato è coerente, anziché solo una breve domanda, è possibile configurare regole di scalabilità automatica per aumentare il numero di istanze di macchine virtuali. Quando queste istanze vengono create e l'applicazione viene distribuita, il set di scalamento inizia a distribuire il traffico a tali istanze tramite il bilanciatore del carico. È possibile controllare quali metriche monitorare, per quanto tempo il carico deve soddisfare una determinata soglia e il numero di istanze di macchina virtuale da aggiungere.

Creare una regola con az monitor autoscale rule create che aumenta il numero di istanze di macchine virtuali quando il carico medio della CPU è maggiore di 70% in un periodo di 5 minuti. Quando la regola viene attivata, il numero di istanze di VM viene incrementato di tre.

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

Creare una regola per ridurre automaticamente il numero di istanze

Quando la domanda dell'applicazione diminuisce, il carico nelle istanze della macchina virtuale viene eliminato. Se questo carico ridotto persiste per un periodo di tempo, è possibile configurare le regole di scalabilità automatica per ridurre il numero di istanze di macchine virtuali nel set di scalabilità. Questa azione di scalabilità orizzontale consente di ridurre i costi eseguendo solo il numero necessario di istanze necessarie per soddisfare la domanda corrente.

Creare un'altra regola con az monitor autoscale rule create che riduce il numero di istanze di macchine virtuali quando il carico medio della CPU scende al di sotto di 30% in un periodo di 5 minuti. Nell'esempio seguente viene ridimensionato il numero di istanze di macchina virtuale di una.

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

Simulare il carico della CPU nel set di scalabilità

Per testare le regole di scalabilità automatica, è necessario simulare il carico della CPU sostenuto nelle istanze della macchina virtuale nel set di scalabilità. In questo approccio minimalista si evita di installare pacchetti aggiuntivi usando il comando predefinito yes per generare il carico della CPU. Il comando seguente avvia 3 processi in background che emettono continuamente dati su /dev/null per 60 secondi e poi li termina.

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

Questo comando simula il carico della CPU senza introdurre errori di installazione del pacchetto.

Monitorare le regole di scalabilità automatica attive

Per monitorare il numero di istanze di macchine virtuali nel gruppo di scalabilità, usare il comando watch. Potrebbero essere necessari fino a 5 minuti prima che le regole di scalabilità automatica inizino il processo di scalabilità orizzontale in risposta al carico della CPU. Tuttavia, una volta che accade, è possibile uscire dall'orologio con i tasti CTRL+C .

Successivamente, il set di scalabilità aumenterà automaticamente il numero di istanze di macchine virtuali per soddisfare la domanda. Il comando seguente mostra l'elenco delle istanze di macchina virtuale nel set di scalabilità:

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

Al raggiungimento della soglia relativa alla CPU, le regole di scalabilità automatica aumentano il numero di istanze di VM nel set di scalabilità. L'output mostrerà l'elenco delle istanze di macchina virtuale man mano che vengono create nuove istanze.

  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

Quando il carico della CPU diminuisce, il carico medio della CPU torna normale. Dopo altri 5 minuti, le regole di scalabilità automatica riducono quindi il numero di istanze di VM. Le azioni di riduzione di scala rimuovono prima le istanze di macchine virtuali con gli ID più alti. Quando un set di scalabilità usa set di disponibilità o zone di disponibilità, le azioni di scalabilità orizzontale vengono distribuite uniformemente tra le istanze della macchina virtuale. L'output di esempio seguente mostra un'istanza di macchina virtuale che viene eliminata mentre il set di scalabilità si ridimensiona automaticamente in:

6  True                  WestUS2     myScaleSet_6  Deleting             myResourceGroupxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Pulire le risorse

Per favore, per rimuovere il set di scalabilità e le risorse associate, elimina manualmente il gruppo di risorse usando il metodo che preferisci.

Passaggi successivi

In questa esercitazione si è appreso come ridurre o aumentare in modo automatico un set di scalabilità con l'interfaccia della riga di comando di Azure:

  • Usare la scalabilità automatica con un set di scalabilità
  • Creare e usare regole di scalabilità automatica
  • Simulare il carico della CPU per attivare le regole di scalabilità automatica
  • Monitorare le azioni di scalabilità automatica man mano che cambiano le richieste