Erstellen global verteilter Anwendungen mit Azure Cosmos DB

Cosmos DB
Traffic Manager

Lösungsidee

Wenn Sie möchten, dass wir diesen Artikel um weitere Informationen ergänzen, z. B. potenzielle Anwendungsfälle, alternative Dienste, Überlegungen zur Implementierung oder Preisempfehlungen, lassen Sie es uns über Feedback auf GitHub wissen!

Garantieren Sie Benutzern weltweit Zugang zu den Funktionen für Hochverfügbarkeit und geringe Wartezeit, die in die globale Microsoft-Rechenzentren integriert sind.

Aufbau

Architekturdiagramm
Laden Sie eine SVG-Version dieser Architektur herunter.

Datenfluss

  1. Der Benutzer greift über den dedizierten Client auf die Anwendung zu.
  2. Azure Traffic Manager leitet die Verbindung des Benutzers an den besten Ort für den Zugriff auf die Anwendung weiter, basierend auf einem einzelnen oder geschachtelten Routingprofil.
  3. In der Zielregion, in der die Anwendung gehostet wird, verwaltet die Anwendung die Sitzung und die Verbindung mit der Datenbank.
  4. Diese Anwendung kann von einer einfachen statischen Seite bis hin zu einer Microservices-orientierten Anwendung reichen, die zum Beispiel in Kubernetes gehostet wird.
  5. Die Verbindung zwischen der Anwendungslandschaft und der Cosmos DB wird von einem Azure Active Directory-Benutzer verwaltet, der die Cosmos DB-Schlüssel im Key Vault abholen kann.
  6. Mithilfe der Multihosting-APIs von Azure Cosmos DB kennt Ihre Anwendung die nächstgelegene Region und sendet Anforderungen an diese Region. Die nächstgelegene Region wird ohne jede Konfigurationsänderung identifiziert. Wenn Sie Ihrem Azure Cosmos-Konto Regionen hinzufügen oder Regionen daraus entfernen, muss Ihre Anwendung nicht erneut bereitgestellt oder unterbrochen werden, und sie ist weiterhin jederzeit hoch verfügbar. Hinter den Kulissen kümmert sich Cosmos DB um die globale Verteilung und Replikation der Daten, basierend auf der Anzahl der definierten Regionen. Zusätzlich sollte man auch von der Option für automatisches Failover profitieren, um ein Failover in die Region mit der höchsten Failoverpriorität ohne Benutzereingriff durchzuführen, wenn eine Region nicht verfügbar werden sollte. Wenn automatisches Failover aktiviert ist, kann die Regionspriorität geändert werden.

Komponenten

  • Azure Traffic Manager: Erstellen DNS-basierter Lastenausgleichs-/Routingoptionen für Ihre Anwendungen mit sechs Arten von DNS-basierten Optionen für das Datenverkehrsrouting, die geschachtelt werden können.
  • Azure Active Directory: Synchronisieren lokaler Verzeichnisse und Ermöglichen des einmaligen Anmeldens (SSO).
  • Azure Cosmos DB: Global verteilte Datenbank mit Unterstützung mehrerer Datenmodelle in jeder Größenordnung

Computeoptionen

  • Azure Virtual Machines: Erstellen virtueller Linux- und Windows-Computer (VMs) in Sekundenschnelle und Verringerung von Kosten.
  • Azure Kubernetes Services: Hochverfügbarer, sicherer und vollständig verwalteter Kubernetes-Dienst für alle Ihre anwendungs- und Microservice-basierten Workloads.
  • App Service: Schnelles Erstellen leistungsstarker Cloud-Apps für Web und Mobilgeräte.

Serverlose Optionen

Überlegungen

Verfügbarkeit

Die Verfügbarkeit der Cosmos DB-Instanz hängt von einer Reihe von Faktoren ab. Je höher die Anzahl von Regionen, in denen Cosmos repliziert wird, desto höher die Verfügbarkeit der Anwendung. Die einzelnen Regionen enthalten jeweils alle Datenpartitionen eines Azure Cosmos DB-Containers und können standardmäßig Lesevorgänge verarbeiten. Um die Verfügbarkeit der Datenebene zu erhöhen, können Sie Schreibvorgänge in mehreren Regionen aktivieren. Dadurch erhöht sich die Verfügbarkeit der Datenebene. Die Verfügbarkeit lässt sich auch durch die Verwendung niedrigerer Konsistenzebenen und Verfügbarkeitszonen erhöhen.

Wenn Sie den obigen Ansatz in Betracht ziehen und Hochverfügbarkeit mit automatischem Failover von Azure Cosmos DB erreichen, konfigurieren Sie Ihre Lösung so, dass die ausgeführte Anwendung auf der höchstmöglichen bereitgestellten SLA gehalten wird.

Für die Anwendungsschicht sollte der Traffic Manager mit geschachtelten Profilen konfiguriert werden. Wenn Sie dieses Design auf die höchste Ebene pushen, können Sie die verschiedenen Anwendungsmöglichkeiten pro Region skalieren. Bei der Bereitstellung pro Region wird ebenfalls ein Hochverfügbarkeitsansatz verfolgt.

Leistung

Die Systemleistung wird durch eine Reihe von Faktoren auf Compute- und Datenbankebene beeinflusst. Die SKU für einen App Service-Plan oder eine andere Computeoption wirkt sich auf den Arbeitsspeicher und die Kerne aus, die in den einzelnen Regionen zur Verfügung stehen. Darüber hinaus bestimmt die Anzahl von Regionen, in denen die Computeebene bereitgestellt wird, den möglichen Umfang. Die Bereitstellung weiterer Standorte entlastet die bereits vorhandenen Regionen und sollte eine lineare Steigerung des maximalen Durchsatzes bewirken, der von der Anwendung bewältigt werden kann.

Cosmos DB muss so konfiguriert werden, dass sich daraus kein Engpass für die Ressourcen auf Computeebene ergibt. Jede Datenbank und jeder Container in Cosmos DB muss mit Autoskalierung konfiguriert und mit einem maximalen Anforderungseinheitenwert bereitgestellt werden, der sicherstellt, dass von Cosmos DB keine Anforderungen gedrosselt werden. Zur Ermittlung geeigneter maximaler Anforderungseinheitenwerte für die Cosmos DB-Entitäten können Auslastungstests mit etwa annährend dem maximalen Durchsatz für die Anwendung durchgeführt werden. Verglichen mit höheren Konsistenzebenen bieten niedrigere Konsistenzebenen einen höheren Durchsatz und Leistungsvorteile.

Wichtig: Wenn die Logik in Code implementiert wird, der aus Cosmos DB liest und in Cosmos DB schreibt (über das SDK, Azure Functions-Bindungen oder Ähnliches), muss PreferredLocations verwendet werden, damit Anforderungen von jeder regionalen API an die nächstgelegene Cosmos DB-Region weitergeleitet werden. Der optimale Endpunkt für Lese- und Schreibvorgänge wird vom SDK auf der Grundlage der Azure Cosmos DB-Kontokonfiguration, der aktuellen regionalen Verfügbarkeit und der angegebenen Liste bevorzugter Regionen ausgewählt. Dieser Prozess führt zu einer erheblichen Leistungssteigerung.

Resilienz

Zur Steigerung der Resilienz können Verfügbarkeitszonen für Azure Cosmos DB-Bereitstellungen verwendet werden. Die Resilienz hängt auch von der Wahl der Konsistenzebene ab, die Sie für Ihre Cosmos DB-Bereitstellung treffen. Abhängig von dieser Konsistenzebene erzielen Sie einen unterschiedlichen Grad an Resilienz (weitere Informationen finden Sie unter Kompromisse in Bezug auf Konsistenz, Verfügbarkeit und Leistung).

Skalierbarkeit

Die Skalierung basiert in diesem Diagramm auf mehreren Ebenen. Azure Cosmos DB ist speziell für elastische Skalierung und vorhersagbare Leistung ausgelegt. Auf der Ebene der Anwendung müssen Sie sich das verwendete Computemodell ansehen. Azure Functions und App Service können automatisch skalieren. Für Azure Virtual Machines können Sie Azure Virtual Machine Scale Sets verwenden. Wenn Sie sich dieser Notwendigkeit bewusst sind, sollten Sie, wenn möglich, immer eine serverlose Option in Betracht ziehen.

Sicherheit

Aus einer Sicherheitsperspektive sollte ein identitätsbasiertes System angestrebt werden, bei dem Azure Active Directory für den sicheren Zugriff auf die Umgebung verwendet werden kann. Im Back-End erfolgt der Zugriff auf die Anwendung (im besten Fall) über verwaltete Identitäten, obwohl man auch den Ansatz in Betracht ziehen könnte, Azure Active Directory-Benutzer und Azure Key Vault zur Sicherung des Zugriffs zu verwenden. Darüber hinaus sollte die Cosmos DB-Instanz noch weiter geschützt werden, damit Lese- und Schreibvorgänge für die Instanz nur von den diversen Back-Ends ausgeführt werden können, die in verschiedenen Regionen bereitgestellt werden. Die IP-Einschränkung kann mithilfe der integrierten Firewall auf das Konto angewendet werden.

Hinweis

Seit der Ignite im März 2021 unterstützen wir jetzt auch Azure Active Directory RBAC direkt mit der Cosmos DB-SQL-API.

Nächste Schritte

Weitere Informationen zu Azure Cosmos DB:

Weitere Informationen zu Azure Traffic Manager:

Verwandte Lösungsmöglichkeiten:

Verwandte vollständige Architekturen:

Verwandte Anleitungen zur Architektur: