Verwenden benutzerdefinierter Richtlinien für horizontales Herunterskalieren mit dem Azure Virtual Machine Scale Sets-Dienst

Eine Bereitstellung des Azure Virtual Machine Scale Sets-Diensts kann basierend auf einem Array von Metriken einschließlich plattform- und benutzerdefinierter Metriken horizontal hoch- oder herunterskaliert werden. Während bei einer horizontalen Skalierung basierend auf dem Skalierungsgruppenmodell neue VMs erstellt werden, wirkt sich das horizontale Herunterskalieren auf die Ausführung virtueller Computer aus, die im Laufe der Entwicklung der Skalierungsgruppenworkload möglicherweise unterschiedliche Konfigurationen und/oder Funktionen aufweisen.

Mit dem Feature „Horizontales Herunterskalieren“ können Benutzer die Reihenfolge konfigurieren, in der virtuelle Computer horizontal herunterskaliert werden, indem drei Konfigurationen für horizontales Herunterskalieren verwendet werden.

  1. Standard
  2. NewestVM
  3. OldestVM

Standardrichtlinie für das horizontale Herunterskalieren

Flexible Orchestrierung

Mit dieser Richtlinie werden virtuelle Computer nach dem Ausgleich zwischen Verfügbarkeitszonen skaliert (wenn sich die Skalierungsgruppe in zonenspezifischer Konfiguration befindet), und der älteste virtuelle Computer gemäß createdTime wird zuerst skaliert. Der Ausgleich über die Fehlerdomäne in der Standardrichtlinie mit flexiblem Orchestrierungsmodus ist nicht verfügbar.

Einheitliche Orchestrierung

Standardmäßig wendet der Azure Virtual Machine Scale Sets-Dienst diese Richtlinie an, um zu bestimmen, welche Instanz(en) horizontal herunterskaliert werden soll(en). Mit der Standardrichtlinie werden VMs für das horizontale Herunterskalieren in der folgenden Reihenfolge ausgewählt:

  1. Ausgleichen virtueller Computer über Verfügbarkeitszonen hinweg (wenn die Skalierungsgruppe in zonaler Konfiguration bereitgestellt wird)
  2. Ausgleichen virtueller Computer über Domänen hinweg (beste Leistung)
  3. Löschen des virtuellen Computers mit der höchsten Instanz-ID

Benutzer müssen keine Richtlinie für das horizontale Herunterskalieren angeben, wenn sie nur möchten, dass die Standardreihenfolge befolgt wird.

Das Ausgleichen über Verfügbarkeitszonen oder Fehlerdomänen hinweg verschiebt keine Instanzen zwischen Verfügbarkeitszonen oder Fehlerdomänen. Der Ausgleich erfolgt durch Löschen virtueller Computer aus den unausgeglichenen Verfügbarkeitszonen oder Fehlerdomänen, bis die Verteilung virtueller Computer ausgeglichen ist.

NewestVM-Richtlinie für das horizontale Herunterskalieren

Diese Richtlinie löscht den neuesten oder zuletzt erstellten virtuellen Computer in der Skalierungsgruppe nach dem Ausgleich von VMs über Verfügbarkeitszonen hinweg (für zonale Bereitstellungen). Wenn Sie diese Richtlinie aktivieren, ist eine Konfigurationsänderung für das Azure Virtual Machine Scale Sets-Modell erforderlich.

OldestVM-Richtlinie für das horizontale Herunterskalieren

Diese Richtlinie löscht den ältesten erstellten virtuellen Computer in der Skalierungsgruppe nach dem Ausgleich von VMs über Verfügbarkeitszonen hinweg (für zonale Bereitstellungen). Wenn Sie diese Richtlinie aktivieren, ist eine Konfigurationsänderung für das Azure Virtual Machine Scale Sets-Modell erforderlich.

Aktivieren der Richtlinie für das horizontale Herunterskalieren

