Identifizieren von Faktoren für die Autoskalierung
Wenn Sie die automatische Skalierung verwenden, können Sie Bedingungen dafür festlegen, wann eine Web-App horizontal skaliert und wieder herunterskaliert wird. Eine effektive automatische Skalierung stellt sicher, dass genügend Ressourcen verfügbar sind, um zu Spitzenzeiten viele Anforderungen verarbeiten zu können. Gleichzeitig behalten Sie bei sinkender Auslastung die Kontrolle über die Kosten.
Sie können die automatische Skalierung so konfigurieren, dass auf Grundlage der Ressourcennutzung und in Abhängigkeit mehrerer Faktoren horizontal skaliert oder herunterskaliert wird. Außerdem können Sie mit einem Zeitplan festlegen, wann die automatische Skalierung ausgeführt werden soll.
In dieser Lektion erfahren Sie, wie Sie Faktoren bestimmen, die zur automatischen Skalierung eines Diensts verwendet werden können.
Automatische Skalierung und App Service-Plan
Die automatische Skalierung ist ein Feature des App Service-Plans, der von der Web-App verwendet wird. Wenn die Web-App horizontal skaliert wird, startet Azure neue Instanzen der Hardware, die vom App Service-Plan für die App definiert ist.
Die Anzahl der Instanzen sind im App Service-Plan begrenzt, um eine unkontrollierte automatische Skalierung zu verhindern. Pläne in teureren Tarifen weisen ein höheres Limit auf. Die Anzahl der Instanzen, die durch die automatische Skalierung erstellt werden, kann nicht über diesem Grenzwert liegen.
Hinweis
Nicht alle Tarife des App Service-Plans unterstützen die automatische Skalierung.
Bedingungen für die automatische Skalierung
Mit selbst erstellten Bedingungen für die automatische Skalierung legen Sie fest, wie diese ausgeführt werden soll. Azure stellt zwei Optionen für die automatische Skalierung bereit:
- Skalierung auf Grundlage einer Metrik wie etwa der Länge der Datenträgerwarteschlange oder der Anzahl der HTTP-Anforderungen, deren Verarbeitung noch aussteht
- Skalierung auf eine bestimmte Anzahl von Instanzen in Übereinstimmung mit einem Zeitplan. Beispielsweise können Sie zu einer bestimmten Uhrzeit, an einem bestimmten Datum oder an einem Wochentag eine horizontale Skalierung vornehmen. Sie können auch ein Enddatum angeben, an dem das System wieder horizontal herunterskaliert wird.
Wenn Sie eine Skalierung auf eine bestimmte Anzahl von Instanzen vornehmen, können Sie ausschließlich eine horizontale Skalierung auf diese festgelegte Zahl durchführen. Wenn Sie stattdessen auf eine inkrementelle horizontale Skalierung angewiesen sind, können Sie die metrik- und zeitplanbasierte automatische Skalierung in einer Bedingung kombinieren. So können Sie beispielsweise festlegen, dass das System eine horizontale Skalierung ausschließlich zu bestimmten Tageszeiten und außerdem nur dann durchführt, wenn die Anzahl der HTTP-Anforderungen einen bestimmten Schwellenwert überschreitet.
Für unterschiedliche Zeitpläne und Metriken können Sie mehrere Regeln zur automatischen Skalierung erstellen. Azure führt für Ihren Dienst eine automatische Skalierung aus, wenn eine dieser Bedingungen zutrifft. In einem App Service-Plan ist außerdem eine Standardbedingung enthalten, die verwendet wird, wenn keine der anderen Bedingungen zutreffen. Diese Bedingung ist immer aktiv und nicht mit einem Zeitplan verknüpft.
Metriken für Regeln zur automatischen Skalierung
Wenn Sie die automatische Skalierung auf Grundlage einer Metrik einsetzen möchten, müssen Sie mindestens eine Regel definieren. In dieser wird eine Metrik festgelegt, die überwacht werden soll. Zusätzlich wird angegeben, wie die automatische Skalierung auf die Überschreitung eines Schwellenwerts für die Metrik reagieren soll. Sie können folgende Metriken für eine Web-App überwachen:
- CPU-Prozentsatz: Diese Metrik zeigt die CPU-Auslastung aller Instanzen an. Ein hoher Wert bedeutet, dass Instanzen CPU-gebunden sind. Dies kann zu Verzögerungen bei der Verarbeitung von Clientanforderungen führen.
- Arbeitsspeicherprozentsatz: Mit dieser Metrik wird die Speicherbelegung der Anwendung für alle Instanzen erfasst. Ein hoher Wert bedeutet, dass möglicherweise nicht mehr ausreichend freier Arbeitsspeicher verfügbar ist, was zu einem Ausfall einer oder mehrerer Instanzen führen könnte.
- Länge der Datenträgerwarteschlange: Diese Metrik ist ein Maß für die Anzahl der ausstehenden E/A-Anforderungen für alle Instanzen. Ein hoher Wert bedeutet, dass Datenträgerkonflikte auftreten können.
- Länge der HTTP-Warteschlange: Diese Metrik zeigt an, für wie viele Clientanforderungen eine Verarbeitung durch die Web-App noch aussteht. Bei einem hohen Wert schlagen Clientanforderungen möglicherweise fehl, und Fehlermeldungen des Typs HTTP 408 (Timeout) werden angezeigt.
- Eingehende Daten: Diese Metrik zeigt die Anzahl der Bytes an, die von allen Instanzen empfangen werden.
- Ausgehende Daten: Diese Metrik zeigt die Anzahl der Bytes an, die von allen Instanzen gesendet werden.
Sie können auch eine Skalierung vornehmen, die auf Metriken für andere Azure-Dienste basiert. Wenn beispielsweise die Web-App Anforderungen einer Azure Service Bus-Warteschlange verarbeitet, können Sie weitere Instanzen einer Web-App bereitstellen, falls die Anzahl der Warteschlangenelemente eine kritische Grenze überschreitet.
Metrikanalyse durch Regeln zur automatischen Skalierung
Für die automatische Skalierung werden über alle Instanzen hinweg Trends in Metrikwerten im zeitlichen Verlauf analysiert. Die Analyse ist ein mehrstufiger Prozess.
Im ersten Schritt aggregiert eine Regel für die automatische Skalierung die Werte einer Metrik für alle Instanzen über einen Zeitraum, der auch als Aggregationsintervall bezeichnet wird. Jede Metrik verfügt über ein eigenes internes Aggregationsintervall. In den meisten Fällen beträgt dieser Zeitraum allerdings eine Minute. Der aggregierte Wert wird als Zeitaggregation bezeichnet. Zur Auswahl stehen die Optionen Average (Durchschnitt), Minimum, Maximum, Sum (Summe), Last (Letzte) und Count (Anzahl).
Ein Intervall von einer Minute ist ein kurzer Zeitraum, um zu bestimmen, ob Änderungen in der Metrik so lange anhalten, dass sich die Ausführung der automatischen Skalierung lohnt. Eine Regel für die automatische Skalierung führt daher einen zweiten Schritt aus. In diesem wird ein weiterer Wert aggregiert, der von der Zeitaggregation über einen längeren, benutzerdefinierten Zeitraum berechnet wird, der als Dauer bekannt ist. Die Mindestdauer beträgt fünf Minuten. Wenn die Dauer beispielsweise auf zehn Minuten festgelegt wird, aggregiert die Regel für die automatische Skalierung die zehn Werte, die für das Aggregationsintervall berechnet wurden.
Die Aggregationsberechnung für die Dauer kann sich vom Aggregationsintervall unterscheiden. Wenn beispielsweise für die Zeitaggregation die Option Average (Durchschnitt) festgelegt ist und die CPU-Auslastung als Statistik für ein Aggregationsintervall von einer Minute erfasst wird, wird jede Minute die durchschnittliche prozentuale CPU-Auslastung für alle Instanzen berechnet. Wenn für die Statistik des Aggregationsintervalls die Option Maximum und für die Regel eine Dauer von zehn Minuten festgelegt ist, dient das Maximum der 10 Durchschnittswerte für die prozentuale CPU-Auslastung der Ermittlung, ob der Schwellenwert für die Regel überschritten wurde.
Aktionen für automatische Skalierungen
Wenn eine Regel für die automatische Skalierung erkennt, dass eine Metrik einen Schwellenwert überschritten hat, kann sie eine automatische Skalierung ausführen. Als Aktionen stehen eine horizontale Skalierung und ein horizontales Herunterskalieren zur Auswahl. Beim Aufskalieren (horizontale Skalierung) wird die Anzahl der Instanzen erhöht, beim Abskalieren wird sie verringert. Für eine automatische Skalierung wird ein Operator verwendet (z. B. kleiner als, größer als, gleich usw.), 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 automatischen Skalierung kann die Anzahl der Instanzen auch auf einen bestimmten Wert festgelegt werden. Dieser wird dann nicht erhöht oder verringert.
Für eine automatische Skalierung ist eine Abkühldauer in Minuten festgelegt. In diesem Intervall wird die Skalierungsregel nicht erneut ausgelöst. Dadurch kann sich das System zwischen zwei automatischen Skalierungen stabilisieren. Zur Erinnerung: Wenn Sie Instanzen starten oder herunterfahren, nimmt dieser Vorgang 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.
Erstellen von Regelpaaren für die automatische Skalierung
Für eine abnehmende Workload sollten Sie das horizontale Herunterskalieren planen. Es empfiehlt sich, Regelpaare für die automatische Skalierung in einer einzelnen Bedingung zu definieren. Eine Regel sollte festlegen, wie das System horizontal skaliert wird, sobald eine Metrik einen oberen Schwellenwert überschreitet. Die andere Regel sollte definieren, wie das System wieder herunterskaliert wird, sobald die Metrik einen unteren Schwellenwert unterschreitet.
Kombinieren von Regeln für die automatische Skalierung
Eine Bedingung für die automatische Skalierung kann mehrere Regeln enthalten, z. B. eine für die horizontale Skalierung und eine weitere für horizontales Herunterskalieren. Die Regeln in einer Bedingung müssen sich allerdings nicht direkt aufeinander beziehen. Sie können beispielsweise die folgenden vier Regeln in einer Bedingung definieren:
- Wenn die Länge der HTTP-Warteschlange zehn überschreitet, soll um den Wert eins horizontal hochskaliert werden.
- Wenn die CPU-Auslastung 70 % überschreitet, soll um den Wert eins horizontal skaliert werden.
- Wenn die Länge der HTTP-Warteschlange null beträgt, soll um den Wert eins herunterskaliert werden.
- Wenn die CPU-Auslastung 50 % unterschreitet, soll um den Wert eins horizontal herunterskaliert werden.
Eine automatische horizontale Skalierung wird vorgenommen, wenn genau eine der zugehörigen Regeln zutrifft, also die Länge der HTTP-Warteschlange größer als zehn ist oder die CPU-Auslastung 70 % überschreitet. Ein automatisches horizontales Herunterskalieren wird nur dann ausgeführt, wenn alle zugehörigen Regeln zutreffen, also die Länge der HTTP-Warteschlange null beträgt und die CPU-Auslastung 50 % unterschreitet. Wenn Sie horizontal herunterskalieren müssen, wenn nur eine zugehörige Regel zutrifft, müssen Sie die Regeln in unterschiedlichen Bedingungen für die automatische Skalierung definieren.