Freigeben über


Zuverlässigkeit in Azure-Containerinstanzen

In diesem Artikel wird die Zuverlässigkeitsunterstützung in Azure-Containerinstanzen beschrieben, die eine einfache Möglichkeit zum Ausführen von Linux- oder Windows-Containern in Azure bietet, ohne dass virtuelle Computer (VMs) verwaltet oder ein komplexerer Dienst auf höherer Ebene verwendet werden muss.

Wenn Sie Azure verwenden, ist Zuverlässigkeit eine gemeinsame Verantwortung. Microsoft bietet eine Reihe von Funktionen zur Unterstützung von Resilienz und Wiederherstellung. Sie sind dafür verantwortlich, zu verstehen, wie diese Funktionen in allen von Ihnen verwendeten Diensten funktionieren, und die Funktionen auswählen, die Sie benötigen, um Ihre Geschäftsziele und Uptime-Ziele zu erfüllen.

In diesem Artikel wird beschrieben, wie Sie Azure-Containerinstanzen für eine Vielzahl potenzieller Ausfälle und Probleme widerstandsfähig machen, einschließlich vorübergehender Fehler, Ausfall von Verfügbarkeitszonen und Regionsausfällen. Es hebt einige wichtige Informationen zum Service Level Agreement (SLA) für Azure Container Instances hervor.

Empfehlungen für die Produktionsimplementierung für Zuverlässigkeit

Um die Zuverlässigkeit von Produktionsanwendungen zu erhöhen, die auf Containerinstanzen basieren, empfehlen wir, die folgenden Aktionen auszuführen:

Übersicht über die Zuverlässigkeitsarchitektur

Um Containerinstanzen zu verwenden, stellen Sie eine Containergruppe bereit. Eine Containergruppe enthält einen oder mehrere Container. Jeder Container wird aus einem Containerimage erstellt, das in einer Registrierung wie azure Container Registry gespeichert ist.

Alle Container in einer Containergruppe werden als einzelne logische Einheit bereitgestellt und nutzen dieselbe physische Infrastruktur.

Das folgende Diagramm zeigt die Beziehung zwischen Containergruppen, Containern und Images.

Diagramm, das eine Containergruppe mit zwei Containern zeigt. Jeder Container verwendet ein separates Image in einer Registrierung.

Die Abbildung zeigt zwei Container in einem Containergruppenabschnitt. Zwei gepunktete Linien verbinden die Container mit zwei Bildabschnitten im Registrierungsabschnitt.

Containerinstanzen bieten die folgenden Features zum Verwalten von Containergruppen:

  • NGroups (Vorschau) bietet eine Reihe von Funktionen zum Verwalten mehrerer verwandter Containergruppen. Wenn Sie eine NGroup erstellen, definieren Sie die Anzahl der zu erstellenden Containergruppen. Container Instances bietet Funktionen wie automatisierte Upgradebereitstellungen und die Verteilung von Containergruppen über Verfügbarkeitszonen.

  • Standby-Pools erstellen einen Pool von vorab bereitgestellten Containergruppen, die als Reaktion auf eingehenden Traffic verwendet werden können. Standbypools sind so konzipiert, dass sie die Erstellung von Containergruppen optimieren und nicht dazu gedacht sind, Ihre Resilienz zu erhöhen.

Resilienz für 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. Vorübergehende Fehler korrigieren sich nach kurzer Zeit. Es ist wichtig, dass Ihre Anwendungen vorübergehende Fehler behandeln können, in der Regel durch Wiederholen betroffener Anforderungen.

Alle in der Cloud gehosteten Anwendungen sollten die Anleitung zur vorübergehenden Fehlerbehandlung von Azure befolgen, wenn sie mit cloudgehosteten APIs, Datenbanken und anderen Komponenten kommunizieren. Weitere Informationen finden Sie unter Empfehlungen zum Umgang mit vorübergehenden Fehlern.

Von Microsoft bereitgestellte SDKs behandeln in der Regel vorübergehende Fehler. Da Sie Ihre eigenen Anwendungen auf Containerinstanzen hosten, führen Sie Schritte aus, um die Wahrscheinlichkeit vorübergehender Fehler zu verringern:

  • Führen Sie mehrere Containergruppen für wichtige Workloads aus, um sicherzustellen, dass sich ein Fehler in einer Container- oder Containergruppe nicht auf ihre gesamte Anwendung auswirkt.

  • Erstellen Sie Ihren Anwendungscode so, dass er gegenüber vorübergehenden Fehlern in den Diensten, mit denen Sie eine Verbindung herstellen, widerstandsfähig ist, zum Beispiel durch die Verwendung von Wiederholungsrichtlinien mit Backoff-Strategien.

