Zuverlässigkeit in Azure App Service
In diesem Artikel wird die Zuverlässigkeitsunterstützung in Azure App Service beschrieben, wobei sowohl intraregionale Resilienz mittels Verfügbarkeitszonen als auch Bereitstellungen in mehreren Regionen behandelt werden.
Resilienz ist eine geteilte Verantwortung zwischen Ihnen und Microsoft, also behandelt dieser Artikel auch Möglichkeiten zum Erstellen einer resilienten Lösung, die Ihren Anforderungen entspricht.
Azure App Service ist ein HTTP-basierter Dienst zum Hosten von Webanwendungen, REST-APIs und mobilen Back-Ends. App Service ergänzt Ihre Anwendung um die Leistungsfähigkeit von Microsoft Azure, einschließlich Funktionen für Sicherheit, Lastenausgleich, automatische Skalierung und automatisierte Verwaltung. Wie Azure App Service die Zuverlässigkeit und Resilienz Ihrer Anwendungsworkload verbessern kann, erfahren Sie unter Gründe für die Verwendung von App Service.
Wenn Sie Azure App Service bereitstellen, können Sie mehrere Instanzen eines App Service-Plans erstellen, der die Computeworker darstellt, die Ihren Anwendungscode ausführen. Obwohl die Plattform versucht, die Instanzen über verschiedene Fehlerdomänen hinweg bereitzustellen, werden die Instanzen nicht automatisch über Verfügbarkeitszonen verteilt.
Bereitstellungsempfehlungen für die Produktion
Für Produktionsbereitstellungen sollten Sie:
- Verwenden Sie Premium v3 App Service-Pläne.
- Aktivieren Sie Zonenredundanz, was erfordert, dass Ihr App Service-Plan mindestens drei Instanzen verwendet.
- Aktivieren Sie Zonenredundanz, was erfordert, dass Ihr App Service-Plan mindestens drei Instanzen verwendet.
Vorübergehende Fehler
Vorübergehende Fehler sind kurze, zeitweilige Fehler in Komponenten. Sie treten häufig in einer verteilten Umgebung wie der Cloud auf und sind ein normaler Bestandteil von Vorgängen. Sie korrigieren sich nach kurzer Zeit von selbst. Es ist wichtig, dass Ihre Anwendungen vorübergehende Fehler behandeln. Dies geschieht in der Regel durch Wiederholen betroffener Anforderungen.
Alle in der Cloud gehosteten Anwendungen sollten bei der Kommunikation mit in der Cloud gehosteten APIs, Datenbanken und anderen Komponenten den Azure-Richtlinien zur Behandlung vorübergehender Fehler folgen. Weitere Informationen zum Umgang mit vorübergehenden Störungen finden Sie unter Empfehlungen für den Umgang mit vorübergehenden Störungen.
Obwohl die von Microsoft bereitgestellten SDKs in der Regel vorübergehende Fehler behandeln, müssen Sie, da Sie Ihre eigenen Anwendungen auf Azure App Service hosten, überlegen, wie Sie vorübergehende Fehler vermeiden können, indem Sie Folgendes sicherstellen:
Bereitstellen mehrerer Instanzen Ihres Plans. Azure App Service führt automatische Updates und andere Formen der Wartung für Instanzen Ihres Plans durch. Wenn eine Instanz fehlerhaft wird, kann der Dienst diese Instanz automatisch durch eine neue fehlerfreie Instanz ersetzen. Während des Ersetzungsprozesses kann es zu einer kurzen Zeitspanne kommen, in der die vorherige Instanz nicht verfügbar ist und die neue Instanz noch nicht bereit ist, Datenverkehr zu verarbeiten. Sie können die Auswirkungen dieses Verhaltens abmildern, indem Sie mehrere Instanzen Ihres App Service-Plans bereitstellen.
Verwenden Sie Bereitstellungsslots. Bereitstellungsslots für Azure App Service ermöglichen Bereitstellungen ohne Ausfallzeiten Ihrer Anwendungen. Verwenden Sie Bereitstellungsslots, um die Auswirkungen von Bereitstellungen und Konfigurationsänderungen auf Ihre benutzenden Personen zu minimieren. Durch die Verwendung von Bereitstellungsslots wird auch die Wahrscheinlichkeit verringert, dass Ihre Anwendung neu gestartet wird, was zu einem vorübergehenden Fehler führt.
Vermeiden Sie zentrales Hoch- oder Herunterskalieren. Wählen Sie stattdessen eine Stufe und Instanzgröße, die Ihren Leistungsanforderungen bei typischer Last entspricht. Skalieren Sie Instanzen nur dann, wenn sich das Verkehrsaufkommen ändert. Beachten Sie, dass durch zentrales Hoch- oder Herunterskalieren ein Neustart der Anwendung ausgelöst werden kann.
Unterstützung für Verfügbarkeitszonen
Azure App Service kann zonenredundant konfiguriert werden, sodass Ihre Ressourcen über mehrere Verfügbarkeitszonen verteilt werden. Die Verteilung über mehrere Zonen hilft Ihren Produktionsarbeitslasten, Resilienz und Zuverlässigkeit zu erzielen. Unterstützung für Verfügbarkeitszonen ist eine Eigenschaft des App Service-Plans.
Die Verteilung der Instanzen bei einer zonenredundanten Bereitstellung wird innerhalb der folgenden Regeln festgelegt, auch wenn die App auf-und abskaliert:
- Die Mindestanzahl der App Service Plan-Instanzen ist drei.
- Wenn Sie eine Kapazität größer als drei angeben und die Anzahl der Instanzen durch drei teilbar ist, werden die Instanzen gleichmäßig verteilt.
- Andere Anzahlen von Instanzen über 3*N hinaus werden auf die verbleibenden ein oder zwei Zonen verteilt.
Wenn die App Service-Plattform einem zonenredundanten App Service-Plan Instanzen zuordnet, verwendet sie einen „Best Effort“-Zonenausgleich, der von den zugrunde liegenden Azure-VM-Skalierungsgruppen angeboten wird. Ein App Service-Plan ist „ausgeglichen“, wenn jede Zone entweder über dieselbe Anzahl von VMs oder +/-1 VM in allen anderen Zonen verfügt, die vom App Service-Plan verwendet werden.
Bei App Service-Plänen, die nicht als zonenredundant konfiguriert sind, sind VM-Instanzen nicht widerstandsfähig gegen Verfügbarkeitszonenfehler. Sie können während eines Stromausfalls in jeder Zone in dieser Region von einem Stromausfall betroffen sein.
Anforderungen
- Sie müssen die Plantypen Premium v2 oder Premium v3 verwenden.
- Verfügbarkeitszonen werden nur im neueren Teil von App Service unterstützt. Selbst wenn Sie eine der unterstützten Regionen verwenden, erhalten Sie eine Fehlermeldung, wenn Verfügbarkeitszonen für Ihre Ressourcengruppe nicht unterstützt werden. Um sicherzustellen, dass Ihre Workloads bei einem Stempel eingehen, der Verfügbarkeitszonen unterstützt, müssen Sie möglicherweise eine neue Ressourcengruppe, einen App Service-Plan und eine App Service-Instanz erstellen.
- Sie müssen mindestens drei Instanzen Ihres Plans bereitstellen.
Unterstützte Regionen
Zonenredundante App Service-Pläne können in jeder Region bereitgestellt werden, die Verfügbarkeitszonen unterstützt.
Informationen dazu, welche Regionen Verfügbarkeitszonen für App Service-Umgebung v3 unterstützen, finden Sie unter Regionen.
Überlegungen
In einem zonenredundanten App Service-Plan bereitgestellte Anwendungen werden weiterhin ausgeführt und verarbeiten Datenverkehr, selbst wenn mehrere Zonen in der Region ausfallen. Es ist jedoch möglich, dass Verhalten außerhalb der Laufzeit, einschließlich Skalieren von App Service-Plänen, Anwendungserstellung, -konfiguration und -veröffentlichung, weiterhin von einem Ausfall in den Verfügbarkeitszonen betroffen sind. Zonenredundanz für App Service-Pläne stellt nur eine kontinuierliche Uptime für bereitgestellte Anwendungen sicher.
Kosten
Für die Verwendung von App Service Premium v2- oder Premium v3-Plänen gibt es keine zusätzlichen Kosten für die Aktivierung von Verfügbarkeitszonen, solange Sie drei oder mehr Instanzen in Ihrem App Service-Plan haben. Die Gebühren werden auf Grundlage Ihrer App Service-Plan-SKU, der von Ihnen angegebenen Kapazität und aller Instanzen berechnet, auf die Sie basierend auf Ihren Kriterien für die Autoskalierung skalieren. Wenn Sie Verfügbarkeitszonen aktivieren, aber eine kleinere Kapazität als drei angeben, erzwingt die Plattform eine Mindestanzahl von drei Instanzen und berechnet Ihnen diese drei Instanzen.
App Service Environment v3 verfügt über ein bestimmtes Preismodell für Zonenredundanz. Preisinformationen für App Service-Umgebung v3 finden Sie unter Preise.
Konfigurieren der Unterstützung von Verfügbarkeitszonen
Um Zonenredundanz zu verwenden, wechseln Sie zu einem unterstützten App Service-Plantyp.
Wenn Sie einen neuen zonenredundanten Azure App Service-Plan bereitstellen möchten, wählen Sie die Option Zonenredundant aus, wenn Sie den Plan bereitstellen.
Informationen zum Bereitstellen einer neuen zonenredundanten Azure App Service-Umgebung finden Sie unter Erstellen einer App Service-Umgebung.
Zonenredundanz kann nur beim Erstellen eines neuen App Service-Plans konfiguriert werden. Wenn Sie über einen vorhandenen App Service-Plan verfügen, der nicht zonenredundant ist, müssen Sie ihn durch einen neuen zonenredundanten Plan ersetzen. Sie können einen vorhandenen App Service-Plan nicht so konvertieren, dass Verfügbarkeitszonen verwendet werden. Ebenso können Sie Zonenredundanz in einem vorhandenen App Service-Plan nicht deaktivieren.
Kapazitätsplanung und -verwaltung
Um sich auf ausfallende Verfügbarkeitszonen vorzubereiten, sollten Sie die Kapazität des Diensts überdimensionieren, um sicherzustellen, dass die Lösung einen 1/3-Kapazitätsverlust tolerieren kann und weiterhin ohne Leistungseinbußen bei zonenweiten Ausfällen funktioniert. Da die Plattform VMs auf drei Zonen verteilt und Sie mindestens den Ausfall einer Zone abfangen können müssen, multiplizieren Sie die Instanzenanzahl des Spitzenworkloads mit dem Faktor „Zonen/(Zonen-1)“ oder „3/2“. Wenn Ihre typische Spitzenworkload beispielsweise vier Instanzen erfordert, sollten Sie sechs Instanzen bereitstellen: (2/3 * 6 Instanzen) = 4 Instanzen.
Routing von Datenverkehr zwischen Zonen
Während normaler Vorgänge wird der Datenverkehr zwischen allen verfügbaren App Service-Planinstanzen über alle Verfügbarkeitszonen geleitet.
Zonenausfall
Erkennung und Reaktion: Die App Service-Plattform ist dafür verantwortlich, einen Fehler in einer Verfügbarkeitszone zu erkennen und darauf zu reagieren. Sie müssen keine Maßnahmen ergreifen, um ein Zonenfailover zu initiieren.
Aktive Anforderungen: Wenn eine Verfügbarkeitszone nicht verfügbar ist, werden alle laufenden Anfragen, die mit einer App Service-Planinstanz in der fehlerhaften Verfügbarkeitszone verbunden sind, beendet und müssen erneut versucht werden.
Datenverkehrsumleitung: Wenn eine Zone nicht verfügbar ist, erkennt Azure App Service die verlorenen Instanzen aus dieser Zone. Es versucht automatisch, neue Ersetzungsinstanzen zu finden. Anschließend verteilt sie den Datenverkehr nach Bedarf über die neuen Instanzen.
Wenn Sie Autoskalierung konfiguriert haben und diese feststellt, dass weitere Instanzen benötigt werden, gibt die Autoskalierung auch eine Anforderung an App Service aus, um weitere Instanzen hinzuzufügen.
Hinweis
Das Verhalten der Autoskalierung ist vom Verhalten der App Service-Plattform unabhängig. Ihre Angabe zur Anzahl der Instanzen für die automatische Skalierung muss kein Vielfaches von drei sein.
Wichtig
Es gibt keine Garantie dafür, dass Anforderungen nach zusätzlichen Instanzen in einem Szenario mit Zonenausfall erfolgreich sind. Die Wiederbesetzung verlorener Instanzen erfolgt nach bestem Bemühen. Wenn Sie eine garantierte Kapazität benötigen, wenn eine Verfügbarkeitszone verloren geht, sollten Sie Ihre App Service-Pläne so erstellen und konfigurieren, dass sie den Verlust einer Zone berücksichtigen. Dazu können Sie die Kapazität Ihres App Service-Plans überbereitstellen.
Failback
Wenn sich die Verfügbarkeitszone erholt, erstellt Azure App Service automatisch Instanzen in der wiederhergestellten Verfügbarkeitszone, entfernt alle temporären Instanzen, die in den anderen Verfügbarkeitszonen erstellt wurden, und leitet den Datenverkehr wie gewohnt zwischen Ihren Instanzen weiter.
Testen auf Zonenfehler
Die Azure App Service-Plattform verwaltet Datenverkehrsrouting, Failover und Failback für zonenredundante App Service-Pläne. Da dieses Feature vollständig verwaltet ist, müssen Sie keine Maßnahmen ergreifen oder den Fehlerprozess für Verfügbarkeitszonen überprüfen.
Unterstützung für mehrere Regionen
Azure App Service ist ein Einzelregionendienst. Wenn die Region nicht verfügbar ist, ist Ihre Anwendung ebenfalls nicht verfügbar.
Alternative Lösungen für mehrere Regionen
Um sicherzustellen, dass Ihre Anwendung weniger anfällig für einen Ausfall in einer einzelnen Region ist, müssen Sie Ihre Anwendung in mehreren Regionen bereitstellen. Gehen Sie dazu wie folgt vor:
- Stellen Sie Ihre Anwendung für die Instanzen in den einzelnen Regionen bereit.
- Konfigurieren sie Lastenausgleichs- und Failoverrichtlinien.
- Replizieren Sie Ihre Daten in den Regionen, damit Sie den letzten Anwendungszustand wiederherstellen können.
Beispielarchitekturen, die diesen Ansatz veranschaulichen, finden Sie unter:
- Referenzarchitektur: Hochverfügbare Webanwendung mit mehreren Regionen.
- App Service-Apps für mehrere Regionen für die Notfallwiederherstellung
Ein Tutorial zum Erstellen einer App für mehrere Regionen finden Sie unter Tutorial: Erstellen einer hochverfügbaren App für mehrere Regionen in Azure App Service.
Ein Beispiel für einen Ansatz, der diese Architektur veranschaulicht, finden Sie unter Hochverfügbare Unternehmensbereitstellung mit App Service-Umgebung.
Sicherungen
Wenn Sie die Standardebene oder höher verwenden, können Sie Ihre App Service-App mithilfe der Sicherungs- und Wiederherstellungsfunktionen von App Service in einer Datei sichern. Diese Funktion ist nützlich, wenn es schwierig ist, Ihren Code neu zu verteilen, oder wenn Sie den Status auf der Festplatte speichern. Bei den meisten Lösungen sollten Sie sich jedoch nicht auf App Service-Sicherungen verlassen, sondern stattdessen die anderen in diesem Artikel beschriebenen Methoden verwenden, um Ihre Resilienzanforderungen zu erfüllen.
Vereinbarung zum Servicelevel (SLA)
Der Servicelevelvertrag (SLA) für Azure App Service beschreibt die erwartete Verfügbarkeit des Diensts. Außerdem werden die Bedingungen beschrieben, die erfüllt werden müssen, um diese Verfügbarkeitserwartungen zu erreichen. Um diese Bedingungen zu verstehen, ist es wichtig, dass Sie sich die Vereinbarungen zum Servicelevel (SLAs) für Onlinedienste ansehen.
Wenn Sie einen zonenredundanten App Service-Plan bereitstellen, erhöht sich der im SLA definierte Verfügbarkeitsprozentsatz.