n-schichtige Windows-Anwendung in Azure mit SQL ServerWindows N-tier application on Azure with SQL Server

Diese Referenzarchitektur zeigt, wie Sie für eine n-schichtige Anwendung konfigurierte virtuelle Computer (VMs) und ein entsprechendes virtuelles Netzwerk mit SQL Server unter Windows für die Datenschicht bereitstellen.This reference architecture shows how to deploy virtual machines (VMs) and a virtual network configured for an N-tier application, using SQL Server on Windows for the data tier. Stellen Sie diese Lösung bereit.Deploy this solution.

n-schichtige Architektur mit Microsoft AzureN-tier architecture using Microsoft Azure

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

AufbauArchitecture

Diese Architektur besteht aus den folgenden Komponenten.The architecture has the following components.

AllgemeinGeneral

  • Ressourcengruppe.Resource group. Ressourcengruppen dienen zum Gruppieren von Azure-Ressourcen, damit sie nach Lebensdauer, Besitzer oder anderen Kriterien verwaltet werden können.Resource groups are used to group Azure resources so they can be managed by lifetime, owner, or other criteria.

  • Verfügbarkeitszonen.Availability zones. Verfügbarkeitszonen sind physische Standorte in einer Azure-Region.Availability zones are physical locations within an Azure region. Jede Zone besteht aus mindestens einem Datencenter mit eigener Stromversorgung, Kühlung und Netzwerk.Each zone consists of one or more datacenters with independent power, cooling, and networking. Wenn Sie VMs zonenübergreifend platzieren, wird die Anwendung in einer Zone resilient gegenüber Fehlern.By placing VMs across zones, the application becomes resilient to failures within a zone.

Netzwerk und LastenausgleichNetworking and load balancing

  • Virtuelles Netzwerk und Subnetze.Virtual network and subnets. Jede Azure-VM wird in einem virtuellen Netzwerk bereitgestellt, das in Subnetze segmentiert werden kann.Every Azure VM is deployed into a virtual network that can be segmented into subnets. Erstellen Sie für jede Schicht ein separates Subnetz.Create a separate subnet for each tier.

  • Anwendungsgateway:Application gateway. Application Gateway ist ein Lastenausgleich auf Schicht 7 (Anwendungsschicht).Application Gateway is a layer 7 load balancer. Bei dieser Architektur werden HTTP-Anforderungen an das Web-Front-End geleitet.In this architecture, it routes HTTP requests to the web front end. Mit Application Gateway wird auch eine Web Application Firewall (WAF) bereitgestellt, mit der die Anwendung vor häufig auftretenden Exploits und Sicherheitsrisiken geschützt wird.Application Gateway also provides a web application firewall (WAF) that protects the application from common exploits and vulnerabilities.

  • Lastenausgleichsmodule.Load balancers. Verwenden Sie Azure Load Balancer Standard zum Verteilen von Netzwerkdatenverkehr von der Webebene auf die Geschäftsebene und von der Geschäftsebene an SQL Server.Use Azure Standard Load Balancer to distribute network traffic from the web tier to the business tier, and from the business tier to SQL Server.

  • Netzwerksicherheitsgruppen (NSGs).Network security groups (NSGs). Verwenden Sie NSGs, um den Netzwerkdatenverkehr im virtuellen Netzwerk zu beschränken.Use NSGs to restrict network traffic within the virtual network. In der hier gezeigten dreischichtigen Architektur akzeptiert die Datenbankschicht beispielsweise keinen Datenverkehr vom Web-Front-End, sondern nur von der Unternehmensschicht und dem Verwaltungssubnetz.For example, in the three-tier architecture shown here, the database tier does not accept traffic from the web front end, only from the business tier and the management subnet.

  • DDoS Protection.DDoS Protection. Obwohl die Azure-Plattform Schutz vor verteilten Denial-of-Service-Angriffen (DDoS) beinhaltet, empfehlen wir die Verwendung der Dienstebene DDoS Protection Standard, die erweiterte Funktionen für die DDoS-Entschärfung bietet.Although the Azure platform provides basic protection against distributed denial of service (DDoS) attacks, we recommend using DDoS Protection Standard, which has enhanced DDoS mitigation features. Weitere Informationen finden Sie unter Sicherheitshinweise.See Security considerations.

  • Azure DNS:Azure DNS. Azure DNS ist ein Hostingdienst für DNS-Domänen.Azure DNS is a hosting service for DNS domains. Er ermöglicht eine Namensauflösung mithilfe der Microsoft Azure-Infrastruktur.It provides name resolution using Microsoft Azure infrastructure. Durch das Hosten Ihrer Domänen in Azure können Sie Ihre DNS-Einträge mithilfe der gleichen Anmeldeinformationen, APIs, Tools und Abrechnung wie für die anderen Azure-Dienste verwalten.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services.

