Ausführen einer n-schichtigen Anwendung in mehreren Azure-Regionen für HochverfügbarkeitRun an N-tier application in multiple Azure regions for high availability

Diese Referenzarchitektur zeigt eine Reihe bewährter Methoden zum Ausführen einer n-schichtigen Anwendung in mehreren Azure-Regionen, um Verfügbarkeit und eine stabile Infrastruktur für die Notfallwiederherstellung zu erzielen.This reference architecture shows a set of proven practices for running an N-tier application in multiple Azure regions, in order to achieve availability and a robust disaster recovery infrastructure.

Architektur eines hochverfügbaren Netzwerks für n-schichtige Azure-Anwendungen

Laden Sie eine Visio-Datei dieser Architektur herunter.Download a Visio file of this architecture.

ArchitectureArchitecture

Diese Architektur basiert auf der Architektur aus N-schichtige Anwendung mit SQL Server.This architecture builds on the one shown in N-tier application with SQL Server.

  • Primäre und sekundäre Regionen.Primary and secondary regions. Verwenden Sie zwei Regionen, um eine höhere Verfügbarkeit zu erreichen.Use two regions to achieve higher availability. Eine ist die primäre Region.One is the primary region. Die andere Region ist für das Failover.The other region is for failover.

  • Azure Traffic Manager.Azure Traffic Manager. Traffic Manager leitet eingehende Anforderungen an eine der Regionen weiter.Traffic Manager routes incoming requests to one of the regions. Während des normalen Betriebs werden Anforderungen an die primäre Region weitergeleitet.During normal operations, it routes requests to the primary region. Wenn diese Region nicht mehr verfügbar ist, führt Traffic Manager ein Failover zur sekundären Region aus.If that region becomes unavailable, Traffic Manager fails over to the secondary region. Weitere Informationen finden Sie im Abschnitt Traffic Manager-Konfiguration.For more information, see the section Traffic Manager configuration.

  • Ressourcengruppen:Resource groups. Erstellen Sie separate Ressourcengruppen für die primäre Region, die sekundäre Region und für Traffic Manager.Create separate resource groups for the primary region, the secondary region, and for Traffic Manager. Dies bietet Ihnen die Flexibilität, jede Region als eine einzelne Ressourcensammlung zu verwalten.This gives you the flexibility to manage each region as a single collection of resources. Sie können beispielsweise eine Region erneut bereitstellen, ohne die andere außer Betrieb zu nehmen.For example, you could redeploy one region, without taking down the other one. Verknüpfen Sie die Ressourcengruppen, damit Sie eine Abfrage zum Auflisten aller Ressourcen für die Anwendung ausführen können.Link the resource groups, so that you can run a query to list all the resources for the application.

  • Virtuelle Netzwerke.Virtual networks. Erstellen Sie für jede Region ein separates virtuelles Netzwerk.Create a separate virtual network for each region. Stellen Sie sicher, dass sich die Adressräume nicht überschneiden.Make sure the address spaces do not overlap.

  • SQL Server Always On-Verfügbarkeitsgruppe.SQL Server Always On Availability Group. Bei Verwendung von SQL Server werden SQL Always On-Verfügbarkeitsgruppen empfohlen, um Hochverfügbarkeit zu erzielen.If you are using SQL Server, we recommend SQL Always On Availability Groups for high availability. Erstellen Sie eine einzelne Verfügbarkeitsgruppe, die SQL Server-Instanzen in beiden Regionen enthält.Create a single availability group that includes the SQL Server instances in both regions.

    Hinweis

    Ziehen Sie auch eine Azure SQL-Datenbank in Betracht, die eine relationale Datenbank als Clouddienst bereitstellt.Also consider Azure SQL Database, which provides a relational database as a cloud service. Mit einer SQL-Datenbank müssen Sie weder eine Verfügbarkeitsgruppe konfigurieren noch das Failover verwalten.With SQL Database, you don't need to configure an availability group or manage failover.

  • Peering virtueller Netzwerke.Virtual network peering. Konfigurieren Sie ein Peering der zwei virtuellen Netzwerke, um eine Datenreplikation von der primären Region zur sekundären Region zuzulassen.Peer the two virtual networks to allow data replication from the primary region to the secondary region. Weitere Informationen finden Sie unter Peering in virtuellen Netzwerken.For more information, see Virtual network peering.

