Usare criteri di scalabilità orizzontale personalizzati con Azure set di scalabilità di macchine virtuali

Una distribuzione del set di scalabilità di macchine virtuali può essere ridimensionata o ridimensionata in base a una matrice di metriche, incluse le metriche personalizzate definite dall'utente e la piattaforma. Mentre un aumento crea nuove macchine virtuali basate sul modello del set di scalabilità, una riduzione influisce sull'esecuzione di macchine virtuali che possono avere configurazioni e/o funzioni diverse man mano che il carico di lavoro del set di scalabilità si evolve.

La funzionalità dei criteri di scalabilità orizzontale consente agli utenti di configurare l'ordine in cui le macchine virtuali vengono ridimensionate, tramite tre configurazioni con scalabilità orizzontale:

  1. Predefinito
  2. NewestVM
  3. OldestVM

Criterio di scalabilità predefinito

Orchestrazione flessibile

Con questo criterio, le macchine virtuali vengono ridimensionate dopo il bilanciamento tra le zone di disponibilità (se il set di scalabilità è in configurazione di zona) e la macchina createdTime virtuale meno recente in base alla scalabilità orizzontale. Il bilanciamento del dominio di errore non è disponibile nei criteri predefiniti con modalità di orchestrazione flessibile.

Orchestrazione uniforme

Per impostazione predefinita, il set di scalabilità di macchine virtuali applica questo criterio per determinare quali istanze verranno ridimensionate. Con il criterio Predefinito , le macchine virtuali sono selezionate per il ridimensionamento nell'ordine seguente:

  1. Bilanciare le macchine virtuali tra zone di disponibilità (se il set di scalabilità viene distribuito nella configurazione di zona)
  2. Bilanciare le macchine virtuali tra domini di errore (il massimo sforzo)
  3. Eliminare la macchina virtuale con l'ID istanza più alto

Gli utenti non devono specificare criteri di scalabilità orizzontale se vogliono semplicemente seguire l'ordinamento predefinito.

Il bilanciamento tra zone di disponibilità o domini di errore non sposta le istanze tra zone di disponibilità o domini di errore. Il bilanciamento viene ottenuto tramite l'eliminazione di macchine virtuali dalle zone di disponibilità non bilanciate o dai domini di errore fino a quando la distribuzione delle macchine virtuali non diventa bilanciata.

Criteri di scalabilità della macchina virtuale più recenti

Questo criterio eliminerà la macchina virtuale più recente o creata più di recente nel set di scalabilità, dopo il bilanciamento delle macchine virtuali tra le zone di disponibilità (per le distribuzioni di zona). L'abilitazione di questo criterio richiede una modifica della configurazione nel modello del set di scalabilità di macchine virtuali.

Criteri di scalabilità di VM meno recenti

Questo criterio eliminerà la macchina virtuale creata meno recente nel set di scalabilità, dopo il bilanciamento delle macchine virtuali tra le zone di disponibilità (per le distribuzioni di zona). L'abilitazione di questo criterio richiede una modifica della configurazione nel modello del set di scalabilità di macchine virtuali.

Abilitazione dei criteri di scalabilità orizzontale

Un criterio di scalabilità orizzontale viene definito nel modello del set di scalabilità di macchine virtuali. Come indicato nelle sezioni precedenti, è necessaria una definizione di criteri con scalabilità orizzontale quando si usano i criteri "NewestVM" e "OldestVM". Il set di scalabilità di macchine virtuali userà automaticamente i criteri di scalabilità predefinita se non è presente alcuna definizione di criteri di scalabilità nel modello del set di scalabilità.

I criteri di scalabilità orizzontale possono essere definiti nel modello del set di scalabilità di macchine virtuali nei modi seguenti:

Azure portal

I passaggi seguenti definiscono i criteri di scalabilità quando si crea un nuovo set di scalabilità.

  1. Passare a set di scalabilità di macchine virtuali.
  2. Selezionare + Aggiungi per creare un nuovo set di scalabilità.
  3. Passare alla scheda Ridimensionamento .
  4. Individuare la sezione Criteri di scalabilità orizzontale .
  5. Selezionare un criterio di scalabilità orizzontale nell'elenco a discesa.
  6. Al termine della creazione del nuovo set di scalabilità, selezionare Il pulsante Rivedi e crea .

Uso dell'API

Eseguire un'operazione PUT nel set di scalabilità di macchine virtuali usando l'API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["OldestVM"]  
        } 
    }    
} 

Azure PowerShell

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure per impostazione predefinita saranno modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica di rilievo per i clienti di PowerShell/interfaccia della riga di comando di VMSS - Hub della community Microsoft

Creare un gruppo di risorse, quindi creare un nuovo set di scalabilità con il set di criteri di scalabilità impostato come OldestVM.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "<VMSS location>"
New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "<VMSS location>" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -ScaleInPolicy “OldestVM”