Virtuelle ComputerVirtual machines

  • SQL Server Always On-Verfügbarkeitsgruppe.SQL Server Always On Availability Group. Stellt Hochverfügbarkeit in der Datenschicht durch Replikation und Failover bereit.Provides high availability at the data tier, by enabling replication and failover. Verwendet WSFC-Technologie (Windows Server-Failovercluster) für Failover.It uses Windows Server Failover Cluster (WSFC) technology for failover.

  • AD DS-Server (Active Directory Domain Services):Active Directory Domain Services (AD DS) Servers. Die Computerobjekte für den Failovercluster und die zugehörigen Clusterrollen werden in Active Directory Domain Services (AD DS) erstellt.The computer objects for the failover cluster and its associated clustered roles are created in Active Directory Domain Services (AD DS).

  • Cloudzeuge.Cloud Witness. Bei einem Failovercluster muss mindestens die Hälfte der Knoten ausgeführt werden (Quorum).A failover cluster requires more than half of its nodes to be running, which is known as having quorum. Enthält der Cluster nur zwei Knoten, kann eine Netzwerkpartition dazu führen, dass sich beide Knoten als Masterknoten betrachten.If the cluster has just two nodes, a network partition could cause each node to think it's the master node. In diesem Fall benötigen Sie einen Zeugen, um den Konflikt zu lösen und ein Quorum festzulegen.In that case, you need a witness to break ties and establish quorum. Ein Zeuge ist eine Ressource (beispielsweise ein freigegebener Datenträger), der den Ausschlag für das Quorum gibt.A witness is a resource such as a shared disk that can act as a tie breaker to establish quorum. Ein Cloudzeuge ist ein Zeugentyp, der Azure Blob Storage nutzt.Cloud Witness is a type of witness that uses Azure Blob Storage. Weitere Informationen zum Konzept des Quorums finden Sie unter Understanding cluster and pool quorumTo learn more about the concept of quorum, see Understanding cluster and pool quorum. Weitere Informationen zu Cloudzeugen finden Sie unter Deploy a cloud witness for a Failover Cluster (Bereitstellen eines Cloudzeugen für einen Failovercluster).For more information about Cloud Witness, see Deploy a Cloud Witness for a Failover Cluster.

  • Jumpbox:Jumpbox. Wird auch als geschützter Host bezeichnet.Also called a bastion host. Dies ist eine geschützte VM im Netzwerk, die von Administratoren zum Herstellen der Verbindung mit anderen VMs verwendet wird.A secure VM on the network that administrators use to connect to the other VMs. Die Jumpbox verfügt über eine NSG, bei der Remotedatenverkehr nur von öffentlichen IP-Adressen zugelassen wird, die in einer Liste mit sicheren Adressen enthalten sind.The jumpbox has an NSG that allows remote traffic only from public IP addresses on a safe list. Die NSG sollte Remotedesktop-Datenverkehr (RDP) zulassen.The NSG should permit remote desktop (RDP) traffic.

EmpfehlungenRecommendations

Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.Your requirements might differ from the architecture described here. Verwenden Sie diese Empfehlungen als Startpunkt.Use these recommendations as a starting point.

Virtuelle ComputerVirtual machines

Empfehlungen zum Konfigurieren der VMs finden Sie unter Ausführen eines virtuellen Windows-Computers in Azure.For recommendations on configuring the VMs, see Run a Windows VM on Azure.

Virtuelles NetzwerkVirtual network

Legen Sie bei der Erstellung des virtuellen Netzwerks (VNET) fest, wie viele IP-Adressen Ihre Ressourcen in jedem Subnetz benötigen.When you create the virtual network, determine how many IP addresses your resources in each subnet require. Geben Sie mithilfe der CIDR eine Subnetzmaske und einen VNET-Adressbereich an, der für die erforderlichen IP-Adressen groß genug ist.Specify a subnet mask and a network address range large enough for the required IP addresses, using CIDR notation. Verwenden Sie einen Adressraum, der in die standardmäßigen privaten IP-Adressblöcke 10.0.0.0/8, 172.16.0.0/12 und 192.168.0.0/16 fällt.Use an address space that falls within the standard private IP address blocks, which are 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16.

Wählen Sie einen Adressbereich, der sich nicht mit Ihrem lokalen Netzwerk überschneidet, für den Fall, dass Sie später ein Gateway zwischen dem virtuellen Netzwerk und dem lokalen Netzwerk einrichten müssen.Choose an address range that does not overlap with your on-premises network, in case you need to set up a gateway between the virtual network and your on-premises network later. Sobald Sie das virtuelle Netzwerk erstellt haben, können Sie den Adressbereich nicht mehr ändern.Once you create the virtual network, you can't change the address range.

Entwerfen Sie Subnetze unter Berücksichtigung der Funktionalität und Sicherheitsanforderungen.Design subnets with functionality and security requirements in mind. Alle VMs innerhalb derselben Schicht oder Rolle sollten im selben Subnetz platziert werden, was eine Sicherheitsbegrenzung darstellen kann.All VMs within the same tier or role should go into the same subnet, which can be a security boundary. Weitere Informationen zum Entwerfen von virtuellen Netzwerken und Subnetzen finden Sie unter Planen und Entwerfen von Azure Virtual Networks.For more information about designing virtual networks and subnets, see Plan and design Azure Virtual Networks.

Application GatewayApplication Gateway

Weitere Informationen zum Konfigurieren von Application Gateway finden Sie unter Application Gateway – Konfigurationsübersicht.For information about configuring Application Gateway, see Application Gateway configuration overview.

Load BalancerLoad balancers

Machen Sie die VMs nicht direkt über das Internet verfügbar. Weisen Sie stattdessen jeder VM eine private IP-Adresse zu.Don't expose the VMs directly to the Internet, but instead give each VM a private IP address. Clients stellen über die öffentliche IP-Adresse eine Verbindung her, die dem Application Gateway zugeordnet ist.Clients connect using the public IP address associated with the Application Gateway.

Definieren Sie Lastenausgleichsregeln, um Netzwerkdatenverkehr an die virtuellen Computer weiterzuleiten.Define load balancer rules to direct network traffic to the VMs. Um HTTP-Datenverkehr zuzulassen, ordnen Sie beispielsweise den Port 80 in der Front-End-Konfiguration dem Port 80 im Back-End-Adresspool zu.For example, to enable HTTP traffic, map port 80 from the front-end configuration to port 80 on the back-end address pool. Wenn ein Client eine HTTP-Anforderung an Port 80 sendet, wählt der Lastenausgleich mithilfe eines Hashalgorithmus, der die Quell-IP-Adresse enthält, eine Back-End-IP-Adresse aus.When a client sends an HTTP request to port 80, the load balancer selects a back-end IP address by using a hashing algorithm that includes the source IP address. So werden Clientanforderungen auf alle VMs im Back-End-Adresspool verteilt.Client requests are distributed across all the VMs in the back-end address pool.

NetzwerksicherheitsgruppenNetwork security groups

Verwenden Sie NSG-Regeln, um den Datenverkehr zwischen den Schichten zu beschränken.Use NSG rules to restrict traffic between tiers. In der oben gezeigten dreischichtigen Architektur kommuniziert die Internetschicht nicht direkt mit der Datenbankschicht.In the three-tier architecture shown above, the web tier does not communicate directly with the database tier. Um diese Regel zu erzwingen, sollte die Datenbankschicht eingehenden Datenverkehr aus dem Subnetz der Internetschicht blockieren.To enforce this rule, the database tier should block incoming traffic from the web tier subnet.

  1. Verweigern Sie sämtlichen eingehenden Datenverkehr aus dem virtuellen Netzwerk.Deny all inbound traffic from the virtual network. (Verwenden Sie den VIRTUAL_NETWORK-Tag in der Regel.)(Use the VIRTUAL_NETWORK tag in the rule.)
  2. Lassen Sie eingehenden Datenverkehr aus dem Subnetz der Unternehmensschicht zu.Allow inbound traffic from the business tier subnet.
  3. Lassen Sie eingehenden Datenverkehr aus dem Subnetz der Datenbankschicht zu.Allow inbound traffic from the database tier subnet itself. Diese Regel ermöglicht die Kommunikation zwischen den virtuellen Datenbankcomputern, die für die Replikation und das Failover der Datenbank erforderlich ist.This rule allows communication between the database VMs, which is needed for database replication and failover.
  4. Lassen Sie RDP-Datenverkehr (Port 3389) aus dem Subnetz der Jumpbox zu.Allow RDP traffic (port 3389) from the jumpbox subnet. Diese Regel erlaubt Administratoren, über die Jumpbox eine Verbindung mit der Datenbankschicht herzustellen.This rule lets administrators connect to the database tier from the jumpbox.

Erstellen Sie die Regeln 2–4 mit einer höheren Priorität als die erste Regel, damit sie Vorrang haben.Create rules 2 – 4 with higher priority than the first rule, so they override it.

SQL Server Always On-VerfügbarkeitsgruppenSQL Server Always On Availability Groups

Um Hochverfügbarkeit von SQL Server zu erzielen, werden AlwaysOn-Verfügbarkeitsgruppen empfohlen.We recommend Always On Availability Groups for SQL Server high availability. Bei früheren Versionen als Windows Server 2016 erfordern AlwaysOn-Verfügbarkeitsgruppen einen Domänencontroller, und alle Knoten in der Verfügbarkeitsgruppe müssen sich in der gleichen AD-Domäne befinden.Prior to Windows Server 2016, Always On Availability Groups require a domain controller, and all nodes in the availability group must be in the same AD domain.

Andere Schichten stellen über einen Verfügbarkeitsgruppenlistener eine Verbindung mit der Datenbank her.Other tiers connect to the database through an availability group listener. Mit dem Listener kann ein SQL-Client eine Verbindung herstellen, ohne den Namen der physischen SQL Server-Instanz zu kennen.The listener enables a SQL client to connect without knowing the name of the physical instance of SQL Server. VMs, die auf die Datenbank zugreifen, müssen Mitglied der Domäne sein.VMs that access the database must be joined to the domain. Der Client (in diesem Fall eine andere Schicht) verwendet DNS, um den Namen des virtuellen Netzwerks des Listeners in IP-Adressen aufzulösen.The client (in this case, another tier) uses DNS to resolve the listener's virtual network name into IP addresses.

Konfigurieren Sie die SQL Server-Always On-Verfügbarkeitsgruppe wie folgt:Configure the SQL Server Always On Availability Group as follows:

  1. Erstellen Sie einen WSFC-Cluster (Windows Server Failover Clustering), eine SQL Server Always On-Verfügbarkeitsgruppe und ein primäres Replikat.Create a Windows Server Failover Clustering (WSFC) cluster, a SQL Server Always On Availability Group, and a primary replica. Weitere Informationen finden Sie unter Erste Schritte mit Always On-Verfügbarkeitsgruppen (SQL Server).For more information, see Getting Started with Always On Availability Groups.

  2. Erstellen Sie ein internes Lastenausgleichsmodul mit einer statischen privaten IP-Adresse.Create an internal load balancer with a static private IP address.

  3. Erstellen Sie einen Verfügbarkeitsgruppenlistener, und ordnen Sie den DNS-Namen des Listeners der IP-Adresse eines internen Lastenausgleichsmoduls zu.Create an availability group listener, and map the listener's DNS name to the IP address of an internal load balancer.

  4. Erstellen Sie eine Lastenausgleichsregel für den SQL Server-Überwachungsport (standardmäßig TCP-Port 1433).Create a load balancer rule for the SQL Server listening port (TCP port 1433 by default). Die Lastenausgleichsregel muss Floating IP, auch als „Direct Server Return“ bezeichnet, aktivieren.The load balancer rule must enable floating IP, also called Direct Server Return. Dies bewirkt, dass die VM direkt auf den Client antwortet, was eine direkte Verbindung mit dem primären Replikat ermöglicht.This causes the VM to reply directly to the client, which enables a direct connection to the primary replica.

    Hinweis

    Wenn die Floating IP aktiviert ist, muss die Portnummer des Front-Ends mit der des Back-Ends in der Lastenausgleichsregel übereinstimmen.When floating IP is enabled, the front-end port number must be the same as the back-end port number in the load balancer rule.

Wenn ein SQL-Client versucht, eine Verbindung herzustellen, leitet das Lastenausgleichsmodul die Verbindungsanforderung an das primäre Replikat weiter.When a SQL client tries to connect, the load balancer routes the connection request to the primary replica. Bei einem Failover zu einem anderen Replikat leitet der Lastenausgleich neue Anforderungen automatisch an ein neues primäres Replikat weiter.If there is a failover to another replica, the load balancer automatically routes new requests to a new primary replica. Weitere Informationen finden Sie unter Konfigurieren eines ILB-Listeners für AlwaysOn-Verfügbarkeitsgruppen in Azure.For more information, see Configure an ILB listener for SQL Server Always On Availability Groups.

Bei einem Failover werden bestehende Clientverbindungen geschlossen.During a failover, existing client connections are closed. Nachdem das Failover abgeschlossen ist, werden neue Verbindungen an das neue primäre Replikat weitergeleitet.After the failover completes, new connections will be routed to the new primary replica.

Wenn Ihre Anwendung deutlich mehr Lesezugriffe als Schreibzugriffe tätigt, können Sie einige der schreibgeschützten Abfragen in ein sekundäres Replikat auslagern.If your application makes significantly more reads than writes, you can offload some of the read-only queries to a secondary replica. Weitere Informationen finden Sie unter Verwenden eines Listeners zum Herstellen einer Verbindung mit einem schreibgeschützten sekundären Replikat (schreibgeschütztes Routing).See Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing).

Testen Sie Ihre Bereitstellung, indem Sie ein manuelles Failover der Verfügbarkeitsgruppe erzwingen.Test your deployment by forcing a manual failover of the availability group.

JumpboxJumpbox

Verweigern Sie den RDP-Zugriff (Remotedesktopprotokoll) über das öffentliche Internet auf die VMs, auf denen die Anwendungsworkload ausgeführt wird.Don't allow RDP access from the public Internet to the VMs that run the application workload. Der gesamte RDP-Zugriff auf diese VMs muss stattdessen über die Jumpbox erfolgen.Instead, all RDP access to these VMs should go through the jumpbox. Ein Administrator meldet sich bei der Jumpbox und von der Jumpbox aus dann bei der anderen VM an.An administrator logs into the jumpbox, and then logs into the other VM from the jumpbox. Die Jumpbox lässt RDP-Datenverkehr aus dem Internet zu, jedoch nur von bekannten, sicheren IP-Adressen.The jumpbox allows RDP traffic from the Internet, but only from known, safe IP addresses.

Die Jumpbox hat sehr geringe Leistungsanforderungen. Wählen Sie daher einen virtuellen Computer mit geringer Größe.The jumpbox has minimal performance requirements, so select a small VM size. Erstellen Sie eine öffentliche IP-Adresse für die Jumpbox.Create a public IP address for the jumpbox. Platzieren Sie die Jumpbox im selben virtuellen Netzwerk wie die anderen VMs, jedoch in einem separaten Verwaltungssubnetz.Place the jumpbox in the same virtual network as the other VMs, but in a separate management subnet.

Fügen Sie zum Schutz der Jumpbox eine NSG-Regel hinzu, die ausschließlich RDP-Verbindungen von einer sicheren Gruppe öffentlicher IP-Adressen zulässt.To secure the jumpbox, add an NSG rule that allows RDP connections only from a safe set of public IP addresses. Konfigurieren Sie die NSGs für die anderen Subnetze, um RDP-Datenverkehr aus dem Verwaltungssubnetz zuzulassen.Configure the NSGs for the other subnets to allow RDP traffic from the management subnet.

Überlegungen zur SkalierbarkeitScalability considerations

SkalierungsgruppenScale sets

Erwägen Sie für die Internet- und Unternehmensschichten die Verwendung von Skalierungsgruppen für virtuelle Computer, anstatt separate VMs bereitzustellen.For the web and business tiers, consider using virtual machine scale sets instead of deploying separate VMs. Eine Skalierungsgruppe erleichtert die Bereitstellung und Verwaltung einer Gruppe identischer VMs und ermöglicht die automatische Skalierung der VMs auf der Grundlage von Leistungsmetriken.A scale set makes it easy to deploy and manage a set of identical VMs, and autoscale the VMs based on performance metrics. Mit zunehmender Last auf den virtuellen Computern werden dem Lastenausgleich automatisch zusätzliche virtuelle Computer hinzugefügt.As the load on the VMs increases, additional VMs are automatically added to the load balancer. Erwägen Sie die Verwendung von Skalierungsgruppen, wenn Sie VMs schnell aufskalieren müssen oder eine automatische Skalierung benötigen.Consider scale sets if you need to quickly scale out VMs, or need to autoscale.

Es gibt zwei grundlegende Methoden für das Konfigurieren von virtuellen Computern in einer Skalierungsgruppe:There are two basic ways to configure VMs deployed in a scale set:

  • Verwenden Sie Erweiterungen, um die VM nach ihrer Bereitstellung zu konfigurieren.Use extensions to configure the VM after it's deployed. Bei diesem Ansatz dauert das Starten neuer VM-Instanzen länger als bei virtuellen Computern ohne Erweiterungen.With this approach, new VM instances may take longer to start up than a VM with no extensions.

  • Stellen Sie einen verwalteten Datenträger mit einem benutzerdefinierten Datenträgerimage bereit.Deploy a managed disk with a custom disk image. Diese Option kann möglicherweise schneller bereitgestellt werden.This option may be quicker to deploy. Allerdings müssen Sie das Image auf dem neuesten Stand halten.However, it requires you to keep the image up-to-date.

Weitere Informationen finden Sie unter Überlegungen zum Entwurf von Skalierungsgruppen.For more information, see Design considerations for scale sets.

Tipp

Wenn Sie eine Lösung für die automatische Skalierung verwenden, testen Sie diese im Voraus mit Workloads auf Produktionsebene.When using any autoscale solution, test it with production-level workloads well in advance.

Grenzwerte für AbonnementsSubscription limits

Jedes Azure-Abonnement verfügt über Standardeinschränkungen, zu denen auch eine maximale Anzahl von virtuellen Computern pro Region gehört.Each Azure subscription has default limits in place, including a maximum number of VMs per region. Sie können den Grenzwert erhöhen, indem Sie eine Supportanfrage einreichen.You can increase the limit by filing a support request. Weitere Informationen finden Sie unter Grenzwerte für Azure-Abonnements, -Dienste und -Kontingente sowie allgemeine Beschränkungen.For more information, see Azure subscription and service limits, quotas, and constraints.

Application GatewayApplication Gateway

Application Gateway unterstützt den Modus mit fester Kapazität oder den Modus mit automatischer Skalierung.Application Gateway supports fixed capacity mode or autoscaling mode. Der Modus mit fester Kapazität empfiehlt sich für Szenarien mit einheitlichen und vorhersagbaren Workloads.Fixed capacity mode is useful for scenarios with consistent and predictable workloads. Verwenden Sie den Modus mit automatischer Skalierung für Workloads mit variablem Datenverkehr.Consider using autoscaling mode for workloads with variable traffic. Weitere Informationen finden Sie unter Automatische Skalierung und zonenredundantes Application Gateway v2.For more information, see Autoscaling and Zone-redundant Application Gateway v2

Überlegungen zur VerfügbarkeitAvailability considerations

Verfügbarkeitszonen bieten die beste Resilienz innerhalb einer einzelnen Region.Availability zones provide the best resiliency within a single region. Wenn Sie eine noch höhere Verfügbarkeit benötigen, erwägen Sie, die Anwendung über zwei Regionen zu replizieren und Azure Traffic Manager für das Failover zu verwenden.If you need even higher availability, consider replicating the application across two regions, using Azure Traffic Manager for failover. Weitere Informationen finden Sie unter Ausführen einer n-schichtigen Anwendung in mehreren Azure-Regionen für Hochverfügbarkeit.For more information, see Multi-region N-tier application for high availability.

Nicht alle Regionen unterstützen Verfügbarkeitszonen, und nicht alle VM-Größen werden in allen Zonen unterstützt.Not all regions support availability zones, and not all VM sizes are supported in all zones. Führen Sie den folgenden Azure CLI-Befehl aus, um die unterstützten Zonen für jede VM-Größe innerhalb einer Region zu ermitteln:Run the following Azure CLI command to find the supported zones for each VM size within a region:

az vm list-skus --resource-type virtualMachines --zone false --location <location> \
    --query "[].{Name:name, Zones:locationInfo[].zones[] | join(','@)}" -o table

Wenn Sie diese Architektur in einer Region bereitstellen, die keine Verfügbarkeitszonen unterstützt, platzieren Sie die VMs für jede Ebene in einer Verfügbarkeitsgruppe.If you deploy this architecture to a region that does not support availability zones, put the VMs for each tier inside an availability set. VMs innerhalb derselben Verfügbarkeitsgruppe werden aus Redundanzgründen auf mehreren physischen Servern, Computerracks, Speichereinheiten und Netzwerkswitches bereitgestellt.VMs within the same availability are deployed across multiple physical servers, compute racks, storage units, and network switches for redundancy. Skalierungsgruppen verwenden automatisch Platzierungsgruppen, die als eine implizite Verfügbarkeitsgruppe fungieren.Scale sets automatically use placement groups, which act as an implicit availability set.

Wenn Sie in Verfügbarkeitszonen bereitstellen, verwenden Sie die Standard-SKU von Azure Load Balancer und die SKU v2 von Application Gateway.When deploying to availability zones, use the Standard SKU of Azure Load Balancer and the v2 SKU of Application Gateway. Diese SKUs unterstützen die zonenübergreifende Redundanz.These SKUs support cross-zone redundancy. Weitere Informationen finden Sie unterFor more information, see:

In einer einzelnen Application Gateway-Bereitstellung können mehrere Instanzen des Gateways ausgeführt werden.A single Application Gateway deployment can run multiple instances of the gateway. Führen Sie für Produktionsworkloads mindestens zwei Instanzen aus.For production workloads, run at least two instances.

IntegritätstestsHealth probes

Application Gateway und Load Balancer überwachen mit Integritätstests die Verfügbarkeit von VM-Instanzen.Application Gateway and Load Balancer both use health probes to monitor the availability of VM instances.

  • Application Gateway verwendet immer einen HTTP-Test.Application Gateway always uses an HTTP probe.
  • Load Balancer kann sowohl HTTP-Tests als auch TCP-Tests ausführen.Load Balancer can test either HTTP or TCP. Verwenden Sie generell einen HTTP-Test, wenn auf einer VM ein HTTP-Server ausgeführt wird.Generally, if a VM runs an HTTP server, use an HTTP probe. Verwenden Sie andernfalls TCP.Otherwise, use TCP.

Kann eine Instanz bei einem Test nicht innerhalb des jeweiligen Zeitlimits erreicht werden, beendet das Gateway oder der Lastenausgleich das Senden von Datenverkehr an die betreffende VM.If a probe can't reach an instance within a timeout period, the gateway or load balancer stops sending traffic to that VM. Der Test wird fortgesetzt. und die VM wird an den Back-End-Pool zurückgegeben, wenn sie wieder verfügbar wird.The probe continues to check and will return the VM to the back-end pool if the VM becomes available again.

HTTP-Tests senden eine HTTP GET-Anforderung an einen angegebenen Pfad und lauschen auf eine HTTP 200-Antwort.HTTP probes send an HTTP GET request to a specified path and listen for an HTTP 200 response. Bei diesem Pfad kann es sich um den Stammpfad („/“) oder einen Endpunkt zur Integritätsüberwachung handeln, der benutzerdefinierte Logik zum Überprüfen der Integrität der Anwendung implementiert.This path can be the root path ("/"), or a health-monitoring endpoint that implements some custom logic to check the health of the application. Der Endpunkt muss anonyme HTTP-Anforderungen zulassen.The endpoint must allow anonymous HTTP requests.

Weitere Informationen zu Integritätstests finden Sie in folgenden Artikeln:For more information about health probes, see:

