Konfigurieren einer VM-Skalierungsgruppe

Abgeschlossen

Bei der horizontalen Skalierung können Sie Ihrer VM-Skalierungsgruppe Instanzen hinzufügen. Im Versandunternehmensszenario stellt die Skalierung eine gute Methode dar, um der im Zeitverlauf schwankenden Anzahl von Anforderungen gerecht zu werden. Bei der Skalierung wird die Anzahl der VMs, auf denen die Webanwendung ausgeführt wird, an die sich ändernde Benutzerzahl angepasst. Auf diese Weise bleibt die Antwortzeit des Systems unabhängig von der aktuellen Auslastung gleichmäßig.

In dieser Lerneinheit erfahren Sie, wie Sie eine VM-Skalierungsgruppe skalieren. Sie können manuell skalieren, indem Sie die Anzahl der VM-Instanzen in der Skalierungsgruppe explizit festlegen, oder Sie können die automatische Skalierung konfigurieren, indem Sie Skalierungsregeln definieren, die die Zuordnung und Aufhebung der Zuordnung von VMs auslösen. Diese Skalierungsregeln bestimmen, wann eine Skalierung für das System vorgenommen wird, indem verschiedene Leistungsmetriken überwacht werden.

Manuelles Skalieren in Virtual Machine Scale Sets

Sie skalieren eine VM-Skalierungsgruppe manuell, indem Sie die Anzahl von Instanzen erhöhen oder verringern. Dies ist programmgesteuert oder im Azure-Portal möglich.

Im folgenden Code wird die Azure-Befehlszeilenschnittstelle verwendet, um die Anzahl von Instanzen in einer VM-Skalierungsgruppe zu ändern:

az vmss scale \
    --name MyVMScaleSet \
    --resource-group MyResourceGroup \
    --new-capacity 6

Automatisches Skalieren in Virtual Machine Scale Sets

Die manuelle Skalierung ist unter bestimmten Umständen nützlich. In vielen Situationen eignet sich die automatische Skalierung jedoch besser. Denn damit kann das System die Anzahl von Instanzen in einer Skalierungsgruppe steuern.

Folgendes kann Grundlage einer automatischen Skalierung darstellen:

  • Zeitplan: Verwenden Sie diesen Ansatz, wenn Sie wissen, dass die Arbeitsauslastung an einem bestimmten Datum oder in einem bestimmten Zeitraum erhöht sein wird.
  • Metriken: Passen Sie die Skalierung an, indem Sie Leistungsmetriken überwachen, die der Skalierungsgruppe zugeordnet sind. Wenn diese Metriken einen bestimmten Schwellenwert überschreiten, kann die Skalierungsgruppe automatisch neue VM-Instanzen starten. Wenn die Metriken aufzeigen, dass die zusätzlichen Ressourcen nicht mehr benötigt werden, kann die Skalierungsgruppe überschüssige Instanzen beenden.

Definieren von Bedingungen, Regeln und Grenzwerten für die automatische Skalierung

Die automatische Skalierung basiert auf einer Reihe von Skalierungsbedingungen, -regeln und -grenzwerten. Eine Skalierungsbedingung kombiniert die Zeit mit einer Reihe von Skalierungsregeln. Wenn die aktuelle Zeit in den Zeitraum fällt, der in der Skalierungsbedingung definiert wurde, werden die Skalierungsregeln der Bedingung ausgewertet. Die Ergebnisse dieser Auswertung bestimmen, ob Instanzen zur Skalierungsgruppe hinzugefügt oder daraus entfernt werden. Die Skalierungsbedingung definiert auch die Grenzwerte für die Skalierung für die maximale und minimale Anzahl von Instanzen.

Im Versandunternehmensszenario können Sie Skalierungsregeln hinzufügen, die die CPU-Nutzung in der Skalierungsgruppe überwachen. Wenn die CPU-Nutzung den Schwellenwert von 75 % überschreitet, kann die Anzahl der VM-Instanzen durch die Skalierungsregel erhöht werden. Mit einer zweiten Skalierungsregel können Sie darüber hinaus die CPU-Nutzung überwachen, die Anzahl der VM-Instanzen jedoch reduzieren, wenn die Nutzung unter 50 % fällt. Da die Anwendung global ausgerichtet ist, sollten diese Regeln rund um die Uhr anstatt nur zu bestimmten Zeiten aktiv sein.

Eine VM-Skalierungsgruppe kann viele Skalierungsbedingungen umfassen. Dabei wird jede übereinstimmende Skalierungsbedingung umgesetzt. Eine Skalierungsgruppe kann auch eine Standardskalierungsbedingung beinhalten, die verwendet wird, wenn keine andere Skalierungsbedingung mit der aktuellen Zeit und den Leistungsmetriken übereinstimmt. Die Standardskalierungsbedingung ist immer aktiv. Es enthält keine Skalierungsregeln und fungiert effektiv wie eine Null-Skalierungsbedingung ohne horizontale Skalierung. Sie können die Standardskalierungsbedingung ändern, sodass eine Standardinstanzenzahl festgelegt wird, oder Sie können zwei Skalierungsregeln hinzufügen, die hoch- und wieder herunterskalieren.

Verwenden einer zeitplanbasierten Autoskalierung

Bei der zeitplanbasierten Skalierung werden eine Start- und Endzeit sowie die Anzahl von Instanzen angegeben, die der Skalierungsgruppe hinzugefügt werden sollen. Der folgende Screenshot zeigt ein Beispiel im Azure-Portal. Die Anzahl von Instanzen wird jeden Montag und Mittwoch zwischen 6 Uhr und 18 Uhr auf 20 hochskaliert. Wenn keine anderen Skalierungsbedingungen festgelegt wurden, wird außerhalb dieser Zeiten die Standardskalierungsbedingung angewendet.

In diesem Fall skaliert die Standardskalierungsregel das System wieder herunter auf zwei Instanzen. Dieser Wert ist das Maximum in dieser Standardskalierungsbedingung.

Screenshot: Beispiel für eine zeitplanbasierte Skalierungsbedingung

Verwenden einer metrikbasierten automatischen Skalierung

Eine metrikbasierte Skalierungsregel gibt die zu überwachenden Ressourcen an, z. B. die CPU-Nutzung oder die Antwortzeit. Diese Skalierungsregel fügt der Skalierungsgruppe gemäß den Werten dieser Metriken Instanzen hinzu oder entfernt sie. Sie geben Grenzwerte für die Anzahl von Instanzen an, um zu verhindern, dass eine Skalierungsgruppe übermäßig hoch- oder herunterskaliert.

Im Beispielszenario möchten Sie die Instanzenanzahl um eins erhöhen, wenn die durchschnittliche CPU-Nutzung 75 % überschreitet. Außerdem sollten Sie den Vorgang für die horizontale Skalierung auf 50 Instanzen beschränken. Durch diese Beschränkung können Sie eine kostspielige, durch einen Angriff verursachte, unkontrollierte Skalierung vermeiden. Zudem sollten Sie horizontal herunterskalieren, wenn die durchschnittliche CPU-Nutzung unter 50 % fällt.

Die folgenden Metriken werden häufig zum Überwachen von VM-Skalierungsgruppen verwendet:

  • CPU in Prozent: Diese Metrik gibt die CPU-Nutzung über alle Instanzen hinweg an. Ein hoher Wert bedeutet, dass Instanzen CPU-gebunden sind. Dies kann zu Verzögerungen bei der Verarbeitung von Clientanforderungen führen.
  • Eingehende und ausgehende Datenflüsse: Diese Metriken geben die Geschwindigkeit der ein- und ausgehenden Datenflüsse einer VM in der Skalierungsgruppe an.
  • Datenträgerlesevorgänge/Sek. und Datenträgerschreibvorgänge/Sek.: Diese Metriken geben die Menge der E/A-Datenträgervorgänge in der gesamten Skalierungsgruppe an.
  • Warteschlangentiefe für Datenträger: Diese Metrik gibt an, wie viele E/A-Anforderungen nur an die Datenträger auf den VMs verarbeitet werden müssen.

Eine Skalierungsregel aggregiert die Werte einer Metrik für alle Instanzen. Sie aggregiert die Werte über einen Zeitraum, der auch als Aggregationsintervall bezeichnet wird. Jede Metrik verfügt über ein internes Aggregationsintervall. In der Regel beträgt dieser Zeitraum allerdings eine Minute. Der aggregierte Wert wird als Zeitaggregation bezeichnet. Für die Zeitaggregation stehen folgende Optionen zur Auswahl: Average (Durchschnitt), Minimum, Maximum, Total (Summe), Last (Letzte) und Count (Anzahl).

