Verwenden Sie die vorausschauende automatische Skalierung zum Aufskalieren vor Lastanforderungen in VM-Skalierungsgruppen

Die vorhersagbare Autoskalierung nutzt maschinelles Lernen, um Azure-VM-Skalierungsgruppen mit zyklischen Workloadmustern zu verwalten und zu skalieren. Sie prognostiziert die CPU-Gesamtlast für Ihre VM-Skalierungsgruppe basierend auf Ihren bisherigen CPU-Auslastungsmustern. Durch Beobachtung und Lernen aus der bisherigen Verwendung wird die Gesamt-CPU-Auslastung vorhergesagt. Dieser Prozess stellt sicher, dass die horizontale Skalierung erfolgt, um die Nachfrage zu befriedigen.

Die vorhersagbare Autoskalierung benötigt mindestens 7 Tage Vorgeschichte, um Vorhersagen treffen zu können. Die genauesten Ergebnisse ergeben sich aus den historischen Daten von 15 Tagen.

Die vorhersagbare Autoskalierung hält sich an die Skalierungsgrenzen, die Sie für Ihre VM-Skalierungsgruppe festgelegt haben. Wenn das System vorhersagt, dass die prozentuale CPU-Auslastung Ihrer VM-Skalierungsgruppe die Hochskalierungsgrenze überschreitet, werden neue Instanzen gemäß Ihren Spezifikationen hinzugefügt. Sie können auch konfigurieren, wie lange im Voraus neue Instanzen bereitgestellt werden sollen, bis zu 1 Stunde vor dem voraussichtlichen Auftreten der Arbeitsauslastung.

Mit der Prognose können Sie nur Ihre voraussichtliche CPU-Prognose einsehen, ohne die auf der Prognose basierende Skalierungsaktion auszulösen. Sie können dann die Vorhersage mit Ihren tatsächlichen Auslastungsmustern vergleichen, um Vertrauen in die Vorhersagemodelle zu schaffen, bevor Sie die Funktion für die Vorhersagbare Autoskalierung aktivieren.

Angebote für die vorausschauende automatische Skalierung

  • Die vorhersagbare Autoskalierung ist für Workloads vorgesehen, die zyklische CPU-Auslastungsmuster aufweisen.
  • Die Unterstützung ist nur für VM-Skalierungsgruppen verfügbar.
  • Die Metrik CPU in Prozent mit dem Aggregationstyp Durchschnitt ist die einzige Metrik, die derzeit unterstützt wird.
  • Die vorhersagbare Autoskalierung unterstützt nur die horizontale Skalierung. Konfigurieren Sie die standardmäßige Autoskalierung, um das horizontale Herunterskalieren zu verwalten.
  • Die vorhersagbare Autoskalierung ist nur für die kommerzielle Azure-Cloud verfügbar. Azure Government-Clouds werden momentan nicht unterstützt.

Aktivieren Sie die vorhersagbare Autoskalierung oder die Vorhersage nur über das Azure-Portal

  1. Gehen Sie zum Bildschirm der VM-Skalierungsgruppe, und wählen Sie Skalierung.

    Screenshot, der die Auswahl von Skalierung im linken Menü des Azure-Portals zeigt.

  2. Unter dem Abschnitt benutzerdefinierte Autoskalierung wird die Option Vorhersagbare Autoskalierung angezeigt.

    Screenshot, der die Auswahl der Optionen Benutzerdefinierte Autoskalierung und Vorhersagbare Autoskalierung im Azure-Portal zeigt.

    Mit der Dropdown-Auswahl können Sie:

    • Deaktivieren Sie die Vorhersagbare Autoskalierung. Deaktivieren der vorhersagbaren Autoskalierung, wenn Sie die Seite für die vorhersagbare Autoskalierung zum ersten Mal öffnen.
    • Aktivieren Sie den Modus „Nur Vorhersage“.
    • Aktivieren Sie die vorhersagbaren Autoskalierung.

    Hinweis

    Bevor Sie die vorhersagbare Autoskalierung oder den Modus „Nur Vorhersage“ aktivieren können, müssen Sie die Standardbedingungen für die reaktive Autoskalierung einrichten.

  3. Um den Modus „Nur Vorhersage“ zu aktivieren, wählen Sie ihn in der Dropdown-Liste aus. Definieren Sie einen Auslöser für die horizontale Skalierung, der auf dem Prozentsatz der CPU basiert. Klicken Sie dann auf Speichern. Die gleiche Vorgehensweise gilt für das Aktivieren der vorhersagbaren Autoskalierung. Zum Deaktivieren der vorhersagbaren Autoskalierung oder des Modus „Nur Vorhersage“ wählen Sie in der Dropdown-Liste die Option Deaktivieren.

    Screenshot, der die Aktivierung des Modus „Nur Vorhersage“ zeigt.

  4. Geben Sie, falls gewünscht, eine Vorstartzeit an, damit die Instanzen vollständig ausgeführt werden, bevor sie benötigt werden. Sie können Instanzen zwischen 5 und 60 Minuten vor der benötigten Vorhersagezeit starten.

    Screenshot, der die Einrichtung der Vorhersagbare Autoskalierung vor dem Start zeigt.

  5. Nachdem Sie die vorhersagbare Autoskalierung oder den Modus „Nur Vorhersage“ aktiviert und gespeichert haben, wählen Sie Vorhersagbare Diagramm.

    Screenshot, der die Auswahl der Menüoption Vorhersagediagramme zeigt.

  6. Es werden drei Diagramme angezeigt:

    Screenshot zeigt drei Diagramme für die Vorhersagbare Autoskalierung.

    • Das obere Diagramm zeigt einen überlagerten Vergleich zwischen dem tatsächlichen und dem vorhergesagten Gesamt-CPU-Anteil. Die Zeitspanne des angezeigten Diagramms erstreckt sich von den letzten 7 Tagen bis zu den nächsten 24 Stunden.
    • Das mittlere Diagramm zeigt die maximale Anzahl der Instanzen, die in den letzten 7 Tagen ausgeführt wurden.
    • Das untere Diagramm zeigt die aktuelle durchschnittliche CPU-Auslastung der letzten 7 Stunden an.

Aktivieren mit einer Azure Resource Manager-Vorlage

  1. Rufen Sie die Ressourcen-ID und die Ressourcengruppe Ihrer VM-Skalierungsgruppe ab. Beispiel: /subscriptions/e954e48d-abcd-abcd-abcd-3e0353cb45ae/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Aktualisieren Sie die Datei autoscale_only_parameters mit der Ressourcen-ID der VM-Skalierungsgruppe und allen Parametern für die Autoskalierung.

  3. Verwenden Sie einen PowerShell-Befehl, um die Vorlage bereitzustellen, welche die Einstellungen für die automatische Skalierung enthält. Beispiel:

PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json

Screenshot, der die PowerShell-Befehlsausgabe des vorangegangenen Befehls zeigt, wenn Sie Azure Resource Manager-Vorlagen für die Bereitstellung von vorhersagbaren Autoskalierung ausführen.

autoscale_only.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"type": "string"
		},
		"location": {
			"type": "string"
		},
		"minimumCapacity": {
			"type": "Int",
			"defaultValue": 2,
			"metadata": {
				"description": "The minimum capacity.  Autoscale engine will ensure the instance count is at least this value."
			}
		},
		"maximumCapacity": {
			"type": "Int",
			"defaultValue": 5,
			"metadata": {
				"description": "The maximum capacity.  Autoscale engine will ensure the instance count is not greater than this value."
			}
		},
		"defaultCapacity": {
			"type": "Int",
			"defaultValue": 3,
			"metadata": {
				"description": "The default capacity.  Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
			}
		},
		"metricThresholdToScaleOut": {
			"type": "Int",
			"defaultValue": 30,
			"metadata": {
				"description": "The metric upper threshold.  If the metric value is above this threshold then autoscale engine will initiate scale out action."
			}
		},
		"metricTimeWindowForScaleOut": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"metricThresholdToScaleIn": {
			"type": "Int",
			"defaultValue": 20,
			"metadata": {
				"description": "The metric lower threshold.  If the metric value is below this threshold then autoscale engine will initiate scale in action."
			}
		},
		"metricTimeWindowForScaleIn": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"changeCountScaleOut": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to increase when autoscale engine is initiating scale out action."
			}
		},
		"changeCountScaleIn": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
			}
		},
        "predictiveAutoscaleMode": {
            "type": "String",
            "defaultValue": "ForecastOnly",
            "metadata": {
                "description": "The predictive Autoscale mode."
            }
        }
	},
	"variables": {
	},
	"resources": [{
			"type": "Microsoft.Insights/autoscalesettings",
			"name": "cpuPredictiveAutoscale",
			"apiVersion": "2022-10-01",
			"location": "[parameters('location')]",
			"properties": {
				"profiles": [{
						"name": "DefaultAutoscaleProfile",
						"capacity": {
							"minimum": "[parameters('minimumCapacity')]",
							"maximum": "[parameters('maximumCapacity')]",
							"default": "[parameters('defaultCapacity')]"
						},
						"rules": [{
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
									"timeAggregation": "Average",
									"operator": "GreaterThan",
									"threshold": "[parameters('metricThresholdToScaleOut')]"
								},
								"scaleAction": {
									"direction": "Increase",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}, {
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
									"timeAggregation": "Average",
									"operator": "LessThan",
									"threshold": "[parameters('metricThresholdToScaleIn')]"
								},
								"scaleAction": {
									"direction": "Decrease",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}
						]
					}
				],
				"enabled": true,
				"targetResourceUri": "[parameters('targetVmssResourceId')]",
                "predictiveAutoscalePolicy": {
                    "scaleMode": "[parameters('predictiveAutoscaleMode')]"
                }
			}
		}
	],
	"outputs": {
        "targetVmssResourceId" : {
            "type" : "string",
            "value" : "[parameters('targetVmssResourceId')]"
        },
        "settingLocation" : {
            "type" : "string",
            "value" : "[parameters('location')]"
        },
        "predictiveAutoscaleMode" : {
            "type" : "string",
            "value" : "[parameters('predictiveAutoscaleMode')]"
        }
    }
}