Überlegungen zum Entwerfen eines Integritätstest-Endpunkts finden Sie unter Muster für Überwachung der Integrität von Endpunkten.For considerations about designing a health probe endpoint, see Health Endpoint Monitoring pattern.

KostenbetrachtungCost considerations

Verwenden Sie den Azure-Preisrechner, um die Kosten zu ermitteln.Use the Azure Pricing Calculator to estimates costs. Hier finden Sie einige weitere Überlegungen dazu.Here are some other considerations.

VM-SkalierungsgruppenVirtual machine scale sets

VM-Skalierungsgruppen sind für alle Windows-VM-Größen verfügbar.Virtual machine scale sets are available on all Windows VM sizes. Ihnen werden nur die Azure-VMs in Rechnung gestellt, die Sie bereitstellen, sowie alle zusätzlichen zugrunde liegenden Infrastrukturressourcen, die Sie genutzt haben, etwa Speicher und Netzwerk.You are only charged for the Azure VMs you deploy and any additional underlying infrastructure resources consumed such as storage and networking. Für den VM-Skalierungsgruppendienst fallen keine inkrementellen Gebühren an.There are no incremental charges for the virtual machine scale sets service.

Preisoptionen für einzelne VMs finden Sie unter Virtuelle Windows-Computer – Preise.For single VMs pricing options See Windows VMs pricing

Datenbank importierenSQL server

Wenn Sie Azure SQL DBaas auswählen, können Sie Kosten sparen, da Sie keine Always On-Verfügbarkeitsgruppen und Domänencontrollercomputer konfigurieren müssen.If you choose Azure SQL DBaas, you can save on cost because don't need to configure an Always On Availability Group and domain controller machines. Es gibt mehrere Bereitstellungsoptionen, beginnend mit einer einzelnen Datenbank bis hin zu einer verwalteten Instanz oder Pools für elastische Datenbanken.There are several deployment options starting from single database up to managed instance, or elastic pools. Weitere Informationen finden Sie in der Azure-Preisübersicht.For more information see Azure SQL pricing.

Die Preisoptionen für virtuelle SQL Server-Computer finden Sie unter Preisübersicht für SQL-VMs.For SQL server VMs pricing options see SQL VMs pricing.

Load BalancerLoad balancers

Die Gebühren werden nur anhand der Anzahl von konfigurierten Lastenausgleichsregeln und Ausgangsregeln berechnet.You are charged only for the number of configured load-balancing and outbound rules. Für NAT-Regeln für eingehenden Datenverkehr fallen keine Gebühren an.Inbound NAT rules are free. Für Load Balancer Standard fallen keine Kosten auf Stundenbasis an, wenn keine Regeln konfiguriert sind.There is no hourly charge for the Standard Load Balancer when no rules are configured.

Weitere Informationen finden Sie im Abschnitt zu Kosten im Microsoft Azure Well-Architected Framework.For more information, see the cost section in Microsoft Azure Well-Architected Framework.

SicherheitshinweiseSecurity considerations

Virtuelle Netzwerke stellen in Azure eine Isolationsbegrenzung für Datenverkehr dar.Virtual networks are a traffic isolation boundary in Azure. VMs in einem virtuellen Netzwerk können standardmäßig nicht direkt mit VMs in einem anderen virtuellen Netzwerk kommunizieren.By default, VMs in one virtual network can't communicate directly with VMs in a different virtual network. Sie können virtuelle Netzwerke jedoch durch Peering virtueller Netzwerke explizit verbinden.However, you can explicitly connect virtual networks by using virtual network peering.

NSGs.NSGs. Verwenden Sie Netzwerksicherheitsgruppen (NSGs), um den Datenverkehr in das und aus dem Internet zu beschränken.Use network security groups (NSGs) to restrict traffic to and from the internet. Weitere Informationen finden Sie unter Microsoft Cloud Services und Netzwerksicherheit.For more information, see Microsoft cloud services and network security.

DMZ.DMZ. Für die Erstellung einer DMZ zwischen dem Internet und dem virtuellen Azure-Netzwerk sollten Sie eventuell eine virtuelle Netzwerkappliance (Network Virtual Appliance, NVA) hinzufügen.Consider adding a network virtual appliance (NVA) to create a DMZ between the Internet and the Azure virtual network. NVA ist ein Oberbegriff für eine virtuelle Appliance, die netzwerkbezogene Aufgaben wie Erstellung von Firewalls, Paketüberprüfung, Überwachung und benutzerdefiniertes Routing ausführen kann.NVA is a generic term for a virtual appliance that can perform network-related tasks, such as firewall, packet inspection, auditing, and custom routing. Weitere Informationen finden Sie unter Implementieren einer DMZ zwischen Azure und dem Internet.For more information, see Implementing a DMZ between Azure and the Internet.

Verschlüsselung.Encryption. Verschlüsseln Sie sensible ruhende Daten, und verwalten Sie die Datenbankverschlüsselungsschlüssel mithilfe von Azure Key Vault.Encrypt sensitive data at rest and use Azure Key Vault to manage the database encryption keys. Key Vault kann Verschlüsselungsschlüssel in Hardwaresicherheitsmodulen (HSMs) speichern.Key Vault can store encryption keys in hardware security modules (HSMs). Weitere Informationen finden Sie unter Konfigurieren der Azure-Schlüsseltresor-Integration für SQL Server auf virtuellen Azure-Computern.For more information, see Configure Azure Key Vault Integration for SQL Server on Azure VMs. Es empfiehlt sich außerdem, Anwendungsgeheimnisse wie Datenbankverbindungszeichenfolgen in Key Vault zu speichern.It's also recommended to store application secrets, such as database connection strings, in Key Vault.

DDoS Protection.DDoS protection. Die Azure-Plattform stellt DDoS Protection Basic-Schutz standardmäßig bereit.The Azure platform provides basic DDoS protection by default. Dieser Basisschutz ist dafür ausgelegt, die Azure-Infrastruktur als Ganzes zu schützen.This basic protection is targeted at protecting the Azure infrastructure as a whole. Obwohl der DDoS Protection Basic-Schutz automatisch aktiviert ist, empfehlen wir die Verwendung von DDoS Protection Standard.Although basic DDoS protection is automatically enabled, we recommend using DDoS Protection Standard. DDoS Protection Standard wendet basierend auf den Mustern des Netzwerkdatenverkehrs Ihrer Anwendung eine adaptive Optimierung an, um Bedrohungen zu erkennen.Standard protection uses adaptive tuning, based on your application's network traffic patterns, to detect threats. Dadurch können DDoS-Angriffe entschärft werden, die von den infrastrukturweiten DDoS-Richtlinien möglicherweise nicht erkannt werden.This allows it to apply mitigations against DDoS attacks that might go unnoticed by the infrastructure-wide DDoS policies. DDoS Protection Standard stellt über Azure Monitor auch Warnungen, Telemetrie und Analysen bereit.Standard protection also provides alerting, telemetry, and analytics through Azure Monitor. Weitere Informationen finden Sie unter Azure DDoS Protection – Bewährte Methoden und Referenzarchitekturen.For more information, see Azure DDoS Protection: Best practices and reference architectures.

Überlegungen zu DevOpsDevOps considerations

Bei dieser Architektur verwenden Sie [Vorlagen für Azure-Bausteine][azbb-template], um die Azure-Ressourcen und die zugehörigen Abhängigkeiten bereitzustellen.In this architecture you use [Azure Building Blocks templates][azbb-template] for provisioning the Azure resources and its dependencies. Da sich alle Hauptressourcen und die zugehörigen Abhängigkeiten in demselben virtuellen Netzwerk befinden, sind sie in derselben grundlegenden Workload isoliert. Dies vereinfacht die Zuordnung der spezifischen Ressourcen der Workload zu einem Team, damit es alle Aspekte dieser Ressourcen separat verwalten kann.Since all the main resources and their dependencies are in the same virtual network, they are isolated in the same basic workload, that makes it easier to associate the workload's specific resources to a team, so that the team can independently manage all aspects of those resources. Diese Isolation ermöglicht DevOps die Durchführung von Continuous Integration und Continuous Delivery (CI/CD).This isolation enables DevOps to perform continuous integration and continuous delivery (CI/CD).

Außerdem können Sie verschiedene Bereitstellungsvorlagen verwenden und in Azure DevOps Services integrieren, um in wenigen Minuten unterschiedliche Umgebungen bereitzustellen. Beispielsweise können Sie das Replizieren von produktionsähnlichen Szenarien oder das Laden von Testumgebungen nur bei Bedarf durchführen, um Kosten zu sparen.Also, you can use different deployment templates and integrate them with Azure DevOps Services to provision different environments in minutes, for example to replicate production like scenarios or load testing environments only when needed, saving cost.

In diesem Fall werden Ihre virtuellen Computer mit VM-Erweiterungen konfiguriert, da sie die Installation von bestimmter zusätzlicher Software ermöglichen, z. B. Antischadsoftware und Sicherheits-Agents.In this sceanario you virtual machines are configured by using Virtual Machine Extensions, since they offer the possibility of installing certain additional software, such as anti malware and security agents. VM-Erweiterungen werden nur während der Erstellung einer VM installiert und ausgeführt.VM Extensions are installed and executed only at VM creation time. Dies bedeutet Folgendes: Wenn das Betriebssystem zu einem späteren Zeitpunkt nicht richtig konfiguriert wird, ist manuelles Eingreifen erforderlich, um es wieder in den korrekten Zustand zu versetzen.That means if the Operating System gets configured incorrectly at a later stage, it will require a manual intervention to move it back to its correct state..

Tools für die Konfigurationsverwaltung, z. B. Desired State Configuration (DSC), werden in dieser Architektur verwendet, um Active Directory und eine SQL Server Always On-Verfügbarkeitsgruppe zu konfigurieren.Configuration Management Tools, in particular Desired State Configuration (DSC), are used in this architecture to configure Active Directory and a SQL Server Always On Availability Group.

Erwägen Sie die Nutzung von Azure Monitor, um die Leistung Ihrer Infrastruktur zu analysieren und zu optimieren, die Überwachung durchzuführen und Netzwerkprobleme zu diagnostizieren, ohne dass Sie sich bei Ihren virtuellen Computern anmelden müssen.Consider using the Azure Monitor to Analyze and optimize the performance of your infrastructure, Monitor and diagnose networking issues without logging into your virtual machines. Application Insights ist tatsächlich einer der Komponenten von Azure Monitor, die Ihnen umfassende Metriken und Protokolle zum Überprüfen des Status Ihrer gesamten Azure-Landschaft an die Hand gibt.Application Insights is actually one of the components of Azure Monitor, which gives you rich metrics and logs to verify the state of your complete Azure landscape. Mit Azure Monitor können Sie den Status Ihrer Infrastruktur verfolgen.Azure Monitor will help you to follow the state of your infrastructure.

Achten Sie darauf, nicht nur die Compute-Elemente zu überwachen, die Ihren Anwendungscode unterstützen, sondern auch Ihre Datenplattformen. Dies gilt vor allem für Ihre Datenbanken, da eine schlechte Leistung der Datenebene einer Anwendung schwerwiegende Folgen haben kann.Make sure not only to monitor your compute elements supporting your application code, but your data platform as well, in particular your databases, since a low performance of the data tier of an application could have serious consequences.

Um die Umgebung zu testen, in der die Anwendungen ausgeführt werden, sollte eine Versionskontrolle vorhanden sein, und für die Bereitstellung sollten die gleichen Mechanismen wie für den Anwendungscode verwendet werden. Dies ermöglicht es, die Umgebung ebenfalls anhand von DevOps-Testparadigmen zu testen und zu validieren.In order to test the Azure environment where the applications are running, it should be version-controlled and deployed through the same mechanisms as application code, then it can be tested and validated using DevOps testing paradigms too.