Interfaccia della riga di comando di Azure

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure per impostazione predefinita saranno modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica di rilievo per i clienti di PowerShell/interfaccia della riga di comando di VMSS - Hub della community Microsoft

Nell'esempio seguente vengono aggiunti criteri di scalabilità orizzontale durante la creazione di un nuovo set di scalabilità. Creare prima un gruppo di risorse, quindi creare un nuovo set di scalabilità con criteri di scalabilità orizzontale come OldestVM.

az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --orchestration-mode flexible \
  --image Ubuntu2204 \
  --admin-username <azureuser> \
  --generate-ssh-keys \
  --scale-in-policy OldestVM

Uso del modello

Nel modello, in "proprietà", aggiungere la scaleInPolicy proprietà :

"scaleInPolicy": {  
      "rules": ["OldestVM"]  
}

Questi blocchi di codice specificano che il set di scalabilità di macchine virtuali eliminerà la macchina virtuale meno recente in un set di scalabilità con bilanciamento della zona, quando viene attivata una scalabilità orizzontale (tramite scalabilità automatica o eliminazione manuale).

Quando un set di scalabilità di macchine virtuali non è bilanciato dalla zona, il set di scalabilità eliminerà prima le macchine virtuali nelle zone sbilanciate. All'interno delle zone sbilanciate, il set di scalabilità usa i criteri di scalabilità orizzontale specificati per determinare la macchina virtuale da ridimensionare. In questo caso, all'interno di una zona sbilanciata, il set di scalabilità selezionerà la macchina virtuale meno recente in tale zona da eliminare.

Per il set di scalabilità di macchine virtuali non di zona, il criterio seleziona la macchina virtuale meno recente nel set di scalabilità per l'eliminazione.

Lo stesso processo si applica quando si usano i criteri di scalabilità "NewestVM".

Modifica dei criteri di scalabilità orizzontale

La modifica dei criteri di scalabilità orizzontale segue lo stesso processo di applicazione dei criteri di scalabilità orizzontale. Ad esempio, se si vuole modificare il criterio da 'OldestVM' a 'NewestVM', è possibile farlo con:

Azure portal

È possibile modificare i criteri di scalabilità orizzontale di un set di scalabilità esistente tramite il portale di Azure.

  1. In un set di scalabilità di macchine virtuali esistente selezionare Ridimensionamento dal menu a sinistra.
  2. Selezionare la scheda Criteri di ridimensionamento.
  3. Selezionare un criterio di scalabilità orizzontale nell'elenco a discesa.
  4. Al termine, seleziona Salva.

Uso dell'API

Eseguire un'operazione PUT nel set di scalabilità di macchine virtuali usando l'API 2019-03-01:

PUT
https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<myRG>/providers/Microsoft.Compute/virtualMachineScaleSets/<myVMSS>?api-version=2019-03-01 

{ 
"location": "<VMSS location>", 
    "properties": { 
        "scaleInPolicy": {  
            "rules": ["NewestVM"]  
        } 
    }    
}

Azure PowerShell

Aggiornare i criteri di scalabilità orizzontale di un set di scalabilità esistente:

Update-AzVmss `
 -ResourceGroupName "myResourceGroup" `
 -VMScaleSetName "myScaleSet" `
 -ScaleInPolicy “OldestVM”

Interfaccia della riga di comando di Azure

Di seguito è riportato un esempio per l'aggiornamento dei criteri di scalabilità orizzontale di un set di scalabilità esistente:

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --scale-in-policy OldestVM

Uso del modello

Nel modello, in "proprietà", modificare il modello come riportato di seguito e ridistribuire:

"scaleInPolicy": {  
      "rules": ["NewestVM"]  
} 

Lo stesso processo si applica se si decide di modificare 'NewestVM' in 'Default' o 'OldestVM'

Protezione delle istanze e criteri di scalabilità orizzontale

set di scalabilità di macchine virtuali fornire due tipi di protezione dell'istanza:

  1. Proteggi dalla riduzione
  2. Proteggere dalle azioni del set di scalabilità

Una macchina virtuale protetta non viene eliminata tramite un'azione con scalabilità orizzontale, indipendentemente dai criteri di scalabilità applicati. Ad esempio, se VM_0 (macchina virtuale meno recente nel set di scalabilità) è protetta dal ridimensionamento e il set di scalabilità ha i criteri di scalabilità "OldestVM" abilitati, VM_0 non verrà considerato per essere ridimensionato, anche se è la macchina virtuale meno recente nel set di scalabilità.

Una macchina virtuale protetta può essere eliminata manualmente dall'utente in qualsiasi momento, indipendentemente dai criteri di scalabilità abilitati nel set di scalabilità.

Esempi di utilizzo

Gli esempi seguenti illustrano come un set di scalabilità di macchine virtuali seleziona le macchine virtuali da eliminare quando viene attivato un evento di scalabilità orizzontale. Si presuppone che le macchine virtuali con gli ID istanza più elevati siano le macchine virtuali più recenti nel set di scalabilità e che le macchine virtuali con gli ID istanza più piccole siano le macchine virtuali meno recenti nel set di scalabilità.

Criteri di scalabilità di VM meno recenti

Evento ID istanza in Zone1 ID istanza in Zone2 ID istanza in Zone3 Selezione con scalabilità orizzontale
Iniziale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Scalabilità orizzontale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Scegliere tra La zona 1 e 2, anche se la zona 3 ha la macchina virtuale meno recente. Eliminare VM2 dalla zona 2 perché è la macchina virtuale meno recente in quella zona.
Scalabilità orizzontale 3, 4, 5, 10 6, 9, 11 1, 7, 8 Scegliere Zona 1 anche se la zona 3 ha la macchina virtuale meno recente. Eliminare VM3 dalla zona 1 perché è la macchina virtuale meno recente in quella zona.
Scalabilità orizzontale 4, 5, 10 6, 9, 11 1, 7, 8 Le zone sono bilanciate. Eliminare VM1 nella zona 3 perché è la macchina virtuale meno recente nel set di scalabilità.
Scalabilità orizzontale 4, 5, 10 6, 9, 11 7, 8 Scegliere tra Zona 1 e Zona 2. Eliminare VM4 nella zona 1 perché è la macchina virtuale meno recente tra le due zone.
Scalabilità orizzontale 5, 10 6, 9, 11 7, 8 Scegliere Zona 2 anche se la zona 1 ha la macchina virtuale meno recente. Eliminare VM6 nella zona 1 perché è la macchina virtuale meno recente in quella zona.
Scalabilità orizzontale 5, 10 9, 11 7, 8 Le zone sono bilanciate. Eliminare vm5 nella zona 1 perché è la macchina virtuale meno recente nel set di scalabilità.

Per i set di scalabilità di macchine virtuali non di zona, il criterio seleziona la macchina virtuale meno recente nel set di scalabilità per l'eliminazione. Qualsiasi macchina virtuale "protetta" viene ignorata per l'eliminazione.

Criteri di scalabilità della macchina virtuale più recenti

Evento ID istanza in Zone1 ID istanza in Zone2 ID istanza in Zone3 Selezione con scalabilità orizzontale
Iniziale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Scalabilità orizzontale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Scegliere tra Zona 1 e 2. Eliminare VM11 dalla zona 2 perché è la macchina virtuale più recente tra le due zone.
Scalabilità orizzontale 3, 4, 5, 10 2, 6, 9 1, 7, 8 Scegliere Zona 1 perché include più macchine virtuali rispetto alle altre due zone. Eliminare VM10 dalla zona 1 perché è la macchina virtuale più recente in tale zona.
Scalabilità orizzontale 3, 4, 5 2, 6, 9 1, 7, 8 Le zone sono bilanciate. Eliminare VM9 nella zona 2 perché è la macchina virtuale più recente nel set di scalabilità.
Scalabilità orizzontale 3, 4, 5 2, 6 1, 7, 8 Scegliere tra Zona 1 e Zona 3. Eliminare VM8 nella zona 3 perché è la macchina virtuale più recente in tale zona.
Scalabilità orizzontale 3, 4, 5 2, 6 1, 7 Scegliere Zona 1 anche se la zona 3 include la macchina virtuale più recente. Eliminare VM5 nella zona 1 perché è la macchina virtuale più recente in tale zona.
Scalabilità orizzontale 3, 4 2, 6 1, 7 Le zone sono bilanciate. Eliminare VM7 nella zona 3 perché è la macchina virtuale più recente nel set di scalabilità.

Per i set di scalabilità di macchine virtuali non di zona, il criterio seleziona la macchina virtuale più recente nel set di scalabilità per l'eliminazione. Qualsiasi macchina virtuale "protetta" viene ignorata per l'eliminazione.

Risoluzione dei problemi

  1. Errore durante l'abilitazione di scaleInPolicy Se viene visualizzato un errore "BadRequest" con un messaggio di errore che indica che "Impossibile trovare il membro 'scaleInPolicy' nell'oggetto di tipo 'properties'", verificare la versione dell'API usata per il set di scalabilità di macchine virtuali. Per questa funzionalità è necessaria la versione API 2019-03-01 o successiva.

  2. Selezione errata delle macchine virtuali per la scalabilità orizzontale Fare riferimento agli esempi in questo documento. Se il set di scalabilità di macchine virtuali è una distribuzione di zona, i criteri di scalabilità orizzontale vengono applicati prima alle zone sbilanciate e quindi all'interno del set di scalabilità dopo il bilanciamento della zona. Se l'ordine di scalabilità orizzontale non è coerente con gli esempi documentati qui, generare una query con il team del set di scalabilità di macchine virtuali per la risoluzione dei problemi.

Passaggi successivi

Informazioni su come distribuire l'applicazione in set di scalabilità di macchine virtuali.