Eine Richtlinie für horizontales Herunterskalieren ist im Azure Virtual Machine Scale Sets-Modell definiert. Wie in den vorherigen Abschnitten erwähnt, ist eine Richtliniendefinition für das horizontale Herunterskalieren erforderlich, wenn die Richtlinien „NewestVM“ und „OldestVM“ verwendet werden. Die VM-Skalierungsgruppe verwendet automatisch die Standardrichtlinie zum horizontalen Herunterskalieren, wenn im Skalierungsgruppenmodell keine Richtliniendefinition für das horizontale Herunterskalieren vorhanden ist.

Eine Richtlinie zum horizontalen Herunterskalieren kann auf folgende Weise für das Azure Virtual Machine Scale Sets-Modell definiert werden:

Azure-Portal

In den folgenden Schritten wird die Richtlinie zum horizontalen Herunterskalieren beim Erstellen einer neuen Skalierungsgruppe definiert.

  1. Navigieren Sie zu Virtual Machine Scale Sets.
  2. Wählen Sie + Hinzufügen aus, um eine neue Skalierungsgruppe zu erstellen.
  3. Navigieren Sie zur Registerkarte Skalierung.
  4. Suchen Sie den Abschnitt Richtlinie für horizontales Herunterskalieren.
  5. Wählen Sie eine Richtlinie zum horizontalen Herunterskalieren aus der Dropdownliste aus.
  6. Wenn Sie die Erstellung der neuen Skalierungsgruppe abgeschlossen haben, wählen Sie die Schaltfläche Überprüfen und erstellen aus.

Verwenden der API

Führen Sie einen PUT-Befehl für den Virtual Machine Scale Sets-Dienst mit API 2019-03-01 aus:

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

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – Microsoft Community Hub.

Erstellen Sie eine Ressourcengruppe, und erstellen Sie dann eine neue Skalierungsgruppe, für die die Richtlinie für horizontales Herunterskalieren auf OldestVM festgelegt ist.

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

Azure CLI

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – Microsoft Community Hub.

Im folgenden Beispiel wird eine Richtlinie zum horizontalen Herunterskalieren beim Erstellen einer neuen Skalierungsgruppe hinzugefügt. Erstellen Sie zunächst eine Ressourcengruppe, und erstellen Sie dann eine neue Skalierungsgruppe, für die die Richtlinie für horizontales Herunterskalieren auf OldestVM festgelegt ist.

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

Verwenden einer Vorlage

Fügen Sie in Ihrer Vorlage unter „Eigenschaften“ die scaleInPolicy-Eigenschaft hinzu:

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

Die Codeblöcke geben an, dass die VM-Skalierungsgruppe den ältesten virtuellen Computer in einer Skalierungsgruppe mit Zonenausgleich löscht, wenn (durch Autoskalierung oder manuelles Löschen) ein horizontales Herunterskalieren ausgelöst wird.

Bei einer VM-Skalierungsgruppe ohne Zonenausgleich löscht die Skalierungsgruppe zuerst virtuelle Computer in der/den unausgeglichenen Zone(n). Innerhalb der ungleichgewichtigen Zonen verwendet der Skalierungssatz die angegebene Scale-In-Richtlinie, um zu bestimmen, in welcher VM skaliert werden soll. In diesem Fall wählt die Skalierungsgruppe in einer unausgeglichenen Zone die älteste VM in dieser Zone zum Löschen aus.

Bei einer nicht zonalen Virtual Machine Scale Sets-Instanz wählt die Richtlinie den ältesten virtuellen Computer in der Skalierungsgruppe zum Löschen aus.

Derselbe Prozess gilt bei Verwendung der Scale-In-Richtlinie „NewestVM“.

Ändern von Richtlinien für horizontales Herunterskalieren

Der Prozess zum Ändern der Richtlinie für das horizontale Herunterskalieren ähnelt dem zur Anwendung der Richtlinie für das horizontale Herunterskalieren. Wenn Sie zum Beispiel die Richtlinie von „OldestVM“ in „NewestVM“ ändern möchten, können Sie folgendermaßen vorgehen:

Azure-Portal

Sie können die Richtlinie für das horizontale Herunterskalieren einer vorhandenen Skalierungsgruppe über das Azure-Portal ändern.

  1. Wählen Sie in einer vorhandenen Virtual Machine Scale Sets-Instanz im Menü auf der linken Seite Skalierung aus.
  2. Wählen Sie die Registerkarte Horizontales Herunterskalieren aus.
  3. Wählen Sie eine Richtlinie zum horizontalen Herunterskalieren aus der Dropdownliste aus.
  4. Klicken Sie auf Speichern, wenn Sie fertig sind.

Verwenden der API

Führen Sie einen PUT-Befehl für den Virtual Machine Scale Sets-Dienst mit API 2019-03-01 aus:

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

Aktualisieren Sie die Richtlinie für das horizontale Herunterskalieren einer vorhandenen Skalierungsgruppe:

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

Azure CLI

Im folgenden finden Sie ein Beispiel für das Aktualisieren der Richtlinie für das horizontale Herunterskalieren einer vorhandenen Skalierungsgruppe:

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

Verwenden einer Vorlage

Ändern Sie die Vorlage unter „Eigenschaften“ wie unten dargestellt, und stellen Sie sie erneut bereit:

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

Der gleiche Vorgang wird angewendet, wenn Sie „NewestVM“ in „Standard“ oder „OldestVM“ ändern möchten.

Instanzschutz und Richtlinie zum horizontalen Herunterskalieren

Virtual Machine Scale Sets-Instanzen umfassen zwei Arten von Instanzschutz:

  1. Schutz vor horizontalem Herunterskalieren
  2. Schutz vor Skalierungsgruppenaktionen

Ein geschützter virtueller Computer wird unabhängig von der angewendeten Richtlinie zum horizontalen Herunterskalieren nicht durch eine Aktion zum horizontalen Herunterskalieren gelöscht. Wenn z. B. VM_0 (die älteste VM in der Skalierungsgruppe) vor dem horizontalen Herunterskalieren geschützt ist und für die Skalierungsgruppe die Richtlinie „OldestVM“ zum horizontalen Herunterskalieren aktiviert ist, wird VM_0 nicht beim horizontalen Herunterskalieren berücksichtigt, obwohl es sich um die älteste VM in der Skalierungsgruppe handelt.

Ein geschützter virtueller Computer kann unabhängig von der in der Skalierungsgruppe aktivierten Richtlinie zum horizontalen Herunterskalieren jederzeit vom Benutzer manuell gelöscht werden.

Anwendungsbeispiele

Die folgenden Beispiele veranschaulichen, wie eine VM-Skalierungsgruppe VMs zum Löschen auswählt, wenn ein horizontales Herunterskalieren ausgelöst wird. Bei virtuellen Computern mit den höchsten Instanz-IDs wird davon ausgegangen, dass es sich um die neuesten VMs in der Skalierungsgruppe handelt, und die virtuellen Computer mit den kleinsten Instanz-IDs werden als älteste VMs in der Skalierungsgruppe angesehen.

OldestVM-Richtlinie für das horizontale Herunterskalieren

Ereignis Instanz-IDs in Zone 1 Instanz-IDs in Zone 2 Instanz-IDs in Zone 3 Auswahl für horizontales Herunterskalieren
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Horizontales Herunterskalieren 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Auswahl zwischen Zone 1 und 2, auch wenn Zone 3 über die älteste VM verfügt. Löschen von VM2 in Zone 2, da es sich um die älteste VM in dieser Zone handelt.
Horizontales Herunterskalieren 3, 4, 5, 10 6, 9, 11 1, 7, 8 Auswahl von Zone 1, obwohl Zone 3 über die älteste VM verfügt. Löschen von VM3 in Zone 1, da es sich um die älteste VM in dieser Zone handelt.
Horizontales Herunterskalieren 4, 5, 10 6, 9, 11 1, 7, 8 Zonen sind ausgeglichen. Löschen von VM1 in Zone 3, da es sich um die älteste VM in der Skalierungsgruppe handelt.
Horizontales Herunterskalieren 4, 5, 10 6, 9, 11 7, 8 Auswahl zwischen Zone 1 und 2. Löschen von VM4 in Zone 1, da es sich um die älteste VM in den beiden Zonen handelt.
Horizontales Herunterskalieren 5, 10 6, 9, 11 7, 8 Auswahl von Zone 2, obwohl Zone 1 über die älteste VM verfügt. Löschen von VM6 in Zone 1, da es sich um die älteste VM in dieser Zone handelt.
Horizontales Herunterskalieren 5, 10 9, 11 7, 8 Zonen sind ausgeglichen. Löschen von VM5 in Zone 1, da es sich um die älteste VM in der Skalierungsgruppe handelt.

Für nicht zonale Virtual Machine Scale Sets-Instanzen wählt die Richtlinie den ältesten virtuellen Computer in der Skalierungsgruppe zum Löschen aus. Jeder „geschützte“ virtuelle Computer wird zum Löschen übersprungen.

NewestVM-Richtlinie für das horizontale Herunterskalieren

Ereignis Instanz-IDs in Zone 1 Instanz-IDs in Zone 2 Instanz-IDs in Zone 3 Auswahl für horizontales Herunterskalieren
Initial 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8
Horizontales Herunterskalieren 3, 4, 5, 10 2, 6, 9, 11 1, 7, 8 Auswahl zwischen Zone 1 und 2. Löschen von VM11 aus Zone 2, da es sich um die neueste VM in den beiden Zonen handelt.
Horizontales Herunterskalieren 3, 4, 5, 10 2, 6, 9 1, 7, 8 Auswahl von Zone 1, da sie mehr VMS als die anderen beiden Zonen aufweist. Löschen von VM10 in Zone 1, da es sich um die neueste VM in dieser Zone handelt.
Horizontales Herunterskalieren 3, 4, 5 2, 6, 9 1, 7, 8 Zonen sind ausgeglichen. Löschen von VM9 in Zone 2, da es sich um die neueste VM in der Skalierungsgruppe handelt.
Horizontales Herunterskalieren 3, 4, 5 2, 6 1, 7, 8 Auswahl zwischen Zone 1 und 3. Löschen von VM8 in Zone 3, da es sich um die neueste VM in dieser Zone handelt.
Horizontales Herunterskalieren 3, 4, 5 2, 6 1, 7 Auswahl von Zone 1, obwohl Zone 3 über den neuesten virtuellen Computer verfügt. Löschen von VM5 in Zone 1, da es sich um die neueste VM in dieser Zone handelt.
Horizontales Herunterskalieren 3, 4 2, 6 1, 7 Zonen sind ausgeglichen. Löschen von VM7 in Zone 3, da es sich um die neueste VM in der Skalierungsgruppe handelt.

Für nicht zonale Virtual Machine Scale Sets-Instanzen wählt die Richtlinie den neuesten virtuellen Computer in der Skalierungsgruppe zum Löschen aus. Jeder „geschützte“ virtuelle Computer wird zum Löschen übersprungen.

Problembehandlung

  1. Fehler beim Aktivieren von scaleInPolicy: Wenn Ihnen mit der Fehlermeldung „Member 'scaleInPolicy' für Objekt vom Typ 'properties' nicht gefunden“ ein BadRequest-Fehler gemeldet wird, überprüfen Sie die für die Virtual Machine Scale Sets-Instanz verwendete API-Version. Für dieses Feature ist API-Version 2019-03-01 oder höher erforderlich.

  2. Falsche Auswahl von VMs für das horizontale Herunterskalieren: Beachten Sie die Beispiele in diesem Dokument. Wenn die VM-Skalierungsgruppe eine zonale Bereitstellung ist, wird die Richtlinie für horizontales Herunterskalieren zuerst auf die unausgeglichenen Zonen und dann, sobald die Zonen ausgeglichen sind, auf die Skalierungsgruppe angewendet. Wenn die Reihenfolge der Skalierung nicht mit den hier dokumentierten Beispielen konsistent ist, lösen Sie eine Abfrage mit dem Team für skalierungsbasierte VM-Skalierungsgruppen zur Problembehandlung aus.

Nächste Schritte

Informieren Sie sich über das Bereitstellen Ihrer Anwendung in Virtual Machine Scale Sets.