Weitere Informationen finden Sie unter Azure Well-Architected Framework im Abschnitt mit den Informationen zum optimalen Betrieb.For more information, see the Operational Excellence section in Azure Well-Architected Framework.

Bereitstellen der LösungDeploy the solution

Eine Bereitstellung für diese Referenzarchitektur ist auf GitHub verfügbar.A deployment for this reference architecture is available on GitHub. Die gesamte Bereitstellung, die die Ausführung der Skripts zum Konfigurieren von Active Directory Domain Services (AD DS), des Windows Server-Failoverclusters und der SQL Server-Verfügbarkeitsgruppe umfasst, kann bis zu einer Stunde dauern.The entire deployment can take up to an hour, which includes running the scripts to configure AD DS, the Windows Server failover cluster, and the SQL Server availability group.

Wenn Sie eine Region angeben, die Verfügbarkeitszonen unterstützt, werden die VMs in Verfügbarkeitszonen bereitgestellt.If you specify a region that supports availability zones, the VMs are deployed into availability zones. Andernfalls werden die VMs in Verfügbarkeitsgruppen bereitgestellt.Otherwise, the VMs are deployed into availability sets. Eine Liste der Regionen, die Verfügbarkeitszonen unterstützen, finden Sie unter Unterstützung der Dienste nach Region.For a list of regions that support availability zones, see Services support by region.

VoraussetzungenPrerequisites

  1. Klonen oder Forken Sie das GitHub-Repository Referenzarchitekturen, oder laden Sie die entsprechende ZIP-Datei herunter.Clone, fork, or download the zip file for the reference architectures GitHub repository.

  2. Installieren Sie Azure CLI 2.0.Install Azure CLI 2.0.

  3. Installieren Sie Node und NPM.Install Node and NPM

  4. Installieren Sie das npm-Paket mit den Azure Bausteinen.Install the Azure building blocks npm package.

    npm install -g @mspnp/azure-building-blocks
    
  5. Melden Sie sich über eine Eingabeaufforderung, eine Bash-Eingabeaufforderung oder die PowerShell-Eingabeaufforderung folgendermaßen bei Ihrem Azure-Konto an:From a command prompt, bash prompt, or PowerShell prompt, sign into your Azure account as follows:

    az login
    

BereitstellungsschritteDeployment steps

  1. Navigieren Sie zum Ordner virtual-machines\n-tier-windows des GitHub-Repositorys für Referenzarchitekturen.Navigate to the virtual-machines\n-tier-windows folder of the reference architectures GitHub repository.

  2. Öffnen Sie die Datei n-tier-windows.json .Open the n-tier-windows.json file.

  3. Suchen Sie in der Datei n-tier-windows.json nach allen Vorkommen von [replace-with-password] und [replace-with-safe-mode-password], und ersetzen Sie sie durch ein sicheres Kennwort.In the n-tier-windows.json file, search for all instances of [replace-with-password] and [replace-with-safe-mode-password] and replace them with a strong password. Speichern Sie die Datei .Save the file.

    Hinweis

    Wenn Sie den Administratorbenutzernamen ändern, müssen Sie auch die extensions-Blöcke in der JSON-Datei aktualisieren.If you change the administrator user name, you must also update the extensions blocks in the JSON file.

  4. Führen Sie den folgenden Befehl aus, um die Architektur bereitzustellen:Run the following command to deploy the architecture.

    azbb -s <your subscription_id> -g <resource_group_name> -l <location> -p n-tier-windows.json --deploy
    
  5. Wenn die Bereitstellung abgeschlossen ist, öffnen Sie das Azure-Portal und navigieren Sie zur Ressourcengruppe.When the deployment is complete, open the Azure portal and navigate to the resource group. Suchen Sie das Speicherkonto, das mit „sqlcw“ beginnt.Find the storage account that begins with 'sqlcw'. Dies ist das Speicherkonto, das für den Cloudzeugen des Clusters erstellt und verwendet wird.This is the storage account that will be used for the cluster's cloud witness. Navigieren Sie zum Speicherkonto, wählen Sie Zugriffsschlüssel aus, und kopieren Sie den Wert von key1.Navigate into the storage account, select Access Keys, and copy the value of key1. Kopieren Sie auch den Namen des Speicherkontos.Also copy the name of the storage account.

  6. Öffnen Sie die Datei n-tier-windows-sqlao.json .Open the n-tier-windows-sqlao.json file.

  7. Suchen Sie in der Datei n-tier-windows-sqlao.json nach allen Vorkommen von [replace-with-password] und [replace-with-sql-password], und ersetzen Sie sie durch ein sicheres Kennwort.In the n-tier-windows-sqlao.json file, search for all instances of [replace-with-password] and [replace-with-sql-password] and replace them with a strong password.

    Hinweis

    Wenn Sie den Administratorbenutzernamen ändern, müssen Sie auch die extensions-Blöcke in der JSON-Datei aktualisieren.If you change the administrator user name, you must also update the extensions blocks in the JSON file.

  8. Suchen Sie in der Datei n-tier-windows-sqlao.json nach allen Vorkommen von [replace-with-storageaccountname] und [replace-with-storagekey], und ersetzen Sie sie durch die Werte aus Schritt 5.In the n-tier-windows-sqlao.json file, search for all instances of [replace-with-storageaccountname] and [replace-with-storagekey] and replace them with the values from step 5. Speichern Sie die Datei .Save the file.

  9. Führen Sie den folgenden Befehl aus, um SQL Server Always On zu konfigurieren.Run the following command to configure SQL Server Always On.

    azbb -s <your subscription_id> -g <resource_group_name> -l <location> -p n-tier-windows-sqlao.json --deploy
    

Nächste SchritteNext steps