Condividi tramite


Usare criteri di ridimensionamento personalizzati con i set di scalabilità di macchine virtuali di Azure

La distribuzione di un set di scalabilità di macchine virtuali può essere aumentata o ridotta in base a una matrice di metriche, incluse metriche personalizzate definite dall'utente e della 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 ridimensionamento consente agli utenti di configurare l'ordine in cui le macchine virtuali vengono ridotte, tramite tre configurazioni di riduzione:

  1. Default
  2. NewestVM
  3. OldestVM

Criteri di ridimensionamento predefiniti

Orchestrazione flessibile

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 vengono 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

Non è necessario che gli utenti specifichino un criterio di ridimensionamento se vogliono semplicemente che venga seguito l'ordinamento predefinito.

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 vengono 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

Non è necessario che gli utenti specifichino un criterio di ridimensionamento se vogliono semplicemente che venga seguito 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 ridimensionamento di NewestVM

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 riduzione della macchina virtuale meno recenti

Questo criterio eliminerà la macchina virtuale 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 riduzione

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

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

Azure portal

I passaggi seguenti definiscono i criteri di ridimensionamento 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 dei criteri di ridimensionamento.
  5. Selezionare un criterio di ridimensionamento nell'elenco a discesa.
  6. Al termine della creazione del nuovo set di scalabilità, selezionare 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 avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

Creare un gruppo di risorse, quindi creare un nuovo set di scalabilità con il set di criteri di ridimensionamento 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 avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

Nell'esempio seguente vengono aggiunti criteri di ridimensionamento durante la creazione di un nuovo set di scalabilità. Creare prima un gruppo di risorse, quindi creare un nuovo set di ridimensionamento con il set di criteri di ridimensionamento 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 proprietà scaleInPolicy:

"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 attivato un ridimensionamento (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 ridimensionamento 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 ridimensionamento di "NewestVM".

Modifica dei criteri di ridimensionamento

La modifica dei criteri di ridimensionamento segue lo stesso processo di applicazione dei criteri di ridimensionamento. Ad esempio, se si vuole modificare il criterio da "OldestVM" a "NewestVM", è possibile eseguire questa operazione:

Azure portal

È possibile modificare i criteri di ridimensionamento 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 dei criteri di ridimensionamento.
  3. Selezionare un criterio di ridimensionamento 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 ridimensionamento 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 ridimensionamento 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"]  
} 

Se si decide di modificare "NewestVM" in "Predefiniti" o "OldestVM" si applica lo stesso processo

Protezione delle istanze e criteri di ridimensionamento

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

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

Una macchina virtuale protetta non viene eliminata tramite un'azione di ridimensionamento, 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 ridimensionamento "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 ridimensionamento 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 ridimensionamento. 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ù piccoli siano le macchine virtuali meno recenti nel set di scalabilità.

Criteri di riduzione della macchina virtuale meno recenti

Event ID istanza in Zone1 ID istanza in Zone2 ID istanza in Zone3 Selezione di ridimensionamento
Iniziale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Ridurre il numero di istanze 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Scegliere tra 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.
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 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à.
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 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 ridimensionamento di NewestVM

Event ID istanza in Zone1 ID istanza in Zone2 ID istanza in Zone3 Selezione di ridimensionamento
Iniziale 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 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à.
Ridurre il numero di istanze 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.
Ridurre il numero di istanze 3, 4, 5 2, 6 1, 7 Scegliere Zona 1 anche se la Zona 3 ha la macchina virtuale più recente. Eliminare VM5 nella Zona 1 perché è la macchina virtuale più recente in tale zona.
Ridurre il numero di istanze 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" sull'oggetto di tipo "proprietà"", 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 il ridimensionamento. Fare riferimento agli esempi in questo documento. Se il set di scalabilità di macchine virtuali è una distribuzione di zona, i criteri di ridimensionamento vengono applicati prima alle zone sbilanciate e quindi all'interno del set di scalabilità dopo il bilanciamento della zona. Se l'ordine di ridimensionamento 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 nei set di scalabilità di macchine virtuali.