Bearbeiten

Azure Well-Architected Framework-Bewertung eines Azure-NAT-Gateways

Azure Application Gateway
Azure Virtual Network
Azure Private Link

Dieser Artikel enthält bewährte Methoden für ein Azure-NAT-Gateway. Der Leitfaden basiert auf den fünf Säulen der Architekturexzellenz: Kostenoptimierung, optimaler Betrieb, effiziente Leistung, Zuverlässigkeit und Sicherheit.

Dieser Artikel setzt voraus, dass Sie mit Azure NAT Gateway vertraut sind und sich mit den entsprechenden Features gut auskennen. Zur Auffrischung lesen Sie die vollständige Dokumentation von Azure NAT Gateway.

NAT steht für Netzwerkadressenübersetzung. Weitere Informationen finden Sie unter Einführung in die Netzwerkadressenübersetzung.

Kostenoptimierung

Der Zugriff auf PaaS-Dienste sollte über Azure Private Link-Dienstendpunkte (einschließlich Speicher) erfolgen, um die Verwendung eines NAT-Gateways zu vermeiden. Private Link und Dienstendpunkte erfordern keinen Durchlauf des NAT-Gateways für den Zugriff auf PaaS-Dienste. Dieser Ansatz reduziert die Gebühren pro GB verarbeiteter Daten, wenn die Kosten eines NAT-Gateways mit Private Link oder Dienstendpunkten verglichen werden. Es gibt zusätzliche Sicherheitsvorteile für die Verwendung von Private Link oder von Dienstendpunkten.

Leistungseffizienz

Jede NAT-Gatewayressource stellt einen Durchsatz von bis zu 50 GBit/s bereit. Zum Aufskalieren können Sie Ihre Bereitstellungen in mehrere Subnetze unterteilen und jedem Subnetz oder jeder Gruppe von Subnetzen ein NAT-Gateway zuweisen.

Jede öffentliche IP-Adresse des NAT-Gateways bietet 64.512 SNAT-Ports. Einem NAT-Gateway können bis zu 16 IP-Adressen zugewiesen werden. Die IP-Adressen können einzelne öffentliche Standard-IP-Adressen, das Präfix für öffentliche IP-Adressen oder beides sein. Für Verbindungen mit demselben Zielendpunkt kann das NAT-Gateway bis zu 50.000 gleichzeitige Datenflüsse für TCP bzw. UDP pro zugewiesener ausgehender IP-Adresse unterstützen. Lesen Sie den folgenden Abschnitt über die Übersetzung der Quellnetzwerkadresse (Source Network Address Translation, SNAT), um Einzelheiten zu erfahren. TCP steht für Transmission Control-Protokoll und UDP für User Datagram-Protokoll.

SNAT-Auslastung

  • Für NAT-Gatewayressourcen gilt ein standardmäßiges TCP-Leerlauftimeout von 4 Minuten, das auf bis zu 120 Minuten festgelegt werden kann. Wird diese Einstellung auf einen höheren Wert als den Standardwert festgelegt, werden Datenflüsse von NAT Gateway länger aufrechterhalten, was eine unnötige Belastung des SNAT-Portbestands zur Folge haben kann.
  • Atomische Anforderungen (eine Anforderung pro Verbindung) sind eine schlechte Entwurfsauswahl, da sie die Skalierung einschränken, die Leistung reduzieren und die Zuverlässigkeit verringern. Nutzen Sie stattdessen die Wiederverwendung von HTTP/S-Verbindungen, um die Anzahl von Verbindungen und zugeordneten SNAT-Ports zu reduzieren. Durch die Wiederverwendung von Verbindungen kann die Anwendung besser skaliert werden. Die Anwendungsleistung wird verbessert, da Handshakes, Mehraufwand und Kosten für kryptografische Vorgänge reduziert werden, wenn TLS verwendet wird.
  • Per DNS-Lookups (Domain Name System) können viele einzelne Datenflüsse mit großen Datenmengen genutzt werden, wenn der Client das Ergebnis der DNS-Auflösung nicht zwischenspeichert. Verwenden Sie die DNS-Zwischenspeicherung, um die Menge der Datenflüsse und die Anzahl der SNAT-Ports zu reduzieren. DNS ist das Benennungssystem, das Domain-Namen IP-Adressen zuordnet, für die Ressourcen, die mit dem Internet oder einem privaten Netzwerk verbunden sind.
  • UDP-Datenflüsse, z. B. DNS-Lookups, verwenden SNAT-Ports während des Leerlauftimeouts. Der Timer für das UDP-Leerlauftimeout ist auf vier Minuten festgelegt und kann nicht geändert werden.
  • Nutzen Sie Verbindungspools, um Ihre Verbindungsdatenmenge zu steuern.
  • Vermeiden Sie den Abbruch eines TCP-Datenflusses im Hintergrund, und verlassen Sie sich nicht darauf, dass dies über TCP-Timer bereinigt wird. Wenn Sie TCP die Verbindung nicht explizit schließen lassen, bleibt die TCP-Verbindung offen. Zwischensysteme und Endpunkte verwenden diese Verbindung weiterhin, wodurch der SNAT-Port für andere Verbindungen nicht mehr verfügbar ist. Dieses Antimuster kann zu einer Auslösung von Anwendungsausfällen und zu einer SNAT-Überlastung führen.
  • Ändern Sie Timerwerte für die TCP-Verbindungstrennung auf der Betriebssystemebene nur, wenn Sie mit den Auswirkungen vertraut sind, die sich dadurch ergeben. Der TCP-Stapel wird zwar wiederhergestellt, aber Ihre Anwendungsleistung kann beeinträchtigt werden, wenn für die Endpunkte einer Verbindung unterschiedliche Erwartungen bestehen. Das Ändern von Timerwerten ist in der Regel ein Zeichen für ein zugrunde liegendes Entwurfsproblem. Wenn die zugrunde liegende Anwendung über andere Antimuster verfügt, kann die SNAT-Auslastung auch verstärkt werden, wenn die Timerwerte geändert werden.

Lesen Sie den folgenden Leitfaden, um die Skalierung und Zuverlässigkeit Ihres Diensts zu verbessern:

  • Untersuchen Sie die Auswirkungen der Reduzierung des TCP-Leerlauftimeouts auf niedrigere Werte. Ein standardmäßiger Leerlauftimeout von vier Minuten kann den SNAT-Portbestand früher freigeben.
  • Erwägen Sie die Nutzung von asynchronen Abrufmustern für zeitintensive Vorgänge, um Ihre Verbindungsressourcen für andere Vorgänge freizuhalten.
  • Langlebige Datenflüsse, z. B. wiederverwendete TCP-Verbindungen, sollten TCP-Keep-Alives oder Keep-Alives auf Anwendungsebene verwenden, um ein Timeout für Zwischensysteme zu vermeiden. Sie sollten das Leerlauftimeout nur als letzten Ausweg erhöhen, da dies die Ursache möglicherweise nicht behebt. Eine lange Timeoutdauer kann zu einer geringen Ausfallrate führen, wenn der Timeoutzeitraum abgelaufen ist, und mit Verzögerungen und unnötigen Fehlern verbunden sein. TCP-Keep-Alives können von einer Seite der Verbindung aktiviert werden, damit eine Verbindung von beiden Seiten erhalten bleibt.
  • Für langlebige Datenflüsse mit UDP-Datenverkehr können Sie UDP-Keep-Alives aktivieren, um Verbindungen aufrecht zu halten. Denken Sie daran, dass UDP-Keep-Alives, die auf einer Seite der aktiviert wurden, die Verbindung nur von einer Seite aktiv halten. TCP-Keep-Alives müssen auf beiden Seiten einer Verbindung aktiviert werden, damit eine Verbindung erhalten bleibt.
  • Es sollten ordnungsgemäße Wiederholungsmuster verwendet werden, um bei vorübergehenden Fehlern oder der Wiederherstellung nach Fehlern aggressive Wiederholungsversuche oder Bursts zu vermeiden. Ein Antimuster, auch als atomische Verbindungen bezeichnet, besteht darin, dass für jeden HTTP-Vorgang eine neue TCP-Verbindung erstellt wird. Mit atomischen Verbindungen wird verhindert, dass für Ihre Anwendung eine gute Skalierung erzielt wird, und es werden Ressourcen verschwendet. Fassen Sie immer mehrere Vorgänge per Pipeline in derselben Verbindung zusammen. Ihre Anwendung profitiert von der Transaktionsgeschwindigkeit und den Ressourcenkosten. Wenn Ihre Anwendung die Verschlüsselung auf der Transportschicht nutzt (z. B. TLS), ist die Verarbeitung neuer Verbindungen mit erheblichen Kosten verbunden. Informationen zu weiteren bewährten Mustern finden Sie unter Azure-Cloudentwurfsmuster.

Optimaler Betrieb

Obwohl das NAT-Gateway mit Azure Kubernetes Service (AKS) verwendet werden kann, wird es nicht als Teil von AKS verwaltet. Wenn Sie dem CNI-Subnetz (Container Networking Interface) ein NAT-Gateway zuweisen, ermöglichen Sie AKS-Pods den Ausgang über das NAT-Gateway.

Wenn Sie mehrere NAT-Gateways zonen- oder regionenübergreifend verwenden, halten Sie den ausgehenden IP-Bestand überschaubar, indem Sie öffentliche Azure-IP-Präfixe oder BYOIP-Präfixe verwenden. Eine IP-Präfixgröße von mehr als 16 IP-Adressen (/28-Präfixgröße) kann dem NAT-Gateway nicht zugewiesen werden.

Verwenden Sie Azure Monitor-Warnungen, um die SNAT-Portnutzung, verarbeitete oder verworfene Pakete sowie die übertragene Datenmenge zu überwachen und entsprechende Warnungen zu erhalten. Verwenden Sie NSG-Datenflussprotokolle, um den ausgehenden Datenverkehrsfluss von VM-Instanzen in einem mit NAT-Gateway konfigurierten Subnetz zu überwachen.

Wenn ein Subnetz mit einem NAT-Gateway konfiguriert ist, ersetzt das NAT-Gateway alle anderen ausgehenden Verbindungen mit dem öffentlichen Internet für alle VMs in diesem Subnetz. Das NAT-Gateway hat Vorrang vor einem Lastenausgleich mit oder ohne Ausgangsregeln und vor öffentlichen IP-Adressen, die VMs direkt zugewiesen sind. Azure verfolgt die Richtung eines Datenflusses und es erfolgt kein asymmetrisches Routing. Eingehender ursprünglicher Datenverkehr wird ordnungsgemäß übersetzt, z. B. eine Front-End-IP-Adresse des Lastenausgleichs, und er wird getrennt vom ausgehenden ursprünglichen Datenverkehr über ein NAT-Gateway übersetzt. Durch diese Trennung können eingehende und ausgehende Dienste problemlos nebeneinander bestehen.

Das NAT-Gateway wird als Standard für die Aktivierung der ausgehenden Konnektivität für virtuelle Netzwerke empfohlen. Das NAT-Gateway ist effizienter und betrieblich weniger komplex als andere Techniken für ausgehende Konnektivität in Azure. NAT-Gateways weisen SNAT-Ports nach Bedarf zu und verwenden einen effizienteren Algorithmus, um Konflikte bei der Wiederverwendung von SNAT-Ports zu vermeiden. Verlassen Sie sich nicht auf die standardmäßige ausgehende Konnektivität (ein Antimuster) für Ihren Bestand. Definieren Sie ihn stattdessen explizit mit NAT-Gatewayressourcen.

Zuverlässigkeit

NAT-Gatewayressourcen sind in einer Verfügbarkeitszone hochverfügbar und umfassen mehrere Fehlerdomänen. Ein NAT-Gateway kann mit der Einstellung „Keine Zone“ bereitgestellt werden. In diesem Fall wählt Azure automatisch eine Zone zum Platzieren des NAT-Gateways aus. NAT-Gateways können vom Benutzer auch in einer bestimmten Zone isoliert werden.

Verfügbarkeitszonenisolation kann nicht bereitgestellt werden, es sei denn, jedes Subnetz verfügt nur über Ressourcen innerhalb einer bestimmten Zone. Stellen Sie stattdessen ein Subnetz für jede der Verfügbarkeitszonen, in denen VMs bereitgestellt werden, die zonalen VMs an entsprechenden zonalen NAT-Gateways bereit, und erstellen Sie separate zonale Stapel. Ein virtueller Computer in Verfügbarkeitszone 1 befindet sich z. B. in einem Subnetz mit anderen Ressourcen, die sich ebenfalls nur in Verfügbarkeitszone 1 befinden. Ein NAT-Gateway wird in Verfügbarkeitszone 1 konfiguriert, um dieses Subnetz zu bedienen. Sehen Sie sich das folgende Diagramm an.

Diagramm, das den direktionalen Datenfluss eines zonalen Stapels veranschaulicht.

Virtuelle Netzwerke und Subnetze umfassen alle Verfügbarkeitszonen in einer Region. Sie müssen sie nicht durch Verfügbarkeitszonen unterteilen, um zonale Ressourcen aufnehmen zu können.

Sicherheit

Bei der Verwendung eines NAT-Gateways benötigen einzelne VMs (oder andere Computeressourcen) keine öffentlichen IP-Adressen und können vollständig privat bleiben. Ressourcen ohne öffentliche IP-Adresse können weiterhin externe Quellen außerhalb des virtuellen Netzwerks erreichen. Sie können ein Präfix für öffentliche IP-Adressen zuordnen, um sicherzustellen, dass ein zusammenhängender Satz von IP-Adressen für ausgehende Konnektivität verwendet wird. Basierend auf dieser vorhersagbaren IP-Adressliste können Zielfirewallregeln konfiguriert werden.

Ein gängiger Ansatz besteht darin, ein Szenario mit einem virtuellen Netzwerkgerät (Network Virtual Appliance, NVA), das nur über ausgehenden Datenverkehr verfügt, mit Firewalls von Drittanbietern oder mit Proxyservern zu entwerfen. Wenn ein NAT-Gateway in einem Subnetz mit einer VM-Skalierungsgruppe von virtuellen Netzwerkgeräten bereitgestellt wird, verwenden diese virtuellen Netzwerkgeräte die NAT-Gatewayadresse(n) für die ausgehende Konnektivität und nicht die IP-Adresse eines Lastenausgleichs oder die einzelnen IP-Adressen. Informationen zum Verwenden dieses Szenarios mit Azure Firewall finden Sie unter Integrieren von Azure Firewall mit Azure Load Balancer Standard.

Diagramm: Firewalls mit Load Balancer-Sandwich und NAT-Gateway

Microsoft Defender for Cloud kann verdächtige ausgehende Verbindungen über ein NAT-Gateway überwachen. Dies ist ein Warnungsfeature in Microsoft Defender for Cloud.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte