Bearbeiten

Freigeben über


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

Azure Application Gateway
Azure Virtual Network
Azure Private Link

Dieser Artikel beschreibt bewährte Methoden für ein Azure NAT Gateway. Der Leitfaden basiert auf den fünf Säulen einer hervorragenden Architektur: Kostenoptimierung, optimaler Betrieb, effiziente Leistung, Zuverlässigkeit und Sicherheit.

In diesem Leitfaden wird vorausgesetzt, dass Sie über ausreichende praktische Kenntnisse in Bezug auf das Azure NAT Gateway verfügen und die entsprechenden Funktionen verstehen. Weitere Informationen finden Sie in der Dokumentation zum Azure NAT Gateway.

Kostenoptimierung

Konfigurieren Sie den Zugriff auf Plattform as a Service (PaaS)-Lösungen über Azure Private Link oder Dienstendpunkte, einschließlich Speicher, sodass Sie kein NAT Gateway verwenden müssen. Private Link und Dienstendpunkte erfordern kein Durchlaufen des NAT Gateways für den Zugriff auf PaaS-Dienste. Dieser Ansatz senkt die Kosten pro Gigabyte (GB) verarbeiteter Daten im Vergleich zu den Kosten bei Verwendung eines NAT Gateways. Private Link und Dienstendpunkte bieten auch Sicherheitsvorteile.

Effiziente Leistung

Jede NAT Gatewayressource stellt einen Durchsatz von bis zu 50 Gigabit pro Sekunde (GBit/s) bereit. Zur horizontalen Skalierung 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 (Source Network Address Translation). Sie können einem NAT Gateway bis zu 16 IP-Adressen zuweisen, einschließlich einzelner öffentlicher Standard-IP-Adressen und/oder des Präfixes für öffentliche IP-Adressen. Für jede zugewiesene ausgehende IP-Adresse, die an denselben Zielendpunkt geht, kann das NAT Gateway bis zu 50.000 gleichzeitige Datenflüsse für TCP (Transmission Control Protocol) bzw. UDP (User Datagram Protocol) unterstützen.

SNAT-Auslastung

