Automatische Skalierung in Azure App Service
Hinweis
Die automatische Skalierung ist für alle App-Typen verfügbar: Windows und Linux (als Code und Container bereitstellen). Die automatische Skalierung wird für den Bereitstellungsslotdatenverkehr nicht unterstützt.
Die automatische Skalierung ist eine neue Skalierungsoption, mit der Skalierungsentscheidungen für Ihre Web-Apps und App-Servicepläne automatisch behandelt werden. Sie unterscheidet sich von der bereits vorhandenen Azure-Autoskalierung, mit der Sie Skalierungsregeln basierend auf Zeitplänen und Ressourcen definieren können. Mit der automatischen Skalierung können Sie Skalierungseinstellungen anpassen, um die Leistung Ihrer App zu verbessern und Kaltstartprobleme zu vermeiden. Die Plattform wärmt Instanzen vor, die beim Aufskalieren als Puffer fungieren, sodass reibungslose Leistungsübergänge gewährleistet werden. Jede Instanz wird Ihnen pro Sekunde in Rechnung gestellt, einschließlich vorgewärmter Instanzen.
Ein Vergleich der Optionen für Auf- und Abskalieren in App Service:
Manuell | Automatische Skalierung | Autoskalierung | |
---|---|---|---|
Verfügbare Tarife | Basic und höher | Standard und höher | Tarife Premium V2 (P1V2, P2V2, P3V2) und Premium V3 (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3, P5MV3) |
Regelbasierte Skalierung | Nein | Ja | Nein, die Plattform verwaltet die Auf- und Abskalierung basierend auf HTTP-Datenverkehr. |
Zeitplanbasierte Skalierung | Nein | Ja | Nein |
Jederzeit bereite Instanzen | Nein, Ihre Web-App wird mit der Anzahl manuell skalierter Instanzen ausgeführt. | Nein, Ihre Web-App wird auf anderen Instanzen ausgeführt, die während des Aufskalierungsvorgangs verfügbar sind, basierend auf dem Schwellenwert, der für Regeln für die Autoskalierung definiert ist. | Ja (mindestens 1) |
Vorgewärmte Instanzen | Nein | Nein | Ja (standardmäßig 1) |
Maximaler Wert pro App | Nein | Nein | Ja |
So funktioniert die automatische Skalierung
Sie können die automatische Skalierung für einen App Service-Plan aktivieren und eine Reihe von Instanzen für jede der Web-Apps konfigurieren. Wenn Ihre Web-App HTTP-Datenverkehr empfängt, überwacht App Service die Auslastung und fügt Instanzen hinzu. Ressourcen können freigegeben werden, wenn mehrere Web-Apps innerhalb eines App Service-Plans gleichzeitig hochskaliert werden müssen.
Hier sind einige Szenarien, in denen Sie automatisch skalieren sollten:
- Sie möchten keine Regeln für die Autoskalierung basierend auf Ressourcenmetriken einrichten.
- Sie möchten, dass Ihre Web-Apps innerhalb desselben App Service-Plan unterschiedlich und unabhängig voneinander skaliert werden.
- Ihre Web-App ist mit einer Datenbank oder einem Legacysystem verbunden, das möglicherweise nicht so schnell skaliert wird wie die Web-App. Mithilfe der Autoskalierung können Sie die maximale Anzahl von Instanzen festlegen, auf die Ihr App Service-Plan skaliert werden kann. Diese Einstellung hilft der Web-App, das Back-End nicht zu überlasten.
Aktivieren der automatischen Skalierung
Der maximale Burst ist die höchste Anzahl von Instanzen, auf die Ihr App Service-Plan basierend auf eingehenden HTTP-Anforderungen erhöht werden kann. Für Premium v2- und v3-Pläne können Sie einen maximalen Burst von bis zu 30 Instanzen festlegen. Der maximale Burst muss gleich oder größer sein als die Anzahl von Workern, die für den App Service-Plan angegeben sind.
Um die automatische Skalierung zu aktivieren, navigieren Sie zum linken Menü der Web-App und wählen die Option Aufskalieren (App Service-Plan) aus. Wählen Sie Automatisch aus, aktualisieren Sie den Wert für den Maximalen Burst, und wählen Sie die Schaltfläche Speichern aus.
Festlegen der Mindestanzahl von Web-App-Instanzen
„Jederzeit bereite Instanzen“ ist eine Einstellung auf App-Ebene, über die die Mindestanzahl von Instanzen angegeben werden können. Übersteigt die Last das, was die jederzeit bereiten Instanzen bewältigen können, werden zusätzliche Instanzen hinzugefügt (bis zum angegebenen maximalen Burst für den App Service-Plan).
Um die Mindestanzahl von Web-App-Instanzen festzulegen, navigieren Sie zum linken Menü der Web-App, und wählen Sie Aufskalieren (App Service-Plan) aus. Aktualisieren Sie den Wert Jederzeit bereite Instanzen, und wählen Sie die Schaltfläche Speichern aus.
Festlegen der maximalen Anzahl von Web-App-Instanzen
Das Limit für maximale Skalierung legt die maximale Anzahl von Instanzen fest, auf die eine Web-App skaliert werden kann. Das Limit für maximale Skalierung hilft, wenn der Durchsatz einer Downstreamkomponente wie einer Datenbank begrenzt ist. Das Maximum pro App kann zwischen 1 und dem Wert für den maximalen Burst sein.
Um die Maximanzahl von Web-App-Instanzen festzulegen, navigieren Sie zum linken Menü der Web-App, und wählen Sie Aufskalieren (App Service-Plan) aus. Wählen Sie Grenzwert für Aufskalieren erzwingen aus, aktualisieren Sie das Maximale Skalierungslimit, und wählen Sie die Schaltfläche Speichern aus.
Aktualisieren von vorgewärmten Instanzen
Die Einstellung für vorgewärmte Instanzen stellt während der HTTP-Skalierungs- und Aktivierungsereignisse ständig betriebsbereite Instanzen als Puffer bereit. Vorgewärmte Instanzen setzen die Pufferung fort, bis der Grenzwert für maximale horizontale Skalierung erreicht wird. Die standardmäßige Anzahl vorgewärmter Instanzen ist 1, und dieser Wert sollte für die meisten Szenarien beibehalten werden.
Sie können die Einstellung für vorgewärmte Instanzen im Portal nicht ändern. Stattdessen müssen Sie die Azure CLI verwenden.
Deaktivieren der automatischen Skalierung
Um die automatische Skalierung zu deaktivieren, navigieren Sie zum linken Menü der Web-App und wählen die Option Aufskalieren (App Service-Plan) aus. Wählen Sie Manuell und dann die Schaltfläche Speichern aus.
Unterstützt die automatische Skalierung Azure-Funktions-Apps?
Achtung
Die automatische Skalierung ist deaktiviert, wenn Sich App Service-Web-Apps und Azure-Funktions-Apps im selben App Service-Plan befinden.
Nein, Sie können nur Azure App Service Web-Apps im App Service-Plan haben, wo Sie die automatische Skalierung aktivieren möchten. Für Functions wird stattdessen die Verwendung des Azure Functions Premium-Plans empfohlen.
Wie funktioniert die automatische Skalierung hinter den Kulissen?
Anwendungen, die automatisch skaliert werden, werden kontinuierlich überwacht, wobei die Bewertung des Workerzustands mindestens einmal alle paar Sekunden erfolgt. Wenn das System eine erhöhte Auslastung der Anwendung erkennt, werden Integritätsprüfungen häufiger. Im Falle einer Verschlechterung der Workerzustands und langsameren Anfragen werden zusätzliche Instanzen angefordert. Die Geschwindigkeit, mit der Instanzen hinzugefügt werden, variiert je nach Lademuster und Startzeit der individuellen Anwendung. Bei Anwendungen mit kurzen Startzeiten und zeitweiligen Ladespitzen wird möglicherweise alle paar Sekunden bis hin zu einer Minute ein virtueller Computer hinzugefügt.
Sobald die Last nachlässt, initiiert die Plattform eine Überprüfung auf potenzielles horizontales Herunterskalieren. Dieser Vorgang beginnt in der Regel ungefähr 5 bis 10 Minuten, nachdem die Last nicht mehr ansteigt. Während des horizontalen Herunterskalierens werden Instanzen alle paar Sekunden bis hin zu einer Minute mit einer maximalen Rate entfernt.
Wenn mehrere Webanwendungen innerhalb desselben App Service-Plans bereitgestellt werden, bemüht sich die Plattform darüber hinaus, Ressourcen auf der Grundlage der Last jeder einzelnen Webanwendung über verfügbare Instanzen hinweg zuzuweisen.
Wie werden vorgewärmte Instanzen in Rechnung gestellt?
Um zu verstehen, wie vorgewärmte Instanzen in Rechnung gestellt werden, sollten Sie dieses Szenario in Betracht ziehen: Angenommen, Ihre Web-App verfügt über fünf Instanzen, die immer bereit sind, zusammen mit einer vorgewärmten Instanz, die standardmäßig festgelegt ist.
Wenn Ihre Web-App im Leerlauf ist und keine HTTP-Anforderungen empfängt, wird sie mit den fünf immer einsatzbereiten Instanzen ausgeführt. Während dieser Zeit wird Ihnen keine vorgewärmte Instanz in Rechnung gestellt, da die jederzeit bereiten Instanzen nicht verwendet werden und keine vorgewärmte Instanz zugeordnet ist.
Sobald Ihre Web-App jedoch mit dem Empfang von HTTP-Anforderungen beginnt und die fünf immer einsatzbereiten Instanzen aktiv werden, wird eine vorgewärmte Instanz zugewiesen und die Abrechnung beginnt.
Wenn die Rate der HTTP-Anforderungen immer größer und der App Service über die ersten fünf Instanzen hinaus skaliert wird, beginnt sie mit der Verwendung der vorgewärmten Instanz. Dies bedeutet, dass bei sechs aktiven Instanzen sofort eine siebte Instanz bereitgestellt wird, um den vorgewärmten Puffer zu füllen.
Dieser Prozess aus Skalierung und Vorabaufwärmung wird fortgesetzt, bis die maximale Anzahl von Instanzen für die App erreicht ist. Es muss beachtet werden, dass keine Instanzen über die maximale Anzahl der Instanzen hinaus vorgewärmt oder aktiviert werden.
Warum hat AppServiceHTTPLogs Protokolleinträge ähnlich wie „/admin/host/ping“ mit einem Status von 404?
Die automatische Skalierung des App Service überprüft regelmäßig den /admin/host/ping
-Endpunkt zusammen mit anderen Integritätsprüfungsmechanismen auf der Plattform. Diese Prüfungen sind speziell implementierte Features. Gelegentlich können aufgrund vorhandener Plattformkonfigurationen 404-Fehler von diesen Pings zurückgegeben werden. Beachten Sie jedoch, dass sich diese 404-Fehler nicht auf die Verfügbarkeit oder Skalierungsleistung Ihrer App auswirken dürfen.
Wenn Ihre Web-App einen 5xx-Status zurückgibt, können diese Endpunktpings zu zeitweiligen Neustarts führen, obwohl dies ungewöhnlich ist. Wir implementieren derzeit Verbesserungen, um diese zeitweiligen Neustarts zu beheben. Stellen Sie bis dahin sicher, dass Ihre Web-App an diesem Endpunkt keinen 5xx-Status zurückgibt. Beachten Sie, dass diese Ping-Endpunkte nicht angepasst werden können.
Wie kann ich die Anzahl der skalierten Instanzen während des Ereignisses „Automatische Skalierung“ nachverfolgen?
Die Metrik AutomaticScalingInstanceCount meldet die Anzahl der virtuellen Computer, auf denen die App ausgeführt wird, einschließlich der vorgewärmten Instanz, wenn sie bereitgestellt wird. Diese Metrik kann auch verwendet werden, um die maximale Anzahl der Instanzen nachzuverfolgen, die Ihre Web-App während eines Ereignisses für die automatische Skalierung skaliert hat. Diese Metrik ist nur für Apps verfügbar, für die die automatische Skalierung aktiviert wurde.
Wie wirkt sich ARR Affinity auf die automatische Skalierung aus?
Azure App Service verwendet Cookies für das Routing von Anwendungsanforderungen, die als ARR Affinity bezeichnet werden. ARR Affinity-Cookies beschränken die Skalierung, da sie Anforderungen nur an Server senden, die mit dem Cookie verknüpft sind, und nicht an jede verfügbare Instanz. Für Apps, die den Store-Zustand speichern, empfiehlt es sich, eine Skalierung durchzuführen (Ressourcen auf einer einzelnen Instanz erhöhen). Für zustandslose Apps bietet das Skalieren (Hinzufügen weiterer Instanzen) mehr Flexibilität und Skalierbarkeit. ARR Affinity-Cookies sind standardmäßig in App Service aktiviert. Je nach Anwendungsanforderungen können Sie bei Verwendung der automatischen Skalierung ARR Affinity-Cookies deaktivieren.
Um ARR Affinity-Cookies zu deaktivieren: Wählen Sie Ihre App Service-App aus, und wählen Sie unter Einstellungen Konfiguration aus. Wählen Sie dann die Registerkarte Allgemeine Einstellungen aus. Wählen Sie unter ARR Affinity Aus aus, und wählen Sie dann die Schaltfläche Speichern aus.