Ein Intervall von einer Minute ist zu kurz, um bestimmen zu können, ob Änderungen in der Metrik so lange anhalten, dass sich die Ausführung der automatischen Skalierung lohnt. Eine Skalierungsregel führt einen zweiten Schritt aus. In diesem wird der Wert der Zeitaggregation über einen längeren, benutzerdefinierten Zeitraum weiter aggregiert. Dieser Zeitraum wird als Dauer bezeichnet. Die Mindestdauer beträgt fünf Minuten. Wenn die Dauer beispielsweise auf zehn Minuten festgelegt wird, aggregiert die Skalierungsregel die zehn Werte, die für das Aggregationsintervall berechnet wurden.

Die Aggregationsberechnung für die Dauer kann sich von der Aggregationsberechnung für das Aggregationsintervall unterscheiden. Angenommen, für die Zeitaggregation ist die Option Average (Durchschnitt) festgelegt und die CPU in Prozent wird als Statistik für ein Aggregationsintervall von einer Minute erfasst. Für jede Minute wird die durchschnittliche prozentuale CPU-Nutzung für alle Instanzen während dieser Minute berechnet. Wenn für die Statistik des Aggregationsintervalls die Option Maximum und für die Regel eine Dauer von zehn Minuten festgelegt ist, bestimmt das Maximum der zehn Durchschnittswerte für die prozentuale CPU-Nutzung, ob der Schwellenwert für die Regel überschritten wurde.

Wenn eine Skalierungsregel erkennt, dass eine Metrik einen Schwellenwert überschritten hat, kann sie eine Skalierungsaktion ausführen. Als Skalierungsaktionen stehen eine horizontale Skalierung und ein horizontales Herunterskalieren zur Auswahl. Mit einer Aktion zur horizontalen Hochskalierung wird die Anzahl von Instanzen erhöht. Mit einer Aktion zum horizontalen Herunterskalieren wird die Anzahl der Instanzen reduziert.

Für eine Skalierungsaktion wird ein Operator verwendet (z. B. kleiner als, größer als oder gleich), um zu bestimmen, wie mit dem Schwellenwert umgegangen werden soll. Bei einer horizontalen Skalierung wird üblicherweise der größer als-Operator verwendet, um den Metrikwert mit dem Schwellenwert zu vergleichen. Beim horizontalen Herunterskalieren wird in der Regel der kleiner als-Operator eingesetzt, um den Metrikwert mit dem Schwellenwert zu vergleichen. Bei einer Skalierungsaktion wird die Anzahl der Instanzen außerdem auf einen bestimmten Wert festgelegt. Dieser wird dann nicht erhöht oder verringert.

Für eine Skalierungsaktion ist eine Abkühldauer in Minuten festgelegt. In diesem Zeitraum wird die Skalierungsregel nicht noch mal ausgelöst. Während der Abkühldauer kann sich das System zwischen Skalierungsereignissen stabilisieren. Das Starten bzw. Herunterfahren von Instanzen nimmt eine gewisse Zeit in Anspruch. Für Metriken, die in diesem Zeitraum erfasst werden, werden daher möglicherweise einige Minuten keine wesentlichen Änderungen angezeigt. Die Mindestabkühlphase beträgt fünf Minuten.

Für eine abnehmende Workload sollten Sie das horizontale Herunterskalieren planen. Es empfiehlt sich, Regelpaare für die Skalierung in einer einzelnen Bedingung zu definieren. Eine Skalierungsregel sollte festlegen, wie das System horizontal skaliert wird, sobald eine Metrik einen oberen Schwellenwert überschreitet. Die andere Regel muss definieren, wie das System wieder herunterskaliert wird, sobald die Metrik einen unteren Schwellenwert unterschreitet. Legen Sie nicht für beide Schwellenwerte denselben Wert fest. Andernfalls werden möglicherweise wechselseitiger Ereignisse ausgelöst, die zu einem ständigen Hoch- und Herunterskalieren führen.

In der folgenden Abbildung ist eine im Azure-Portal definierte Skalierungsregel dargestellt.

Screenshot: Metrikbasierte Skalierungsregel im Azure-Portal