Beachten Sie die folgenden Hinweise, um eine SNAT-Überlastung zu verhindern:

  • Das TCP-Leerlauftimeout von NAT Gatewayressourcen ist standardmäßig auf vier Minuten festgelegt. Sie können das Timeout auf bis zu 120 Minuten konfigurieren. Wenn Sie diese Einstellung ändern und einen höheren Wert als den Standardwert festlegen, werden Datenflüsse vom NAT Gateway länger aufrechterhalten, was eine unnötige Belastung des SNAT-Portbestands zur Folge haben kann.

  • Atomische Anforderungen (eine Anforderung pro Verbindung) schränken die Skalierung ein, reduzieren die Leistung und verringern die Zuverlässigkeit. Anstelle von atomischen Anforderungen können Sie HTTP- oder HTTPS-Verbindungen wiederverwenden, um die Anzahl der Verbindungen und der zugehörigen SNAT-Ports zu reduzieren. Wenn Sie Verbindungen wiederverwenden, kann die Anwendung besser skalieren. Die Anwendungsleistung verbessert sich, da Handshakes, Mehraufwand und Kosten für kryptografische Vorgänge reduziert werden, wenn Transport Layer Security (TLS) verwendet wird.

  • Wenn Sie die Ergebnisse des DNS-Resolvers nicht zwischenspeichern, können DNS-Lookups (Domain Name System) zu vielen einzelnen Datenflüssen mit großen Datenmengen führen. Verwenden Sie die DNS-Zwischenspeicherung, um die Menge der Datenflüsse und die Anzahl der SNAT-Ports zu reduzieren. DNS ist das Benennungssystem, das Domänennamen 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 Selbstauslöser für das UDP-Leerlauftimeout ist auf vier Minuten festgelegt.

  • Nutzen Sie Verbindungspools, um Ihre Verbindungsdatenmenge zu steuern.

  • Zur Bereinigung von Datenflüssen sollten Sie den Abbruch von TCP-Datenflüssen im Hintergrund vermeiden und sich nicht auf TCP-Selbstauslöser verlassen. Wenn Sie TCP eine Verbindung nicht explizit schließen lassen, bleibt die TCP-Verbindung offen. Zwischensysteme und Endpunkte verwenden diese Verbindung weiterhin, weshalb der SNAT-Port nicht für andere Verbindungen verfügbar ist. Dieses Antimuster kann Anwendungsausfälle auslösen und zu einer SNAT-Überlastung führen.

  • Ändern Sie keine Selbstauslöserwerte für die TCP-Verbindungstrennung auf Betriebssystemebene, es sei denn, Sie sind mit den Auswirkungen vertraut. Wenn für die Endpunkte einer Verbindung unterschiedliche Erwartungen bestehen, kann der TCP-Stapel zwar wiederhergestellt werden, die Anwendungsleistung kann jedoch beeinträchtigt werden. In der Regel liegt ein zugrunde liegendes Entwurfsproblem vor, wenn Sie Selbstauslöserwerte ändern müssen. Wenn die zugrunde liegende Anwendung über andere Antimuster verfügt und Sie Selbstauslöserwerte ändern, könnte es dadurch auch schneller zu einer SNAT-Überlastung kommen.

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

  • Bedenken Sie die Auswirkungen einer Reduzierung des TCP-Leerlauftimeouts auf einen niedrigeren Wert. Bei einem standardmäßigen Leerlauftimeout von vier Minuten kann SNAT-Portbestand präventiv freigegeben werden.

  • Erwägen Sie die Nutzung von asynchronen Abrufmustern für zeitintensive Vorgänge, um Ihre Verbindungsressourcen für andere Vorgänge freizuhalten.

  • Ziehen Sie die Verwendung von TCP-Keep-Alives oder Keep-Alives auf Anwendungsebene für langlebige TCP-Datenflüsse wie z. B. wiederverwendete TCP-Verbindungen in Betracht, um ein Timeout der Zwischensysteme zu vermeiden. Sie sollten das Leerlauftimeout nur als letzten Ausweg erhöhen, da dies die Ursache möglicherweise nicht behebt. Ein langes Timeout kann zu einer geringen Ausfallrate führen, wenn das Timeout abläuft. Es kann auch mit Verzögerungen und unnötigen Fehlern verbunden sein. Sie können TCP-Keep-Alives von einer Seite einer Verbindung aus aktivieren, um eine Verbindung von beiden Seiten zu erhalten.

  • Erwägen Sie die Verwendung von UDP-Keep-Alives für langlebige UDP-Datenflüsse, um ein Timeout der Zwischensysteme zu vermeiden. Wenn Sie UDP-Keep-Alives auf einer Seite der Verbindung aktivieren, bleibt nur eine Seite der Verbindung aktiv. Sie müssen UDP-Keep-Alives auf beiden Seiten einer Verbindung aktivieren, damit die Verbindung erhalten bleibt.

  • Ziehen Sie die Verwendung von ordnungsgemäßen Wiederholungsmustern in Betracht, um bei vorübergehenden Fehlern oder der Wiederherstellung nach Fehlern aggressive Wiederholungsversuche und Bursts zu vermeiden. Für das Antimuster atomische Verbindungen erstellen Sie eine neue TCP-Verbindung für jeden HTTP-Vorgang. Atomische Verbindungen bedeuten eine Ressourcenverschwendung und verhindern eine gute Skalierung Ihrer Anwendung.

    Um die Transaktionsgeschwindigkeit zu erhöhen und die Ressourcenkosten für Ihre Anwendung zu verringern, sollten Sie immer mehrere Vorgänge in dieselbe Verbindung leiten. Wenn Ihre Anwendung eine Verschlüsselung auf Transportebene wie z. B. TLS verwendet, ist die Verarbeitung neuer Verbindungen mit höheren Kosten verbunden. Weitere bewährte Muster finden Sie unter Azure-Cloudentwurfsmuster.

Optimaler Betrieb

Sie können ein NAT Gateway mit Azure Kubernetes Service (AKS) verwenden, die Verwaltung des NAT Gateways ist jedoch nicht in AKS enthalten. 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 regionsübergreifend verwenden, halten Sie den ausgehenden IP-Bestand überschaubar, indem Sie öffentliche Azure-IP-Präfixe oder BYOIP-Präfixe (Bring-your-own IP) verwenden. Sie können einem NAT Gateway keine IP-Präfixgröße von mehr als 16 IP-Adressen (Präfixgröße /28) zuweisen.

Verwenden Sie Azure Monitor-Warnungen, um die SNAT-Portnutzung, verarbeitete oder verworfene Pakete sowie die Menge der übertragenen Daten zu überwachen und entsprechende Warnungen zu erhalten. Verwenden Sie NSG-Datenflussprotokolle (NSG = Network Security Group, Netzwerksicherheitsgruppe), um den ausgehenden Datenverkehrsfluss von VM-Instanzen in einem mit NAT Gateway konfigurierten Subnetz zu überwachen.

Wenn Sie ein Subnetz mit einem NAT Gateway konfigurieren, ersetzt das NAT Gateway alle anderen ausgehenden Verbindungen mit dem öffentlichen Internet für alle VMs in diesem Subnetz. Das NAT Gateway hat, unabhängig von den Ausgangsregeln, Vorrang vor einem Load Balancer. Das Gateway hat auch Vorrang vor öffentlichen IP-Adressen, die VMs direkt zugewiesen sind. Azure verfolgt die Richtung eines Datenflusses und verhindert ein asymmetrisches Routing. Eingehender Datenverkehr, z. B. eine Load Balancer-Front-End-IP-Adresse, wird ordnungsgemäß übersetzt, und zwar getrennt vom ausgehenden Datenverkehr über ein NAT Gateway. Durch diese Trennung können eingehende und ausgehende Dienste problemlos nebeneinander bestehen.

Wir empfehlen die Verwendung eines NAT Gateways als Standard, um ausgehende Konnektivität für virtuelle Netzwerke zu ermöglichen. Ein NAT Gateway bietet Effizienz und einen einfachen Betrieb im Vergleich zu anderen 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 das Antimuster standardmäßige ausgehende Konnektivität für Ihren Bestand. Definieren Sie Ihre Konfiguration vielmehr explizit mit NAT Gatewayressourcen.

Zuverlässigkeit

NAT-Gatewayressourcen sind in einer Verfügbarkeitszone hochverfügbar und umfassen mehrere Fehlerdomänen. Sie können ein NAT Gateway in einer No Zone bereitstellen, in der Azure automatisch eine Zone auswählt, um das NAT Gateway zu platzieren, oder das NAT Gateway in einer bestimmten Verfügbarkeitszone isoliert.

Um eine Isolierung von Verfügbarkeitszonen zu bieten, darf jedes Subnetz nur über Ressourcen innerhalb einer bestimmten Zone verfügen. Zur Umsetzung dieses Ansatzes können Sie folgende Maßnahmen ergreifen:

  • Ein Subnetz für jede der Verfügbarkeitszonen bereitstellen, in denen VMs bereitgestellt werden.
  • Die zonalen VMs mit übereinstimmenden zonalen NAT Gateways ausrichten.
  • Separate Zonenstapel erstellen.

Im folgenden Diagramm befindet sich eine VM in Verfügbarkeitszone 1 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.

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

Mit einem NAT Gateway 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 Sie einen zusammenhängenden Satz von IP-Adressen für ausgehende Konnektivität verwenden. Sie können Zielfirewallregeln basierend auf dieser vorhersagbaren IP-Liste konfigurieren.

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 Nicht-Microsoft-Firewalls oder mit Proxyservern zu entwerfen. Wenn Sie ein NAT Gateway in einem Subnetz mit einer VM-Skalierungsgruppe von NVAs bereitstellen, verwenden diese NVAs eine oder mehrere NAT Gatewayadresse(n) für ausgehende Konnektivität anstelle einer Load Balancer-IP-Adresse oder der einzelnen IP-Adressen. Informationen zur Verwendung 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

Mit der Warnfunktion in Microsoft Defender for Cloud können Sie eine Überwachung auf verdächtige ausgehende Verbindungen in einem NAT Gateway vornehmen.

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