Weitere Informationen zu anderen Fehlern, die zur Laufzeit auftreten können, und deren Reaktion finden Sie unter "Probleme" während der Containergruppenlaufzeit.

Ausfallsicherheit bei Ausfällen von Verfügbarkeitszonen

Verfügbarkeitszonen sind physisch getrennte Gruppen von Rechenzentren innerhalb einer Azure-Region. Wenn eine Zone ausfällt, erfolgt ein Failover der Dienste zu einer der verbleibenden Zonen.

Containerinstanzen unterstützen Verfügbarkeitszonen auf unterschiedliche Weise, je nachdem, wie Sie Ihre Containergruppen bereitstellen:

  • Manuell erstellte Containergruppen: Eine einzelne Containergruppe ist eine Zonalressource , was bedeutet, dass sie in einer einzelnen Verfügbarkeitszone bereitgestellt werden kann, die Sie auswählen. Alle Container innerhalb der Gruppe werden in derselben Verfügbarkeitszone bereitgestellt. Wenn diese Verfügbarkeitszone einen Ausfall hat, kann die Containergruppe und alle zugehörigen Container Ausfallzeiten erfahren.

    Das folgende Diagramm zeigt eine Containergruppe, die manuell in Verfügbarkeitszone 1 bereitgestellt wurde:

    Diagramm, das eine Containergruppe mit zwei Containern zeigt, die in einer einzelnen Verfügbarkeitszone bereitgestellt werden.

    Die Abbildung zeigt drei Verfügbarkeitszonen: Verfügbarkeitszone 1, Verfügbarkeitszone 2 und Verfügbarkeitszone 3. Eine Containergruppe in Der Verfügbarkeitszone 1 enthält zwei Container.

    Hinweis

    Um sicherzustellen, dass Ihre Anwendung weiterhin ausgeführt wird, wenn eine einzelne Zone in der Region einen Ausfall aufweist, empfiehlt es sich, mindestens zwei Containergruppen über zwei verschiedene Verfügbarkeitszonen hinweg zu erstellen.

    Wenn Sie keine Verfügbarkeitszonen angeben, die für Ihre Containergruppe verwendet werden sollen, handelt es sich um nicht zonen- oder regionale Zonen, was bedeutet, dass sie in einer beliebigen Verfügbarkeitszone innerhalb der Region oder innerhalb derselben Zone platziert werden kann. Wenn eine Verfügbarkeitszone in der Region ein Problem hat, könnte Ihre Containergruppe Ausfallzeiten erleben.

  • NGroups: Wenn Sie eine NGroup bereitstellen, können Sie eine oder mehrere Zonen angeben, in denen sie bereitgestellt werden sollen. Wenn Sie eine NGroup in zwei oder mehr Zonen bereitstellen, handelt es sich um eine zonenredundante NGroup, und ein Ausfall einer Verfügbarkeitszone verursacht nur Probleme für die Containergruppen innerhalb der betroffenen Zone.

    Das folgende Diagramm zeigt eine NGroup, die in drei Verfügbarkeitszonen bereitgestellt wird:

    Diagramm, das eine NGroup mit drei Containergruppen zeigt, die in drei Verfügbarkeitszonen bereitgestellt werden.

    Die Abbildung zeigt drei Verfügbarkeitszonen. Jede Verfügbarkeitszone enthält eine Containergruppe und zwei Container. Ein Rechteck mit der Bezeichnung NGroupdesiredCount=3, zones=1,2,3 umfasst alle drei Verfügbarkeitszonen.

    Wenn Sie keine Verfügbarkeitszonen für Ihre NGroup angeben, ist sie nicht zonengebunden und kann Ausfallzeiten erleben, wenn eine Verfügbarkeitszone in der Region ein Problem hat.

  • Standbypools: Wenn Sie einen Standbypool bereitstellen, können Sie optional eine oder mehrere Zonen angeben. Die Plattform kann Container über die von Ihnen ausgewählten Zonen anfordern.

    Standbypools sind jedoch nicht zonenredundant oder zonensicher, da es keine Garantie gibt, dass Container in mehreren Zonen erstellt werden. Wenn ein Zonenausfall auftritt, ist es möglich, dass alle Container im Pool in der betroffenen Zone platziert werden können.

    Da Standbypools nicht darauf ausgelegt sind, Resilienz gegenüber Zonenfehlern zu bieten, beschreibt dieses Handbuch nicht das detaillierte Verhalten von Standbypools mit Verfügbarkeitszonen.

    Von Bedeutung

    Standbypools sind nicht so konzipiert, dass sie zonensicher sind. Sie sollten nicht für Workloads verwendet werden, die Resilienz für Zonenfehler erfordern.

Regionsunterstützung

Zonengruppenbereitstellungen werden in allen Regionen mit Verfügbarkeitszonen unterstützt.

Anforderungen

  • Zonal-Bereitstellungen sind für Linux- und Windows Server 2019-Containergruppen verfügbar.

  • Um eine Verfügbarkeitszone auszuwählen, müssen Sie die Standard-SKU verwenden. Containergruppen in Zonen sind mit dem Confidential SKU nicht verfügbar.

Überlegungen

Spotcontainer unterstützen keine Verfügbarkeitszonen und sind immer nicht zonenal.

Kosten

Es gibt keine zusätzlichen Kosten zum Konfigurieren von Verfügbarkeitszonen für eine Containergruppe.

Konfigurieren der Unterstützung von Verfügbarkeitszonen

  • Erstellen Sie Containergruppen mit Unterstützung für Verfügbarkeitszonen. Der Ansatz, den Sie zum Konfigurieren von Verfügbarkeitszonen verwenden, hängt davon ab, wie Sie Containergruppen erstellen.

    • Manuell erstellte Containergruppen: Zum Erstellen einer Zonencontainergruppe in einer bestimmten Zone können Sie eine der folgenden Methoden verwenden:

    • NGroups: Sie können eine zonenredundante NGroup mithilfe einer Bicep-Datei oder ARM-Vorlage bereitstellen und mehrere Zonen angeben. Weitere Informationen finden Sie unter NGroups mit Zonenbeispiel.

    • Standbypools: Sie können einen Standbypool bereitstellen, der Verfügbarkeitszonen verwendet, indem Sie beim Erstellen oder Aktualisieren des Pools eine oder mehrere Zonen angeben. Container werden jedoch möglicherweise nicht in mehreren Zonen erstellt. Standbypools sollten nicht für Workloads verwendet werden, die Resilienz bei Zonenfehlern erfordern. Weitere Informationen finden Sie im Abschnitt Erstellen eines Standbypools für Containerinstanzen.

  • Aktivieren sie die Verfügbarkeitszonenunterstützung für vorhandene Ressourcen. Der Ansatz, den Sie zum Konfigurieren von Verfügbarkeitszonen verwenden, hängt davon ab, wie Sie Containergruppen erstellen.

    • Manuell erstellte Containergruppen: Sie können Verfügbarkeitszonen für eine vorhandene nicht zonenfreie Containergruppe nicht aktivieren. Sie müssen die Containergruppe löschen und eine Zonencontainergruppe erstellen.

    • NGroups: Sie können Verfügbarkeitszonen für eine vorhandene nicht zonenfreie NGroup nicht aktivieren. Sie müssen die NGroup löschen und eine zonenredundante NGroup erstellen.

    • Standby-Pools: Sie können Verfügbarkeitszonen für einen vorhandenen nicht-zonalen Standbypool nicht aktivieren. Sie müssen die Containergruppe löschen und einen neuen Standbypool erstellen, der mehrere Verfügbarkeitszonen verwendet.

  • Verschieben von Containergruppen zwischen Zonen oder Deaktivieren der Unterstützung der Verfügbarkeitszone Der Ansatz, den Sie zum Ändern von Verfügbarkeitszonen verwenden, hängt davon ab, wie Sie Containergruppen erstellen.

    • Manuell erstellte Containergruppen: Um die Verfügbarkeitszone einer Containergruppe zu ändern, müssen Sie die Containergruppe löschen und eine weitere Containergruppe mit der neuen Verfügbarkeitszone erstellen. Informationen zum Löschen der Containergruppe finden Sie in den folgenden Ressourcen:

    • NGroups: Sie können einer NGroup Zonen hinzufügen, aber keine Zonen entfernen.

    • Standbypools: Sie können einem Standbypool Zonen hinzufügen, aber keine Zonen entfernen.

Containergruppenverteilung

Die Art und Weise, wie Containergruppen über Verfügbarkeitszonen verteilt werden, hängt davon ab, wie Sie Ihre Containergruppen bereitstellen.

  • Manuell erstellte Containergruppen: Sie sind dafür verantwortlich, Ihre manuell erstellten Containergruppen über mehrere Verfügbarkeitszonen zu verteilen.

  • NGroups: Bei Scale-In-Vorgängen löscht NGroups zufällig Instanzen, die möglicherweise nicht über Verfügbarkeitszonen verteilt sind. Skalierungsvorgänge versuchen, die Verteilung über Zonen neu zu verteilen.

  • Standbypools: Ein Standbypool kann Container in einer der Verfügbarkeitszonen erstellen, die Sie im Pool konfigurieren. Container werden jedoch möglicherweise nicht in mehreren Zonen erstellt. Standbypools sollten nicht für Workloads verwendet werden, die Resilienz bei Zonenfehlern erfordern.

Kapazitätsplanung und -verwaltung

Um sich auf den Ausfall der Verfügbarkeitszone vorzubereiten, sollten Sie die Anzahl der Containergruppen,die Sie bereitstellen, überbereitstellen. Dieser Ansatz ermöglicht es der Lösung, einige Kapazitätsverluste zu tolerieren und weiterhin ohne beeinträchtigte Leistung zu funktionieren. Weitere Informationen finden Sie unter Verwalten der Kapazität mithilfe der Überteilung.

Der Ansatz, den Sie zum Überprovisionieren von Containergruppen verwenden, hängt davon ab, wie Sie Ihre Containergruppen bereitstellen.

  • Manuell erstellte Containergruppen: Sie sind für die Planung der Kapazität Ihrer manuell erstellten Containergruppen verantwortlich, einschließlich der Planung, wie viele Containergruppen in den einzelnen Zonen bereitgestellt werden sollen.

  • NGroup: Erwägen Sie, die Kapazität Ihrer NGroup zu überschreiben , um den Verlust einer Zone zu tolerieren.

  • Standby-Pools: Standby-Pools sind nicht dafür konzipiert, gegenüber Zonenfehlern widerstandsfähig zu sein. Erwägen Sie die Verwendung mehrerer Standbypools in verschiedenen Zonen oder verwenden Sie NGroups.

Verhalten, wenn alle Zonen fehlerfrei sind

In diesem Abschnitt wird beschrieben, was Sie erwarten müssen, wenn Containerinstanzressourcen für die Unterstützung der Verfügbarkeitszone konfiguriert sind und alle Verfügbarkeitszonen betriebsbereit sind.

  • Traffic-Routing zwischen Zonen: Sie sind für das Routing des Traffics zu Ihren Containern verantwortlich. Sie können z. B. Azure-Anwendungsgateway als Gateway und Lastenausgleich für Ihre Containergruppen verwenden.

    Wenn Sie NGroups oder Standbypools verwenden, sind Sie für den Lastenausgleich für jeden Container verantwortlich. Außerdem müssen Sie Ihr Datenverkehrsroutingsystem konfigurieren, um den Status jeder Containergruppe zu erkennen und den Datenverkehr bei Bedarf an eine alternative Gruppe umzuleiten.

  • Datenreplikation zwischen Zonen: Container und Containergruppen sind zustandslos. Sie können Ihre eigene Dateifreigabe anfügen oder eine Verbindung mit Datenbanken oder anderen Speicherdiensten innerhalb Ihrer Anwendungen herstellen. Sie sind dafür verantwortlich, sicherzustellen, dass diese Dateifreigaben und Speicherdienste zonenresilient sind. Überprüfen Sie die Zuverlässigkeitsleitfäden für jeden Dienst, um zu verstehen, wie jede Komponentenzone robust ist.

Verhalten bei einem Zoneausfall

In diesem Abschnitt wird beschrieben, was Sie erwarten müssen, wenn Containerinstanzressourcen für die Unterstützung der Verfügbarkeitszone konfiguriert sind und ein Ausfall der Verfügbarkeitszone vorhanden ist.

  • Erkennung und Reaktion: Die Verantwortung für die Erkennung von Zonenfehlern und der zugehörigen Antwort hängt davon ab, wie Sie Ihre Containergruppen bereitstellen.

    • Manuell erstellte Containergruppen: Sie müssen den Verlust einer Verfügbarkeitszone erkennen und ein Failover zu einer sekundären Containergruppe initiieren, die Sie in einer anderen Verfügbarkeitszone erstellen.

    • NGroups: Die Containerinstanzenplattform ist dafür verantwortlich, einen Fehler in einer Verfügbarkeitszone zu erkennen und darauf zu reagieren.

      Sie sind jedoch dafür verantwortlich, sicherzustellen, dass der Datenverkehr an Container in einer fehlerfreien Zone weitergeleitet wird.

    • Standbypools: Es ist nicht garantiert, dass die Container Instances-Plattform auf Zonenfehler bei Standbypools reagiert. Standbypools sollten nicht für Workloads verwendet werden, die Resilienz bei Zonenfehlern erfordern.

  • Benachrichtigung: Microsoft benachrichtigt Sie nicht automatisch, wenn eine Zone deaktiviert ist. Sie können jedoch Azure Service Health verwenden, um die allgemeine Integrität des Diensts zu verstehen, einschließlich aller Zonenfehler, und Sie können Dienststatuswarnungen einrichten, um Sie über Probleme zu informieren.
  • Aktive Anforderungen: Wenn eine Zone fehlschlägt, werden alle Container, die in dieser Zone ausgeführt werden, höchstwahrscheinlich gestoppt, einschließlich aller aktiven Arbeiten, die sie gerade bearbeiten.

  • Erwarteter Datenverlust: Da Container und Containergruppen zustandslos sind, wird kein Datenverlust aufgrund eines Zonenfehlers erwartet. Sie sind jedoch dafür verantwortlich, sicherzustellen, dass jede Komponente in Ihrer Workload zonensicher ist, einschließlich Speicherdienste und Datenbanken.

  • Erwartete Ausfallzeiten: Die Ausfallzeit, die Sie von einem Zonenausfall erwarten können, hängt davon ab, wie Sie Ihre Containergruppen bereitstellen.

    • Manuell erstellte Containergruppen: Bei Zonencontainergruppen, wenn eine Zone nicht verfügbar ist, sind Ihre Containergruppe und ihre Container bis zur Wiederherstellung der Verfügbarkeitszone nicht verfügbar.

    • NGroups: Bei NGroups bleibt Ihre Anwendung verfügbar, wenn eine Zone abläuft, da die verbleibenden Containergruppen innerhalb der NGroups weiterhin in anderen Zonen ausgeführt werden. Es wird keine Ausfallzeit erwartet.

    • Standbypools: Standbypools bieten keine Zonenresilienz. Wenn sich alle Containergruppen im Standbypool in einer einzigen Zone befinden, ist es möglich, dass alle Containergruppen und deren Container nicht mehr verfügbar sind, bis die Verfügbarkeitszone wiederhergestellt wird.

  • Datenverkehrsumleitung: Da Sie für das Weiterleiten des Datenverkehrs an Ihre Container verantwortlich sind, sind Sie auch für die Umleitung des Datenverkehrs verantwortlich, wenn eine Containergruppe aufgrund eines Ausfalls einer Verfügbarkeitszone fehlschlägt.

Zonenwiederherstellung

Nach der Wiederherstellung der Zone startet die Azure-Plattform automatisch Containergruppen neu, die gestoppt wurden. Es ist keine Kundenaktion erforderlich.

Test auf Zonenfehler

Es gibt keine Möglichkeit, einen Ausfall der Verfügbarkeitszone zu simulieren, die Ihre Containergruppe enthält. Sie können jedoch vorgelagerte Gateways oder Lastenausgleichsgeräte manuell konfigurieren, um den Datenverkehr in eine andere Containergruppe in einer anderen Verfügbarkeitszone umzuleiten.

Widerstandsfähigkeit bei regionalen Ausfällen

Container Instances ist ein Dienst für einzelne Regionen. Wenn die Region nicht verfügbar ist, sind Ihre Containergruppen und ihre Container ebenfalls nicht verfügbar.

Benutzerdefinierte Lösungen mit mehreren Regionen für Resilienz

Sie können optional separate Containergruppen in mehreren Regionen bereitstellen. Sie sind für die Bereitstellung und Konfiguration der Containergruppen in den einzelnen Regionen verantwortlich. Außerdem müssen Sie den Lastenausgleich mithilfe eines Diensts wie Azure Traffic Manager oder Azure Front Door konfigurieren. Sie sind für alle Datensynchronisierung, Failover und Failback verantwortlich.

Service-Level-Vereinbarung

Der Service level agreement (SLA) für Azure-Dienste beschreibt die erwartete Verfügbarkeit jedes Diensts und die Bedingungen, die Ihre Lösung erfüllen muss, um diese Verfügbarkeitserwartungen zu erreichen. Weitere Informationen finden Sie unter SLAs für Onlinedienste.