Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
- 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