autoscale_only_parameters.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"value": "/subscriptions/e954e48d-b252-b252-b252-3e0353cb45ae/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
		},
		"location": {
			"value": "East US"
		},
		"minimumCapacity": {
			"value": 1
		},
		"maximumCapacity": {
			"value": 4
		},
		"defaultCapacity": {
		  "value": 4
		},
		"metricThresholdToScaleOut": {
		  "value": 50
		},
		"metricTimeWindowForScaleOut": {
		  "value": "PT5M"
		},
		"metricThresholdToScaleIn": {
		  "value": 30
		},
		"metricTimeWindowForScaleIn": {
		  "value": "PT5M"
		},
		"changeCountScaleOut": {
		  "value": 1
		},
		"changeCountScaleIn": {
		  "value": 1
		},
		"predictiveAutoscaleMode": {
		  "value": "Enabled"
		}
	}
}

Weitere Informationen zu Azure Resource Manager-Vorlagen finden Sie in der Übersicht über Resource Manager-Vorlagen.

Häufig gestellte Fragen

In diesem Abschnitt werden häufig gestellte Fragen beantwortet.

Warum liegt der CPU-Prozentsatz in Vorhersagediagrammen über 100 Prozente?

Das Vorhersagediagramm zeigt die kumulative Last für alle Computer in der Skalierungsgruppe. Wenn Sie 5 VMs in einer Skalierungsgruppe haben, beträgt die maximale kumulative Last für alle VMs 500 %, d. h. das Fünffache der 100 % maximalen CPU-Last jeder VM.

Was geschieht im Laufe der Zeit, wenn Sie die vorhersagbare Autoskalierung für eine VM-Skalierungsgruppe aktivieren?

Die vorhersagbare Autoskalierung verwendet den Verlauf einer ausgeführten VM-Skalierungsgruppe. Wenn Ihre Skalierungsgruppe weniger als sieben Tage ausgeführt wurde, erhalten Sie eine Meldung, dass das Modell trainiert wird. Weitere Informationen finden Sie in der Meldung Keine Vorhersagedaten. Die Vorhersagen verbessern sich im Laufe der Zeit und erreichen 15 Tage nach der Erstellung der VM-Skalierungsgruppe die maximale Genauigkeit.

Wenn sich die Arbeitsbelastung ändert, aber periodisch bleibt, erkennt das Modell die Änderung und beginnt, die Prognose anzupassen. Die Vorhersage verbessert sich im Laufe der Zeit. Die maximale Genauigkeit wird 15 Tage nach der Änderung im Datenverkehrsmusters erreicht. Denken Sie daran, dass Ihre Standardregeln für die Autoskalierung weiterhin gelten. Wenn es zu einer neuen, unvorhergesehenen Zunahme des Datenverkehrs kommt, wird Ihre VM-Skalierungsgruppe weiterhin hochskaliert, um den Bedarf zu erfüllen.

Was ist, wenn das Modell für mich nicht gut funktioniert?

Die Modellierung funktioniert am besten bei Workloads, die periodisch auftreten. Wir empfehlen Ihnen, die Vorhersagen zunächst zu bewerten, indem Sie "Nur Vorhersage" aktivieren, wodurch die vorhergesagte CPU-Nutzung des Skalensets mit der tatsächlichen, beobachteten Nutzung überlagert wird. Nachdem Sie die Ergebnisse verglichen und ausgewertet haben, können Sie die Skalierung auf der Grundlage der vorhergesagten Metriken aktivieren, wenn die Modellvorhersagen für Ihr Szenario ausreichend gut sind.

Warum muss ich die Standard-Autoskalierung aktivieren, bevor ich die vorhersagbare Autoskalierung aktivieren kann?

Die standardmäßige Autoskalierung ist ein notwendiger Fallback, wenn das Vorhersagemodell für Ihr Szenario nicht gut funktioniert. Die Standard-Autoskalierung deckt unerwartete Lastspitzen ab, die nicht Teil Ihres typischen CPU-Auslastungsmusters sind. Sie bietet auch einen Fallback für den Fall, dass beim Abrufen der Vorhersagedaten ein Fehler auftritt.

Welche Regel tritt in Kraft, wenn sowohl Vorhersage- als auch Standardregeln für die Autoskalierung festgelegt sind?

Standardregeln für die Autoskalierung werden verwendet, wenn die CPU-Last unerwartet stark ansteigt oder beim Abrufen von Vorhersagedaten ein Fehler auftritt```

Wir verwenden den in den Standardregeln für die Autoskalierung festgelegten Schwellenwert, um zu verstehen, wann und um wie viele Instanzen Sie aufskalieren möchten. Wenn Sie möchten, dass Ihre VM-Skalierungsgruppe aufskaliert wird, wenn die CPU-Auslastung 70 % überschreitet, und tatsächliche oder vorhergesagte Daten zeigen, dass die CPU-Auslastung über 70 % liegt oder liegen wird, erfolgt eine Aufskalierung.

Fehler und Warnungen

Dieser Abschnitt behandelt häufige Fehler und Warnungen.

Standardmäßige Autoskalierung wurde nicht aktiviert

Sie erhalten die folgende Fehlermeldung:

Um die vorausschauende automatische Skalierung zu aktivieren, erstellen Sie eine Aufskalierungsregel basierend auf der Metrik ‚CPU-Prozentsatz. Klicken Sie hier, um zur Registerkarte ‚Konfigurieren‘ zu gehen, um eine Autoscale Regel festzulegen.

Screenshot, der die Fehlermeldung anzeigt, dass die vorhersagbare Autoskalierung auf der metrischen Prozentzahl der CPU der aktuellen Ressource basiert.

Diese Meldung bedeutet, dass Sie versucht haben, die vorhersagbare Autoskalierung zu aktivieren, bevor Sie die standardmäßige Autoskalierung aktiviert und für die Verwendung der Metrik CPU in Prozent mit dem Aggregationstyp Durchschnitt eingerichtet haben.

Keine Vorhersagedaten

Unter bestimmten Bedingungen werden keine Daten in den Vorhersagediagrammen angezeigt. Dieses Verhalten ist kein Fehler, sondern das beabsichtigte Verhalten.

Wenn die vorhersagbare Autoskalierung deaktiviert ist, erhalten Sie stattdessen eine Meldung, die mit „Keine Daten zum Anzeigen...“ beginnt. Sie erhalten dann Anweisungen, was Sie aktivieren müssen, damit Sie ein Vorhersagediagramm sehen können.

Screenshot mit der Meldung

Wenn Sie zum ersten Mal eine VM-Skalierungsgruppe erstellen und den Modus „Nur Vorhersage“ aktivieren, erhalten Sie die Meldung „Vorhersagedaten werden gerade trainiert...“ Außerdem wird eine Zeit angegeben, zu der Sie zurückkehren müssen, um das Diagramm zu sehen.

Screenshot, der die Meldung Vorhersagedaten werden trainiert zeigt.

Nächste Schritte

Weitere Informationen über Autoskalierung finden Sie in den folgenden Artikeln: