Übersicht über eine empfohlene Aktiv-Aktiv-Hochverfügbarkeitslösung für Azure Kubernetes Service (AKS)
Wenn Sie eine Anwendung in Azure Kubernetes Service (AKS) erstellen und während der Ressourcenerstellung eine Azure-Region auswählen, handelt es sich um eine App mit einer einzelnen Region. Bei einem Notfall, der dazu führt, dass die Region nicht mehr verfügbar ist, ist Ihre Anwendung ebenfalls nicht mehr verfügbar. Wenn Sie eine identische Bereitstellung in einer sekundären Azure-Region erstellen, ist Ihre Anwendung weniger anfällig für einen Notfall in einer einzelnen Region. Dadurch wird die Geschäftskontinuität gewährleistet, und durch die Datenreplikation zwischen den Regionen können Sie Ihren letzten Anwendungsstatus wiederherstellen.
Es gibt zwar mehrere Muster, die Wiederherstellbarkeit für eine AKS-Lösung ermöglichen können, in diesem Leitfaden wird jedoch die empfohlene Aktiv-Aktiv-Hochverfügbarkeitslösung für AKS beschrieben. In dieser Lösung stellen wir zwei unabhängige und identische AKS-Cluster in zwei gekoppelten Azure-Regionen bereit, wobei beide Cluster Datenverkehr aktiv verarbeiten.
Hinweis
Der folgende Anwendungsfall kann als Standardverfahren in AKS betrachtet werden. Es wurde intern und in Verbindung mit unseren Microsoft-Partnern überprüft.
Übersicht über die Aktiv-Aktiv-Hochverfügbarkeit
Diese Lösung basiert auf zwei identischen AKS-Clustern, die für den aktiven Datenverkehr konfiguriert sind. Sie platzieren einen globalen Datenverkehrs-Manager, z. B. Azure Front Door, vor den beiden Clustern, um den Datenverkehr auf sie zu verteilen. Sie müssen die Cluster einheitlich zum Hosten einer Instanz aller Anwendungen konfigurieren, die erforderlich sind, damit die Lösung funktioniert.
Verfügbarkeitszonen sind eine weitere Möglichkeit, um Hochverfügbarkeit und Fehlertoleranz für Ihren AKS-Cluster innerhalb derselben Region sicherzustellen. Verfügbarkeitszonen ermöglichen es Ihnen, Ihre Clusterknoten an mehreren isolierten Standorten innerhalb einer Azure-Region zu verteilen. Wenn eine Zone aufgrund eines Stromausfalls, eines Hardwarefehlers oder eines Netzwerkproblems ausfällt, kann der Cluster Ihre Anwendungen weiterhin ausführen und bereitstellen. Verfügbarkeitszonen verbessern außerdem die Leistung und Skalierbarkeit Ihres Clusters, indem sie Wartezeit und Konflikte zwischen Knoten verringern. Um Verfügbarkeitszonen für Ihren AKS-Cluster einzurichten, müssen Sie die Zonennummern angeben, wenn Sie Ihre Knotenpools erstellen oder aktualisieren. Weitere Informationen finden Sie unter Was sind Azure-Verfügbarkeitszonen?.
Hinweis
Viele Regionen unterstützen Verfügbarkeitszonen. Erwägen Sie die Verwendung von Regionen mit Verfügbarkeitszonen, um eine höhere Resilienz und Verfügbarkeit für Ihre Workloads bereitzustellen. Weitere Informationen finden Sie unter Wiederherstellung nach einer regionsweiten Dienstunterbrechung.
Szenarien und Konfigurationen
Diese Lösung eignet sich am besten, wenn zustandslose Anwendungen gehostet werden, und/oder in Kombination mit anderen Technologien, die ebenfalls in beiden Regionen bereitgestellt werden, z. B. horizontale Skalierung. In Szenarien, in denen die gehostete Anwendung auf Ressourcen wie Datenbanken angewiesen ist, die nur in einer Region aktiv sind, empfehlen wir stattdessen die Implementierung einer Aktiv/Passiv-Lösung, um Kosten zu sparen, da es bei Aktiv/Passiv-Lösungen zu mehr Downtime kommt als bei Aktiv/Aktiv-Lösungen.
Komponenten
Die Aktiv/Aktiv-Hochverfügbarkeitslösung nutzt zahlreiche Azure-Dienste. In diesem Abschnitt werden nur die Komponenten behandelt, die für diese Architektur mit mehreren Clustern charakteristisch sind. Weitere Informationen zu den übrigen Komponenten finden Sie unter AKS-Baselinearchitektur.
Mehrere Cluster und Regionen: Sie stellen mehrere AKS-Cluster bereit, jeweils in einer separaten Azure-Region. Bei normalen Vorgängen leitet Ihre Azure Front Door-Konfiguration den Netzwerkdatenverkehr zwischen allen Regionen weiter. Wenn eine Region nicht mehr verfügbar ist, wird der Datenverkehr zu einer Region mit der schnellsten Ladezeit für Benutzer*innen weitergeleitet.
Hub-Spoke-Netzwerk pro Region Für jede regionale AKS-Instanz wird ein regionales Hub-Spoke-Netzwerkpaar bereitgestellt. Azure Firewall Manager-Richtlinien verwalten die Firewallrichtlinien in allen Regionen.
Regionaler Schlüsselspeicher: Sie stellen Azure Key Vault in jeder Region zum Speichern vertraulicher Werte und Schlüssel, die spezifisch für die AKS-Instanz sind, und zum Unterstützen der Dienste in dieser Region bereit.
Azure Front Door: Azure Front Door führt einen Lastenausgleich aus und leitet den Datenverkehr an eine regionale Instanz von Azure Application Gateway weiter, die sich vor jedem AKS-Cluster befindet. Azure Front Door ermöglicht ein globales Layer-7-Routing.
Log Analytics: Regionale Log Analytics-Instanzen speichern regionale Netzwerkmetriken und Diagnoseprotokolle. Eine freigegebene Instanz speichert Metriken und Diagnoseprotokolle für alle AKS-Instanzen.
Containerregistrierung Die Containerimages für die Workload werden in einer verwalteten Containerregistrierung gespeichert. Mit dieser Lösung wird eine einzelne Azure Container Registry-Instanz für alle Kubernetes-Instanzen im Cluster verwendet. Durch eine Aktivierung der Georeplikation für Azure Container Registry können Sie Images in die ausgewählten Azure-Regionen replizieren. So kann auch dann noch auf die Images zugegriffen werden, wenn es in einer Region zu einem Ausfall kommt.
Failoverprozess
Wenn ein Dienst oder eine Dienstkomponente in einer Region ausfällt, sollte der Datenverkehr an eine Region umgeleitet werden, in der dieser Dienst verfügbar ist. Eine Architektur mit mehreren Regionen umfasst viele verschiedene Fehlerstellen. In diesem Abschnitt behandeln wir die möglichen Fehlerpunkte.
Anwendungspods (regional)
Ein Kubernetes-Bereitstellungsobjekt erstellt mehrere Replikate eines Pods (ReplicaSet). Wenn eines der Podreplikate nicht verfügbar ist, wird der Datenverkehr zwischen den verbleibenden Replikaten weitergeleitet. Die Kubernetes-Replikatgruppe (ReplicaSet) versucht, den Betrieb der angegebenen Anzahl von Replikaten aufrechtzuerhalten. Wenn eine Instanz ausfällt, sollte eine neue Instanz erstellt werden. Anhand von Livetests kann der Zustand von Anwendungen oder Prozessen überprüft werden, die im Pod ausgeführt werden. Wenn der Pod nicht antwortet, entfernt der Livetest den Pod, wodurch das ReplicaSet zum Erstellen einer neuen Instanz gezwungen wird.
Weitere Informationen finden Sie unter Kubernetes: ReplicaSet.
Anwendungspods (global)
Wenn eine ganze Region ausfällt, stehen die Pods im Cluster nicht mehr zur Verarbeitung von Anforderungen zur Verfügung. In diesem Fall leitet die Azure Front Door-Instanz den gesamten Datenverkehr an die verbleibenden fehlerfreien Regionen weiter. Die Kubernetes-Cluster und -Pods in diesen Regionen setzen die Verarbeitung von Anforderungen fort. Beachten Sie den folgenden Leitfaden, um erhöhten Datenverkehr und Anforderungen an den verbleibenden Cluster auszugleichen:
- Stellen Sie sicher, dass die Netzwerk- und Rechenressourcen richtig dimensioniert sind, um einen plötzlichen Anstieg des Datenverkehrs aufgrund eines Regionsfailovers aufzufangen. Stellen Sie beispielsweise bei Verwendung von Azure Container Network Interface (CNI) sicher, dass das verwendete Subnetz alle Pod-IP-Adressen bei einer hohen Datenverkehrslast unterstützen kann.
- Verwenden Sie die horizontale automatische Podskalierung, um die Anzahl von Podreplikaten zu erhöhen und so die gestiegene regionale Nachfrage zu kompensieren.
- Verwenden Sie die Autoskalierung für AKS-Cluster, um die Anzahl von Kubernetes-Instanzknoten zu erhöhen und so die gestiegene regionale Nachfrage zu kompensieren.
Kubernetes-Knotenpools (regional)
Gelegentlich kann es zu lokalen Ausfällen von Computeressourcen kommen, z. B. wenn die Stromversorgung eines einzelnen Racks mit Azure-Servern ausfällt. Nutzen Sie Azure-Verfügbarkeitszonen, damit Ihre AKS-Knoten nicht zu einem Single Point of Failure (SPOF) für eine Region werden. Verfügbarkeitszonen stellen sicher, dass AKS-Knoten in jeder Verfügbarkeitszone physisch von denen getrennt sind, die in einer anderen Verfügbarkeitszone definiert sind.
Kubernetes-Knotenpools (global)
Bei einem Ausfall einer vollständigen Region leitet Azure Front Door den Datenverkehr an die verbleibenden fehlerfreien Regionen weiter. Stellen Sie auch hier sicher, den erhöhten Datenverkehr und die Anforderungen an den verbleibenden Cluster zu kompensieren.
Teststrategie für Failover
Obwohl derzeit keine Mechanismen in AKS zur Verfügung stehen, um eine gesamte Bereitstellungsregion für Testzwecke ausfallen zu lassen, bietet Azure Chaos Studio die Möglichkeit, ein Chaosexperiment in Ihrem Cluster zu erstellen.
Nächste Schritte
Wenn Sie eine andere Lösung in Betracht ziehen, lesen Sie die folgenden Artikel:
Azure Kubernetes Service