Ermitteln von Faktoren zur Implementierung der automatischen Skalierung

Abgeschlossen

Wenn Sie die automatische Skalierung verwenden, können Sie Bedingungen dafür festlegen, wann eine Web-App horizontal skaliert und wieder herunterskaliert werden sollte. Eine effektive automatische Skalierung stellt sicher, dass genügend Ressourcen verfügbar sind, um zu Spitzenzeiten große Mengen an Anforderungen verarbeiten zu können. Gleichzeitig sorgt sie dafür, dass die Gemeinkosten niedrig bleiben, wenn die Nachfrage sinkt.

Sie können die automatische Skalierung so konfigurieren, dass sie anhand einer Kombination von Faktoren, die auf der Ressourcennutzung beruhen, erkennt, wann horizontal skaliert oder abskaliert werden muss. Außerdem können Sie mit einem Zeitplan für die automatische Skalierung festlegen.

In dieser Lektion erfahren Sie, wie Sie Faktoren bestimmen, die zur automatischen Skalierung eines Webdiensts verwendet werden können.

Automatische Skalierung und App Service-Pläne

Wenn Sie eine Web-App erstellen, erstellen Sie auch einen App Service-Plan. In diesem wird das Betriebssystem (Windows oder Linux) definiert, das zum Hosten der Web-App verwendet wird. Im Tarif des Plans sind die verfügbare Hardware (Arbeitsspeicherkapazität, CPU-Verarbeitungskapazität und Datenträgerspeicher) festgelegt und andere Dienste wie regelmäßige Sicherungen für jede Instanz der Web-App definiert.

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 weitere Instanzen der Hardware, die vom App Service-Plan für die App definiert ist.

Um eine unkontrollierte automatische Skalierung zu verhindern, ist die Anzahl der Instanzen im App Service-Plan begrenzt. Pläne in teureren Tarifen haben höhere Instanzengrenzwerte. Die automatische Skalierung kann den Instanzengrenzwett des App Service-Plans nicht überschreiten. Die Standard-Reihe der App Service-Pläne unterstützt beispielsweise bis zu 10 Instanzen, wobei die Kosten für jede Instanz schätzungsweise 0,40 USD pro Stunde betragen. Die Premium-Serie der App Service-Pläne ermöglicht für jede Instanz bis zu 20 Instanzen mit geschätzten Kosten von 0,80 USD/Stunde. Die isolierten App Service-Pläne lassen bis zu 100 Instanzen zu geschätzten Kosten von 1,60 USD/Stunde pro Instanz zu.

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 Wochentag eine horizontale Skalierung veranlassen. Sie können auch eine Uhrzeit oder ein Datum angeben, zu der bzw. an dem das System herunterskaliert werden soll.

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. Um inkrementell horizontal zu skalieren, können Sie die metrik- und zeitplanbasierte automatische Skalierung in einer Bedingung für die automatische Skalierung kombinieren. Beispielsweise können Sie festlegen, dass das System eine horizontale Skalierung ausschließlich zu bestimmten Tageszeiten und 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 passt Ihren Dienst automatisch an, wenn eine der festgelegten Bedingungen zutrifft. Jeder App Service-Plan verfügt auch über eine Standardbedingung für die automatische Skalierung, die verwendet wird, wenn keine anderen Bedingungen zutreffen. Die Standardbedingung für die automatische Skalierung ist immer aktiv und verfügt über keinen Zeitplan.

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. In der folgenden Liste werden die Metriken beschrieben, die für eine Web-App überwacht werden können:

  • Der CPU-Prozentsatz gibt die CPU-Auslastung für alle Instanzen an. Ein hoher CPU-Prozentsatz bedeutet, dass Instanzen an die CPU gebunden sind. Dies kann zu Verzögerungen bei der Verarbeitung von Clientanforderungen führen.
  • Die Metrik Arbeitsspeicherprozentsatz: erfasst die Speicherbelegung der Anwendung für alle Instanzen. Ein hoher Arbeitsspeicherprozentsatz gibt an, dass wenig freier Arbeitsspeicher verfügbar ist, was dazu führen kann, dass mindestens eine Instanz fehlschlägt.
  • Die Datenträger-Warteschlangenlänge gibt die Anzahl der ausstehenden E/A-Anforderungen für alle Instanzen an. Ein hoher Wert für Datenträger-Warteschlangenlänge bedeutet, dass ein Datenträgerkonflikt auftreten kann.
  • Die Metrik Http-Warteschlangenlänge zeigt an, wie viele Clientanforderungen noch darauf warten, von der Web-App verarbeitet zu werden. Bei einem hohen Wert von Http-Warteschlangenlänge schlagen Clientanforderungen möglicherweise fehl, und Fehlermeldungen des Typs HTTP 408 (Timeout) werden angezeigt.
  • Die Metrik Eingehende Daten zeigt die Anzahl von Bytes an, die von allen Instanzen empfangen werden.
  • Die Metrik Ausgehende Daten gibt die Anzahl von 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 eine Web-App Anforderungen einer Azure Service Bus-Warteschlange verarbeitet, können Sie weitere Instanzen dieser App bereitstellen, falls die Anzahl der Elemente in der Azure Service Bus-Warteschlange eine kritische Länge überschreitet.

Metrikanalyse durch Regeln zur automatischen Skalierung

Für die automatische Skalierung werden über alle Instanzen hinweg Trends in Metrikwerten im zeitlichen Verlauf analysiert. Diese 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 jedoch eine Minute. Der aggregierte Wert wird als Zeitaggregation bezeichnet. Für die Zeitaggregation stehen folgende Optionen zur Auswahl: Durchschnitt, Minimum, Maximum, Summe, Letzte und Anzahl.

Eine Minute ist ein kurzer Zeitraum, in dem bestimmt wird, ob Änderungen in der Metrik lange genug anhalten, sodass sich eine automatische Skalierung lohnt. Eine Regel für die automatische Skalierung führt daher eine zweite Aggregation durch. In dieser wird ein weiterer Wert aggregiert, der von der Zeitaggregation über einen längeren, benutzerdefinierten Zeitraum berechnet wird, der als Dauer bezeichnet ist. Die Mindestdauer beträgt fünf Minuten. Wenn die Dauer beispielsweise auf 10 Minuten festgelegt wird, aggregiert die Regel für die automatische Skalierung die 10 Werte, die für das Aggregationsintervall berechnet wurden.

Die Aggregationsberechnung für die Dauer kann sich von der Aggregationsberechnung für das Aggregationsintervall unterscheiden. Wenn beispielsweise für die Zeitaggregation die Option Durchschnitt festgelegt ist und die CPU-Auslastung als Metrik für ein Aggregationsintervall von einer Minute erfasst wird, dann wird jede Minute die durchschnittliche prozentuale CPU-Auslastung für alle Instanzen berechnet.

Nehmen wir beispielsweise an, dass die Zeitaggregation auf Maximum und die Dauer der Regel auf 10 Minuten festgelegt werden. Bei dieser Beispielkonfiguration werden die maximal 10 Durchschnittswerte für die prozentuale CPU-Auslastung verwendet, um festzustellen, ob der Schwellenwert der Regel überschritten wurde.

Aktionen für automatische Skalierungen

Wenn eine Regel für die automatische Skalierung erkennt, dass der Schwellenwert einer Metrik überschritten wurde, kann sie eine automatische Skalierung veranlassen. 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. Während der Abkühldauer wird die Skalierungsregel nicht erneut ausgelöst. Die Abkühldauer ermöglicht es dem System, sich zwischen automatischen Skalierungsereignissen zu stabilisieren. Zur Erinnerung: Das Starten oder Herunterfahren von Instanzen nimmt Zeit in Anspruch. Daher werden für Metriken, die in diesem Zeitraum erfasst werden, möglicherweise einige Minuten lang 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 für die automatische Skalierung sollte festlegen, wie das System horizontal skaliert wird, sobald eine Metrik einen oberen Schwellenwert überschreitet. Eine andere Regel sollte dann definieren, wie das System wieder abskaliert 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 das Abskalieren. Die Regeln in einer Bedingung müssen sich allerdings nicht direkt aufeinander beziehen. Sie können beispielsweise die folgenden vier Regeln für die automatische Skalierung in einer einzigen Bedingung definieren:

  • Wenn die Länge der HTTP-Warteschlange 10 überschreitet, soll um eins horizontal skaliert werden.
  • Wenn die CPU-Auslastung 70 Prozent überschreitet, soll um eins horizontal skaliert werden.
  • Wenn die Länge der HTTP-Warteschlange gleich Null ist, soll um eins abskaliert werden.
  • Wenn die CPU-Auslastung unter 50 Prozent sinkt, soll um eins abskaliert 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 10 ist oder die CPU-Auslastung 70 % überschreitet. Es wird nur dann automatisch abskaliert, wenn alle zugehörigen Regeln zutreffen, also die Länge der HTTP-Warteschlange null beträgt und die CPU-Auslastung 50 % unterschreitet. Wenn Sie abskalieren müssen, wenn nur eine Abskalierungsregel zutrifft, müssen Sie die Regeln in unterschiedlichen Bedingungen für die automatische Skalierung definieren.