EmpfehlungenRecommendations

Eine Architektur mit mehreren Regionen kann eine höhere Verfügbarkeit als eine Bereitstellung in einer einzelnen Region bieten.A multi-region architecture can provide higher availability than deploying to a single region. Wenn ein regionaler Ausfall die primäre Region beeinträchtigt, können Sie mit Traffic Manager ein Failover zur sekundären Region ausführen.If a regional outage affects the primary region, you can use Traffic Manager to fail over to the secondary region. Diese Architektur kann auch hilfreich sein, wenn bei einem einzelnen Subsystem der Anwendung ein Fehler auftritt.This architecture can also help if an individual subsystem of the application fails.

Es gibt mehrere allgemeine Vorgehensweisen für das Erreichen von Hochverfügbarkeit mit mehreren Regionen:There are several general approaches to achieving high availability across regions:

  • Aktiv/passiv mit Hot Standby.Active/passive with hot standby. Der Datenverkehr wird an eine Region weitergeleitet, während die andere im Hot Standby wartet.Traffic goes to one region, while the other waits on hot standby. Hot Standby (unmittelbar betriebsbereit) bedeutet, dass die virtuellen Computer in der sekundären Region jederzeit zugeordnet sind und ausgeführt werden.Hot standby means the VMs in the secondary region are allocated and running at all times.
  • Aktiv/passiv mit Cold Standby.Active/passive with cold standby. Der Datenverkehr wird an eine Region weitergeleitet, während die andere im Cold Standby wartet.Traffic goes to one region, while the other waits on cold standby. Cold Standby (verzögert betriebsbereit) bedeutet, dass die virtuellen Computer in der sekundären Region erst zugewiesen werden, wenn sie für das Failover benötigt werden.Cold standby means the VMs in the secondary region are not allocated until needed for failover. Dieser Ansatz erfordert weniger Ausführungszeit, es dauert aber im Allgemeinen länger, bis bei einem Ausfall alle Komponenten online geschaltet sind.This approach costs less to run, but will generally take longer to come online during a failure.
  • Aktiv/aktiv.Active/active. Beide Regionen sind aktiv, und Anforderungen werden per Lastenausgleich zwischen ihnen verteilt.Both regions are active, and requests are load balanced between them. Wenn eine Region nicht verfügbar ist, wird sie aus der Rotation entfernt.If one region becomes unavailable, it is taken out of rotation.

Bei dieser Referenzarchitektur liegt der Schwerpunkt auf Aktiv/Passiv mit Hot Standby, wobei Traffic Manager für das Failover verwendet wird.This reference architecture focuses on active/passive with hot standby, using Traffic Manager for failover. Beachten Sie, dass Sie eine kleine Anzahl virtueller Computer für Hot Standby bereitstellen und dann nach Bedarf horizontal skalieren können.Note that you could deploy a small number of VMs for hot standby and then scale out as needed.

RegionspaareRegional pairing

Jede Azure-Region ist mit einer anderen Region innerhalb desselben Gebiets gepaart.Each Azure region is paired with another region within the same geography. Sie wählen im Allgemeinen Regionen aus dem gleichen Regionspaar aus (z.B. „USA, Osten 2“ und „USA, Mitte“).In general, choose regions from the same regional pair (for example, East US 2 and US Central). Das bietet die folgenden Vorteile:Benefits of doing so include:

  • Bei einem umfassenden Ausfall wird die Wiederherstellung mindestens einer Region aus jedem Paar priorisiert.If there is a broad outage, recovery of at least one region out of every pair is prioritized.
  • Geplante Azure-Systemupdates werden in Regionspaaren nacheinander ausgeführt, um mögliche Ausfallzeiten zu minimieren.Planned Azure system updates are rolled out to paired regions sequentially, to minimize possible downtime.
  • Regionspaare befinden sich innerhalb des gleichen geografischen Gebiets, um Anforderungen in Bezug auf den Datenspeicherort zu erfüllen.Pairs reside within the same geography, to meet data residency requirements.

Sie sollten allerdings sicherstellen, dass beide Regionen alle Azure-Dienste unterstützen, die für Ihre Anwendung erforderlich sind (siehe Dienste nach Region).However, make sure that both regions support all of the Azure services needed for your application (see Services by region). Weitere Informationen zu Regionspaaren finden Sie unter Geschäftskontinuität und Notfallwiederherstellung: Azure-Regionspaare.For more information about regional pairs, see Business continuity and disaster recovery (BCDR): Azure Paired Regions.

Traffic Manager-KonfigurationTraffic Manager configuration

Beachten Sie beim Konfigurieren von Traffic Manager die folgenden Punkte:Consider the following points when configuring Traffic Manager:

  • Routing:Routing. Traffic Manager unterstützt mehrere Routingalgorithmen.Traffic Manager supports several routing algorithms. Verwenden Sie für das in diesem Artikel beschriebenen Szenario Routing nach Priorität (ehemals Routingmethode Failover).For the scenario described in this article, use priority routing (formerly called failover routing). Bei dieser Einstellung sendet Traffic Manager alle Anforderungen an die primäre Region, bis die primäre Region nicht mehr erreichbar ist.With this setting, Traffic Manager sends all requests to the primary region, unless the primary region becomes unreachable. Zu diesem Zeitpunkt wird automatisch ein Failover zur sekundären Region ausgeführt.At that point, it automatically fails over to the secondary region. Weitere Informationen finden Sie unter Konfigurieren der Routingmethode „Failover“.See Configure Failover routing method.
  • Integritätstest:Health probe. Traffic Manager verwendet einen HTTP- oder HTTPS-Test, um die Verfügbarkeit jeder Region zu überwachen.Traffic Manager uses an HTTP (or HTTPS) probe to monitor the availability of each region. Der Test prüft auf eine HTTP 200-Antwort für einen angegebenen URL-Pfad.The probe checks for an HTTP 200 response for a specified URL path. Es hat sich bewährt, einen Endpunkt zu erstellen, der die Gesamtintegrität der Anwendung meldet, und diesen Endpunkt für den Integritätstest zu verwenden.As a best practice, create an endpoint that reports the overall health of the application, and use this endpoint for the health probe. Andernfalls meldet der Test eventuell einen fehlerfreien Endpunkt, obwohl wichtige Teile der Anwendung fehlerhaft sind.Otherwise, the probe might report a healthy endpoint when critical parts of the application are actually failing. Weitere Informationen finden Sie unter Überwachungsmuster für den Integritätsendpunkt.For more information, see Health Endpoint Monitoring pattern.

Wenn Traffic Manager ein Failover ausführt, können die Clients die Anwendung für eine bestimmte Zeit nicht erreichen.When Traffic Manager fails over there is a period of time when clients cannot reach the application. Die Dauer wird durch folgende Faktoren beeinflusst:The duration is affected by the following factors:

  • Der Integritätstest muss erkennen, dass die primäre Region nicht erreichbar ist.The health probe must detect that the primary region has become unreachable.
  • Die DNS-Server müssen die zwischengespeicherten DNS-Einträge für die IP-Adresse aktualisieren, die von der DNS-Gültigkeitsdauer (TTL) abhängig ist.DNS servers must update the cached DNS records for the IP address, which depends on the DNS time-to-live (TTL). Die Standardgültigkeitsdauer beträgt 300 Sekunden (5 Minuten), Sie können diesen Wert aber bei der Erstellung des Traffic Manager-Profils anpassen.The default TTL is 300 seconds (5 minutes), but you can configure this value when you create the Traffic Manager profile.

Weitere Informationen finden Sie unter Traffic Manager-Überwachung.For details, see About Traffic Manager Monitoring.

Bei Failovern durch Traffic Manager sollten Sie ein manuelles Failback ausführen, anstatt ein automatisches Failback zu implementieren.If Traffic Manager fails over, we recommend performing a manual failback rather than implementing an automatic failback. Andernfalls könnte eine Situation eintreten, bei der die Anwendung zwischen den Regionen hin und her wechselt.Otherwise, you can create a situation where the application flips back and forth between regions. Überprüfen Sie vor einem Failback, ob alle Subsysteme der Anwendung fehlerfrei sind.Verify that all application subsystems are healthy before failing back.

Beachten Sie, dass Traffic Manager in der Standardeinstellung automatisch Failbacks ausführt.Note that Traffic Manager automatically fails back by default. Um dies zu verhindern, verringern Sie die Priorität der primären Region nach einem Failover manuell.To prevent this, manually lower the priority of the primary region after a failover event. Angenommen, die primäre Region hat die Priorität 1 und die sekundäre Datenbank die Priorität 2.For example, suppose the primary region is priority 1 and the secondary is priority 2. Nach einem Failover legen Sie dann die Priorität der primären Region auf 3 fest, um ein automatisches Failback zu verhindern.After a failover, set the primary region to priority 3, to prevent automatic failback. Wenn Sie wieder zurück wechseln möchten, ändern Sie die Priorität wieder in 1.When you are ready to switch back, update the priority to 1.

Mit dem folgenden Befehl für die Azure-Befehlszeilenschnittstelle wird die Priorität aktualisiert:The following Azure CLI command updates the priority:

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile>
    --name <endpoint-name> --type azureEndpoints --priority 3

Ein anderer Ansatz besteht darin, den Endpunkt vorübergehend zu deaktivieren, bis Sie zum Ausführen eines Failbacks bereit sind:Another approach is to temporarily disable the endpoint until you are ready to fail back:

az network traffic-manager endpoint update --resource-group <resource-group> --profile-name <profile>
    --name <endpoint-name> --type azureEndpoints --endpoint-status Disabled

Je nach Ursache eines Failovers müssen Sie die Ressourcen innerhalb einer Region möglicherweise erneut bereitstellen.Depending on the cause of a failover, you might need to redeploy the resources within a region. Testen Sie vor dem Failback die Betriebsbereitschaft.Before failing back, perform an operational readiness test. Beim Test sollten z.B. folgende Punkte geprüft werden:The test should verify things like:

  • Virtuelle Computer sind richtig konfiguriert.VMs are configured correctly. (Alle erforderliche Software ist installiert, IIS wird ausgeführt usw.)(All required software is installed, IIS is running, and so on.)
  • Subsysteme der Anwendung sind fehlerfrei.Application subsystems are healthy.
  • Funktionstests.Functional testing. (Beispielsweise, dass die Datenbankebene von der Webebene aus erreichbar ist.)(For example, the database tier is reachable from the web tier.)

Konfigurieren von SQL Server Always On-VerfügbarkeitsgruppenConfigure SQL Server Always On Availability Groups

Bei früheren Versionen als Windows Server 2016 erfordern SQL Server Always On-Verfügbarkeitsgruppen einen Domänencontroller, und alle Knoten in der Verfügbarkeitsgruppe müssen sich in der gleichen Active Directory (AD)-Domäne befinden.Prior to Windows Server 2016, SQL Server Always On Availability Groups require a domain controller, and all nodes in the availability group must be in the same Active Directory (AD) domain.

So konfigurieren Sie die Verfügbarkeitsgruppe:To configure the availability group:

  • Platzieren Sie mindestens zwei Domänencontroller in jeder Region.At a minimum, place two domain controllers in each region.

  • Weisen Sie jedem Domänencontroller eine statische IP-Adresse zu.Give each domain controller a static IP address.

  • Konfigurieren Sie ein Peering der zwei virtuellen Netzwerke, um eine Kommunikation zwischen ihnen zu ermöglichen.Peer the two virtual networks to enable communication between them.

  • Fügen Sie für jedes virtuelle Netzwerk die IP-Adressen der Domänencontroller (beider Regionen) zur DNS-Serverliste hinzu.For each virtual network, add the IP addresses of the domain controllers (from both regions) to the DNS server list. Sie können den folgenden CLI-Befehl verwenden.You can use the following CLI command. Weitere Informationen finden Sie unter Ändern von DNS-Servern.For more information, see Change DNS servers.

    az network vnet update --resource-group <resource-group> --name <vnet-name> --dns-servers "10.0.0.4,10.0.0.6,172.16.0.4,172.16.0.6"
    
  • Erstellen Sie einen Windows Server-Failovercluster (WSFC), der die SQL Server-Instanzen in beiden Regionen enthält.Create a Windows Server Failover Clustering (WSFC) cluster that includes the SQL Server instances in both regions.

  • Erstellen Sie eine SQL Server Always On-Verfügbarkeitsgruppe, die SQL Server-Instanzen sowohl in der primären als auch der sekundären Region enthält.Create a SQL Server Always On Availability Group that includes the SQL Server instances in both the primary and secondary regions. Die Schritte finden Sie unter Erweitern der Always On-Verfügbarkeitsgruppe auf ein Azure-Remoterechenzentrum (PowerShell).See Extending Always On Availability Group to Remote Azure Datacenter (PowerShell) for the steps.

    • Legen Sie das primäre Replikat in der primären Region ab.Put the primary replica in the primary region.

    • Legen Sie ein oder mehrere sekundäre Replikate in der primären Region ab.Put one or more secondary replicas in the primary region. Konfigurieren Sie diese für die Verwendung synchroner Commits mit automatischem Failover.Configure these to use synchronous commit with automatic failover.

    • Legen Sie ein oder mehrere sekundäre Replikate in der sekundären Region ab.Put one or more secondary replicas in the secondary region. Konfigurieren Sie diese aus Leistungsgründen für die Verwendung asynchroner Commits.Configure these to use asynchronous commit, for performance reasons. (Andernfalls müssen alle T-SQL-Transaktionen auf einem Roundtrip über das Netzwerk zur sekundären Region warten.)(Otherwise, all T-SQL transactions have to wait on a round trip over the network to the secondary region.)

      Hinweis

      Replikate mit asynchronem Commit unterstützen kein automatisches Failover.Asynchronous commit replicas do not support automatic failover.

Überlegungen zur VerfügbarkeitAvailability considerations

Bei einer komplexen n-schichtigen Anwendung müssen Sie möglicherweise nicht die gesamte Anwendung in der sekundären Region replizieren.With a complex N-tier app, you may not need to replicate the entire application in the secondary region. Stattdessen replizieren Sie nur ein kritisches Subsystem, das zur Unterstützung der Geschäftskontinuität erforderlich ist.Instead, you might just replicate a critical subsystem that is needed to support business continuity.

Traffic Manager ist eine mögliche Schwachstelle im System.Traffic Manager is a possible failure point in the system. Wenn beim Traffic Manager-Dienst ein Fehler auftritt, können Clients während der Ausfallzeit nicht auf Ihre Anwendung zugreifen.If the Traffic Manager service fails, clients cannot access your application during the downtime. In der Vereinbarung zum Servicelevel (SLA) für Traffic Manager erfahren Sie, ob Ihre geschäftlichen Anforderungen für Hochverfügbarkeit mit Traffic Manager allein erfüllt werden.Review the Traffic Manager SLA, and determine whether using Traffic Manager alone meets your business requirements for high availability. Wenn dies nicht der Fall ist, erwägen Sie als Failback eine andere Verwaltungslösung für den Datenverkehr.If not, consider adding another traffic management solution as a failback. Wenn der Azure Traffic Manager-Dienst fehlerhaft ist, ändern Sie die CNAME-Einträge im DNS, sodass diese auf die andere Verwaltungslösung für den Datenverkehr verweisen.If the Azure Traffic Manager service fails, change your CNAME records in DNS to point to the other traffic management service. (Dieser Schritt muss manuell durchgeführt werden. Bis die DNS-Änderungen weitergegeben wurden, ist die Anwendung nicht verfügbar.)(This step must be performed manually, and your application will be unavailable until the DNS changes are propagated.)

Für den SQL Server-Cluster sind zwei Failoverszenarien zu berücksichtigen:For the SQL Server cluster, there are two failover scenarios to consider:

  • Bei allen SQL Server-Datenbankreplikaten in der primären Region treten Fehler auf.All of the SQL Server database replicas in the primary region fail. Dies kann z. B. während eines regionalen Ausfalls vorkommen.For example, this could happen during a regional outage. In diesem Fall müssen Sie für die Verfügbarkeitsgruppe ein manuelles Failover ausführen, obwohl Traffic Manager automatisch ein Failover auf dem Front-End ausführt.In that case, you must manually fail over the availability group, even though Traffic Manager automatically fails over on the front end. Führen Sie die Schritte unter Ausführen eines erzwungenen manuellen Failovers einer SQL Server-Verfügbarkeitsgruppe aus, in denen beschrieben ist, wie ein erzwungenes Failover mithilfe von SQL Server Management Studio, Transact-SQL oder PowerShell in SQL Server 2016 ausgeführt wird.Follow the steps in Perform a Forced Manual Failover of a SQL Server Availability Group, which describes how to perform a forced failover by using SQL Server Management Studio, Transact-SQL, or PowerShell in SQL Server 2016.

    Warnung

    Bei einem erzwungenem Failover besteht das Risiko eines Datenverlusts.With forced failover, there is a risk of data loss. Sobald die primäre Region wieder online ist, erstellen Sie eine Momentaufnahme der Datenbank, und verwenden Sie tablediff, um die Unterschiede zu ermitteln.Once the primary region is back online, take a snapshot of the database and use tablediff to find the differences.

  • Traffic Manager führt ein Failover zur sekundären Region aus, doch ist das primäre SQL Server-Datenbankreplikat weiterhin verfügbar.Traffic Manager fails over to the secondary region, but the primary SQL Server database replica is still available. So kann beispielsweise die Front-End-Ebene fehlgeschlagen, ohne dass dies Auswirkungen auf die virtuellen SQL Server-Computer hat.For example, the front-end tier might fail, without affecting the SQL Server VMs. In diesem Fall wird der Internetdatenverkehr an die sekundäre Region weitergeleitet, und diese Region kann immer noch eine Verbindung mit dem primären Replikat herstellen.In that case, Internet traffic is routed to the secondary region, and that region can still connect to the primary replica. Es kommt jedoch zu erhöhter Latenz, da die SQL Server-Verbindungen regionsübergreifend verlaufen.However, there will be increased latency, because the SQL Server connections are going across regions. In dieser Situation sollten Sie auf folgende Weise ein manuelles Failover ausführen:In this situation, you should perform a manual failover as follows:

    1. Wechseln Sie bei einem SQL Server-Datenbankreplikat in der sekundären Region vorübergehend zu synchronen Commits.Temporarily switch a SQL Server database replica in the secondary region to synchronous commit. Dadurch wird sichergestellt, dass während des Failovers kein Datenverlust auftritt.This ensures there won't be data loss during the failover.
    2. Führen Sie ein Failover zu diesem Replikat aus.Fail over to that replica.
    3. Wenn Sie ein Failback zur primären Region ausführen, ändern Sie die Einstellung wieder in asynchrone Commits.When you fail back to the primary region, restore the asynchronous commit setting.

Überlegungen zur VerwaltbarkeitManageability considerations

Beim Aktualisieren der Bereitstellung aktualisieren Sie immer jeweils eine Region, um die Möglichkeit eines globalen Fehlers aufgrund einer falschen Konfiguration oder eines Fehlers in der Anwendung zu reduzieren.When you update your deployment, update one region at a time to reduce the chance of a global failure from an incorrect configuration or an error in the application.

Testen Sie die Resilienz des Systems gegenüber Fehlern.Test the resiliency of the system to failures. Hier sind einige häufige Fehlerszenarien aufgeführt, die getestet werden können:Here are some common failure scenarios to test:

  • Herunterfahren von VM-InstanzenShut down VM instances.
  • Auslasten von Ressourcen, z.B. CPU und SpeicherPressure resources such as CPU and memory.
  • Trennen/Verzögern des NetzwerksDisconnect/delay network.
  • Absturz von ProzessenCrash processes.
  • Ablauf von ZertifikatenExpire certificates.
  • Simulieren von HardwarefehlernSimulate hardware faults.
  • Herunterfahren des DNS-Diensts auf den DomänencontrollernShut down the DNS service on the domain controllers.

Messen Sie die Wiederherstellungszeiten, und stellen Sie sicher, dass diese Ihren geschäftlichen Anforderungen entsprechen.Measure the recovery times and verify they meet your business requirements. Testen Sie auch Kombinationen von Fehlermodi.Test combinations of failure modes, as well.

In der folgenden Architektur werden einige der gleichen Technologien verwendet:The following architecture uses some of the same technologies: