Grundlegendes zu Einstellungen für die automatische Skalierung
Mithilfe der Einstellungen für die automatische Skalierung können Sie sicherstellen, dass Sie über die richtige Anzahl von ausgeführten Ressourcen verfügen, um die wechselnde Auslastung Ihrer Anwendung zu bewältigen. Sie können konfigurieren, dass Einstellungen für die automatische Skalierung basierend auf Metriken ausgelöst werden, mit denen die Auslastung oder die Leistung angezeigt werden, oder die Auslösung kann zu einem geplanten Datum bzw. einer geplanten Uhrzeit erfolgen.
In diesem Artikel werden die Einstellungen der Autoskalierung erläutert.
Schema der Einstellung für die automatische Skalierung
Das folgende Beispiel zeigt eine Einstellung der Autoskalierung mit den folgenden Attributen:
- Ein einzelnes Standardprofil
- Zwei Metrikregeln in diesem Profil: eine für das horizontale Hochskalieren und eine für das horizontale Herunterskalieren
- Die Regel für das horizontale Hochskalieren wird ausgelöst, wenn der Durchschnittswert für die Metrik „CPU in Prozent“ für die VM-Skalierungsgruppe die letzten zehn Minuten lang über 85 % gelegen hat.
- Die Regel für das horizontale Herunterskalieren wird ausgelöst, wenn der Durchschnittswert der VM-Skalierungsgruppe in der letzten Minute unter 60% gelegen hat.
Hinweis
Eine Einstellung kann mehrere Profile aufweisen. Weitere Informationen finden Sie im Abschnitt Profile. Für ein Profil können auch mehrere Regeln für das horizontale Hochskalieren bzw. horizontale Herunterskalieren definiert sein. Informationen dazu, wie sie ausgewertet werden, finden Sie im Abschnitt Auswertung.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "VMSS1-Autoscale-607",
"location": "eastus",
"properties": {
"name": "VMSS1-Autoscale-607",
"enabled": true,
"targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"profiles": [
{
"name": "Auto created default scale condition",
"capacity": {
"minimum": "1",
"maximum": "4",
"default": "1"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT10M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 85
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
},
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT10M",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": 60
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
]
}
}
In der folgenden Tabelle werden die Elemente im oben gezeigten JSON-Code der Autoskalierungseinstellung beschrieben.
`Section` | Elementname | Portalname | Beschreibung |
---|---|---|---|
Einstellung | ID | Die Ressourcen-ID der Einstellung für die automatische Skalierung. Einstellungen für die automatische Skalierung sind eine Azure Resource Manager-Ressource. | |
Einstellung | name | Der Name der Einstellung für die automatische Skalierung | |
Einstellung | location | Der Speicherort der Einstellung für die automatische Skalierung. Dieser Speicherort kann sich vom Speicherort der zu skalierenden Ressource unterscheiden. | |
properties | targetResourceUri | Die Ressourcen-ID der zu skalierenden Ressource. Sie können pro Ressource nur eine Einstellung für die automatische Skalierung verwenden. | |
properties | profiles | Skalierungsbedingung | Eine Einstellung für die automatische Skalierung besteht aus einem oder mehreren Profilen. Bei jeder Ausführung des Moduls für die automatische Skalierung wird ein Profil ausgeführt. Konfigurieren Sie bis zu 20 Profile pro Autoskalierungseinstellung. |
profiles | name | Der Name des Profils. Sie können einen beliebigen Namen wählen, der Ihnen die Identifizierung des Profils erleichtert. | |
profiles | capacity.maximum | Instanzgrenzwerte: Maximum | Die maximal zulässige Kapazität. Hiermit wird sichergestellt, dass die Autoskalierung bei Ausführung des Profils keine Skalierung über diesen Wert hinaus für Ihre Ressourcen durchführt. |
profiles | capacity.minimum | Instanzgrenzwerte: Minimum | Die zulässige Mindestkapazität. Hiermit wird sichergestellt, dass die Autoskalierung bei Ausführung des Profils keine Skalierung unterhalb dieses Werts für Ihre Ressourcen durchführt. |
profiles | capacity.default | Instanzgrenzwerte: Standardeinstellung | Falls ein Problem beim Lesen der Ressourcenmetriken vorliegt und die aktuelle Kapazität unterhalb der Standardkapazität liegt, wird von der automatischen Skalierung das horizontale Hochskalieren auf den Standardwert durchgeführt. Durch diese Aktion wird die Verfügbarkeit der Ressource sichergestellt. Wenn die aktuelle Kapazität bereits über der Standardkapazität liegt, wird durch die automatische Skalierung nicht abskaliert. |
profiles | rules | Regeln | Die Autoskalierung skaliert anhand der Regeln im Profil automatisch zwischen der maximalen und der Mindestkapazität. Definieren Sie bis zu 10 einzelne Regeln in einem Profil. Normalerweise werden Regeln als Paare definiert, eine zum Ermitteln des Zeitpunkts für das Aufskalieren und die andere zum Ermitteln des Zeitpunkts für das Abskalieren. |
rule | metricTrigger | Skalierungsregel | Definiert die Metrikbedingung der Regel. |
metricTrigger | metricName | Metrikname | Der Name der Metrik. |
metricTrigger | metricResourceUri | Die Ressourcen-ID der Ressource, von der die Metrik ausgegeben wird. In den meisten Fällen stimmt sie mit der zu skalierenden Ressource überein. In einigen Fällen kann es sich auch um eine andere Ressource handeln. Sie können beispielsweise eine VM-Skalierungsgruppe basierend auf der Anzahl von Nachrichten in einer Speicherwarteschlange skalieren. | |
metricTrigger | timeGrain | Aggregationsintervall (Minuten) | Die Dauer der Stichprobenentnahme aus den Metriken. Beispiel: Bei timeGrain = "PT1M" werden die Metriken jede Minute über die im Element „statistic“ angegebene Aggregationsmethode aggregiert. |
metricTrigger | statistic | Statistik zum Aggregationsintervall | Dies ist die Aggregationsmethode innerhalb des timeGrain-Zeitraums. Beispiel: statistic = "Average" und timeGrain = "PT1M" bedeutet, dass die Metriken jede Minute anhand des Durchschnitts aggregiert werden. Diese Eigenschaft gibt vor, wie die Stichprobennahme für die Metrik erfolgt. |
metricTrigger | timeWindow | Duration | Gibt an, wie weit auf Metriken zurückgegriffen werden soll. Beispiel: timeWindow = "PT10M" bedeutet, dass bei jeder Ausführung der Autoskalierung die Metriken der letzten zehn Minuten abgefragt werden. Dieses Zeitfenster ermöglicht, dass Ihre Metriken normalisiert werden, und eine Reaktion auf vorübergehende Spitzen wird vermieden. |
metricTrigger | timeAggregation | Zeitaggregation | Die Aggregationsmethode, die zum Aggregieren der Stichprobenmetriken verwendet wird. Beispiel: Mit timeAggregation = "Average" werden die Stichprobenmetriken anhand des Durchschnittswerts aggregiert. Im vorangegangenen Fall wird der Mittelwert für die zehn 1-Minuten-Stichproben ermittelt. |
rule | scaleAction | Aktion | Die Aktion, die nach dem Auslösen des metricTrigger-Elements der Regel durchgeführt wird. |
scaleAction | direction | Vorgang | „Increase“ (Erhöhen) für horizontales Hochskalieren oder „Decrease“ (Verringern) für horizontales Herunterskalieren. |
scaleAction | value | Anzahl von Instanzen | Der Wert für die Erhöhung bzw. Verringerung der Kapazität einer Ressource. |
scaleAction | cooldown | Abkühlen (Minuten) | Gibt an, wie lange nach einem Skalierungsvorgang gewartet werden soll, bevor erneut skaliert wird. Der Abkühlzeitraum wird nach einem Auf- oder Abskalierungsereignis wirksam. Beispiel: Bei cooldown = "PT10M" versucht die Autoskalierung zehn Minuten lang nicht, einen neuen Vorgang zu starten. Der Zweck des cooldown-Vorgangs besteht darin, dass sich die Metriken nach dem Hinzufügen bzw. Entfernen von Instanzen stabilisieren können. |
Profile für die automatische Skalierung
Definieren Sie bis zu 20 verschiedene Profile pro Autoskalierungseinstellung.
Es gibt drei Arten von Profilen für die automatische Skalierung:
Standardprofil: Verwenden Sie das Standardprofil, wenn Sie Ihre Ressource nicht basierend auf einem bestimmten Datum, einer bestimmten Uhrzeit oder einem bestimmten Wochentag skalieren müssen. Es wird verwendet, wenn keine anderen Profile für das aktuelle Datum und die aktuelle Uhrzeit vorhanden sind. Sie können nur ein Standardprofil besitzen.
Profil für ein festgelegtes Datum: Das Profil für ein festgelegtes Datum ist für ein einziges Datum und eine einzige Uhrzeit relevant. Verwenden Sie das Profil für ein festgelegtes Datum, um Skalierungsregeln für ein bestimmtes Ereignis festzulegen. Das Profil wird nur einmal an dem Datum und zu der Uhrzeit des Ereignisses ausgeführt. Für alle anderen Zeiten verwendet die automatische Skalierung das Standardprofil.
... "profiles": [ { "name": " regularProfile", "capacity": { ... }, "rules": [ ... ] }, { "name": "eventProfile", "capacity": { ... }, "rules": [ ... ], "fixedDate": { "timeZone": "Pacific Standard Time", "start": "2017-12-26T00:00:00", "end": "2017-12-26T23:59:00" } } ]
Wiederholungsprofil: Ein Wiederholungsprofil wird für einen Tag oder eine Reihe von Wochentagen verwendet. Das Schema für ein Wiederholungsprofil enthält kein Enddatum. Das Enddatum und die Uhrzeit für ein Wiederholungsprofil werden durch die Startzeit des folgenden Profils festgelegt. Bei Verwendung des Portals zum Konfigurieren von Wiederholungsprofilen wird das Standardprofil automatisch so aktualisiert, dass es zu der Endzeit gestartet wird, die Sie für das Wiederholungsprofil angeben. Weitere Informationen zum Konfigurieren mehrerer Profile finden Sie unter Autoskalierung mit mehreren Profilen.
Das hier gezeigte partielle Schemabeispiel zeigt ein Wiederholungsprofil. Es beginnt samstags und sonntags um 06:00 Uhr und endet um 19:00 Uhr. Das Standardprofil wurde so geändert, dass es samstags und sonntags um 19:00 Uhr beginnt.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ { "type": "Microsoft.Insights/ autoscaleSettings", "apiVersion": "2015-04-01", "name": "VMSS1-Autoscale-607", "location": "eastus", "properties": { "name": "VMSS1-Autoscale-607", "enabled": true, "targetResourceUri": "/subscriptions/ abc123456-987-f6e5-d43c-9a8d8e7f6541/ resourceGroups/rg-vmss1/providers/ Microsoft.Compute/ virtualMachineScaleSets/VMSS1", "profiles": [ { "name": "Weekend profile", "capacity": { ... }, "rules": [ ... ], "recurrence": { "frequency": "Week", "schedule": { "timeZone": "E. Europe Standard Time", "days": [ "Saturday", "Sunday" ], "hours": [ 6 ], "minutes": [ 0 ] } } }, { "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}", "capacity": { ... }, "recurrence": { "frequency": "Week", "schedule": { "timeZone": "E. Europe Standard Time", "days": [ "Saturday", "Sunday" ], "hours": [ 19 ], "minutes": [ 0 ] } }, "rules": [ ... ] } ], "notifications": [], "targetResourceLocation": "eastus" } } ] }
Auswertung für die automatische Skalierung
Einstellungen für die automatische Skalierung können mehrere Profile aufweisen. Für jedes Profil können mehrere Regeln konfiguriert werden. Jede Ausführung des Auftrags für die automatische Skalierung beginnt mit der Auswahl des anzuwendenden Profils für diese Zeit. Anschließend wertet die Funktion für die automatische Skalierung die minimalen und maximalen Werte und alle Metrikregeln im Profil aus, um zu entscheiden, ob eine Skalierung erforderlich ist. Der Auftrag für die automatische Skalierung wird je nach Ressourcentyp alle 30 bis 60 Sekunden ausgeführt. Nach einer Skalierungsaktion wartet der Autoskalierungsauftrag den Abkühlzeitraum ab, bevor er erneut skaliert. Der Abkühlzeitraum gilt sowohl für Auf- als auch für Abskalierungsaktionen.
Welches Profil wird von der automatischen Skalierung verwendet?
Bei jeder Ausführung des Autoskalierungsdiensts werden die Profile in der folgenden Reihenfolge ausgewertet:
- Profile für ein festgelegtes Datum
- Wiederkehrende Profile
- Standardprofil
Das erste geeignete Profil, das gefunden wird, wird verwendet.
Wie werden von der automatischen Skalierung mehrere Regeln ausgewertet?
Nachdem die Autoskalierung ermittelt hat, welches Profil ausgeführt werden soll, werden zuerst die im Profil enthaltenen Regeln für horizontales Hochskalieren ausgewertet (dies sind Regeln mit direction = "Increase"). Wenn mindestens eine Regel für das horizontale Hochskalieren ausgelöst wird, berechnet die automatische Skalierung die neue Kapazität die in diesen Regeln jeweils per scaleAction bestimmt wird. Wenn mehr als eine Regel für das horizontale Hochskalieren ausgelöst wird, wird bei der automatischen Skalierung auf die höchste angegebene Kapazität skaliert, um die Dienstverfügbarkeit sicherzustellen.
Angenommen, es gibt zwei Regeln: Regel 1 gibt ein horizontales Hochskalieren um drei Instanzen an, und Regel 2 gibt ein horizontales Hochskalieren um fünf Instanzen an. Wenn beide Regeln ausgelöst werden, wird bei der Autoskalierung um fünf Instanzen horizontal hochskaliert. Wenn eine Regel das horizontale Hochskalieren um drei Instanzen und eine andere Regel das horizontale Hochskalieren um 15 % angibt, wird die höhere Anzahl der Instanzen verwendet.
Falls keine Regeln für horizontales Hochskalieren ausgelöst werden, wertet die Autoskalierung alle Regeln für das horizontale Herunterskalieren aus (Regeln mit direction = "Decrease"). Bei der Autoskalierung wird nur horizontal herunterskaliert, wenn alle Regeln für horizontales Herunterskalieren ausgelöst werden.
Bei der automatischen Skalierung wird die neue Kapazität berechnet, die mit scaleAction für die einzelnen Regeln ermittelt wird. Um die Dienstverfügbarkeit sicherzustellen, wird bei der automatischen Skalierung möglichst wenig herunterskaliert, um die angegebene maximale Kapazität zu erreichen. Angenommen, es gibt zwei Regeln für das horizontale Herunterskalieren: eine, die die Kapazität um 50 % verringert, und eine, die die Kapazität um drei Instanzen verringert. Wenn die erste Regel zu fünf Instanzen und die zweite Regel zu sieben Instanzen führt, wird bei der Autoskalierung auf sieben Instanzen herunterskaliert.
Jedes Mal, wenn die automatische Skalierung das Ergebnis einer Aktion zum horizontalen Herunterskalieren berechnet, wird ausgewertet, ob diese Aktion eine Aktion für das horizontale Hochskalieren auslösen würde. Das Szenario, in dem eine Skalierungsaktion die entgegengesetzte Skalierungsaktion auslöst, wird als Fluktuation bezeichnet. Die Autoskalierung kann eine Aktion zum horizontalen Herunterskalieren zurückstellen, um Fluktuation zu vermeiden, oder sie kann um eine geringere Zahl skalieren als in der Regel angegeben. Weitere Informationen zur Fluktuation finden Sie unter Fluktuation bei der Autoskalierung.
Nächste Schritte
Weitere Informationen zur Autoskalierung:
- Übersicht über die automatische Skalierung
- Allgemeine Metriken für die automatische Skalierung in Azure Monitor
- Autoskalierung mit mehreren Profilen
- Fluktuation bei der Autoskalierung
- Verwenden von automatischen Skalierungsvorgängen zum Senden von E-Mail- und Webhook-Warnbenachrichtigungen
- REST-API für die automatische Skalierung