Azure Well-Architected Framework-beoordeling van een Azure NAT-gateway

Azure Application Gateway
Azure Virtual Network
Azure Private Link

Dit artikel bevat aanbevolen procedures voor een Azure NAT-gateway. De richtlijnen zijn gebaseerd op de vijf pijlers van uitstekende architectuur: Kostenoptimalisatie, Operational Excellence, Performance Efficiency, Betrouwbaarheid en Beveiliging.

We gaan ervan uit dat u een werkende kennis van Azure NAT Gateway hebt en dat u vertrouwd bent met de respectieve functies. Als vernieuwingsfunctie bekijkt u de volledige set Documentatie voor Azure NAT Gateway.

NAT staat voor netwerkadresomzetting. Zie Een inleiding tot Network Address Translation.

Kostenoptimalisatie

Toegang tot PaaS-services moet zijn via Azure Private Link of service-eindpunten (inclusief opslag), om te voorkomen dat een NAT-gateway wordt gebruikt. Voor Private Link en service-eindpunten is geen doorkruising van de NAT-gateway vereist voor toegang tot PaaS-services. Deze benadering vermindert de kosten per GB aan verwerkte gegevens, wanneer u de kosten van een NAT-gateway vergelijkt met Private Link of service-eindpunten. Er zijn extra beveiligingsvoordelen voor het gebruik van Private Link of service-eindpunten.

Prestatie-efficiëntie

Elke NAT-gatewayresource biedt maximaal 50 Gbps aan doorvoer. U kunt uw implementaties splitsen in meerdere subnetten en vervolgens kunt u elk subnet of elke groep subnetten een NAT-gateway toewijzen om uit te schalen.

Elk openbaar IP-adres van NAT-gateway biedt 64.512 SNAT-poorten. Maximaal 16 IP-adressen kunnen worden toegewezen aan een NAT-gateway. De IP-adressen kunnen afzonderlijke openbare Standaard-IP-adressen, het openbare IP-voorvoegsel of beide zijn. Voor verbindingen die naar hetzelfde doeleindpunt gaan, kan nat-gateway maximaal 50.000 gelijktijdige stromen voor TCP en UDP ondersteunen, respectievelijk per toegewezen uitgaand IP-adres. Raadpleeg de volgende sectie over Source Network Address Translation (SNAT) voor meer informatie. TCP staat voor Transmission Control Protocol en UDP staat voor User Datagram Protocol.

SNAT-uitputting

  • NAT-gatewayresources hebben een standaard time-out voor TCP-inactiviteit van 4 minuten die maximaal 120 minuten kunnen worden geconfigureerd. Als deze instelling wordt gewijzigd in een hogere waarde dan de standaardwaarde, wordt de NAT-gateway langer op stromen vastgezet en kan dit onnodige druk veroorzaken op SNAT-poortinventaris.
  • Atomische aanvragen (één aanvraag per verbinding) zijn een slechte ontwerpkeuze, omdat het schaal beperkt, de prestaties vermindert en de betrouwbaarheid vermindert. Gebruik in plaats daarvan HTTP/S-verbindingen opnieuw om het aantal verbindingen en de bijbehorende SNAT-poorten te verminderen. Verbinding maken hergebruik kan de toepassing beter worden geschaald. De prestaties van toepassingen worden verbeterd, vanwege verminderde handshakes, overhead en cryptografische bewerkingskosten bij het gebruik van TLS.
  • Dns-zoekacties (Domain Name System) kunnen veel afzonderlijke stromen op volume introduceren wanneer de client het resultaat van de DNS-resolvers niet in de cache opsneert. Gebruik DNS-caching om het volume van stromen te verminderen en het aantal SNAT-poorten te verminderen. DNS is het naamgevingssysteem waarmee domeinnamen worden toegewezen aan IP-adressen voor resources die zijn verbonden met internet of met een particulier netwerk.
  • UDP-stromen, zoals DNS-zoekopdrachten, gebruiken SNAT-poorten tijdens de time-out voor inactiviteit. De time-outtimer voor inactiviteit van de UDP is opgelost op 4 minuten en kan niet worden gewijzigd.
  • Gebruik verbindingspools om vorm te geven aan het volume van uw verbindingen.
  • Verlaat nooit zo maar een TCP-stroom en maak gebruik van TCP-timers om de stroom op te schonen. Als u TCP de verbinding niet expliciet laat sluiten, blijft de TCP-verbinding geopend. Tussenliggende systemen en eindpunten houden deze verbinding in gebruik, waardoor de SNAT-poort op zijn beurt niet beschikbaar is voor andere verbindingen. Dit antipatroon kan toepassingsfouten en SNAT-uitputting activeren.
  • Wijzig geen TCP-gerelateerde timerwaarden op besturingssysteemniveau, zonder deskundige kennis van de implicaties. Hoewel de TCP-stack wordt hersteld, kunnen de prestaties van uw toepassing negatief worden beïnvloed wanneer de eindpunten van een verbinding niet overeenkomen met de verwachtingen. Het wijzigen van timerwaarden is meestal een teken van een onderliggend ontwerpprobleem. Als de onderliggende toepassing andere antipatronen heeft, kan SNAT-uitputting ook worden versterkt als de timerwaarden worden gewijzigd.

Bekijk de volgende richtlijnen om de schaal en betrouwbaarheid van uw service te verbeteren:

  • Bekijk het effect van het verminderen van de time-out voor inactiviteit van TCP tot lagere waarden. Een standaard time-out voor inactiviteit van 4 minuten kan eerder SNAT-poortinventaris vrijmaken.
  • Overweeg asynchrone pollingpatronen voor langlopende bewerkingen om uw verbindingsresources vrij te maken voor andere bewerkingen.
  • Langdurige stromen, zoals hergebruikte TCP-verbindingen, moeten TCP-keepalives of keepalives in de toepassingslaag gebruiken om time-out van tussenliggende systemen te voorkomen. U moet alleen de time-out voor inactiviteit verhogen als laatste redmiddel en de hoofdoorzaak wordt mogelijk niet opgelost. Een lange time-out kan fouten met een lage snelheid veroorzaken, wanneer de time-out verloopt en kan leiden tot een vertraging en onnodige fouten. TCP-keepalives kunnen vanaf één zijde van de verbinding worden ingeschakeld om een verbinding van beide zijden actief te houden.
  • Voor langdurige stromen met UDP-verkeer kunt u UDP-keepalives inschakelen om verbindingen actief te houden. Houd er rekening mee dat UDP-keepalives aan één zijde van de verbinding alleen actief blijven vanaf de ene zijde. UDP-keepalives moeten aan beide zijden van een verbinding zijn ingeschakeld om een verbinding actief te houden.
  • Er moeten goede patronen voor nieuwe pogingen worden gebruikt om agressieve nieuwe pogingen/bursts te voorkomen tijdens een tijdelijke storing of herstel na storingen. Een antipatroon, atomische verbindingen genoemd, is wanneer u voor elke HTTP-bewerking een nieuwe TCP-verbinding maakt. Atomische verbindingen verhinderen dat uw toepassing goed kan worden geschaald en er worden resources verspild. Voeg altijd meerdere bewerkingen samen in een pijplijn in dezelfde verbinding. Uw app zal er voordeel bij hebben qua transactiesnelheid en resourcekosten. Wanneer uw toepassing transportlaagversleuteling (bijvoorbeeld TLS) gebruikt, zijn er aanzienlijke kosten verbonden aan de verwerking van nieuwe verbindingen. Zie Azure Cloud Design Patterns voor meer best practice patronen.

Operationele uitmuntendheid

Hoewel de NAT-gateway kan worden gebruikt met Azure Kubernetes Service (AKS), wordt deze niet beheerd als onderdeel van AKS. Als u een NAT-gateway toewijst aan het CNI-subnet (Container Networking Interface), schakelt u AKS-pods in voor uitgaand verkeer via de NAT-gateway.

Wanneer u meerdere NAT-gateways in zones of in verschillende regio's gebruikt, houdt u het uitgaande IP-domein beheerbaar met behulp van openbare IP-voorvoegsels of BYOIP-voorvoegsels van Azure. Een IP-voorvoegselgrootte die groter is dan 16 IP-adressen (/28 voorvoegselgrootte) kan niet worden toegewezen aan de NAT-gateway.

Gebruik Azure Monitor-waarschuwingen om het gebruik van SNAT-poorten, verwerkte of verwijderde pakketten en de hoeveelheid verzonden gegevens te bewaken en te waarschuwen. Gebruik NSG-stroomlogboeken om de uitgaande verkeersstroom van exemplaren van virtuele machines in een geconfigureerd subnet van een NAT-gateway te bewaken.

Wanneer een subnet is geconfigureerd met een NAT-gateway, vervangt de NAT-gateway alle andere uitgaande connectiviteit met het openbare internet voor alle VIRTUELE machines op dat subnet. Nat-gateway heeft voorrang op een load balancer met of zonder uitgaande regels en via openbare IP-adressen die rechtstreeks aan VM's zijn toegewezen. Azure houdt de richting van een stroom bij en asymmetrische routering vindt niet plaats. Binnenkomend verkeer wordt correct vertaald, zoals een front-end-IP van een load balancer, en het wordt afzonderlijk vertaald van uitgaand verkeer via een NAT-gateway. Dankzij deze scheiding kunnen binnenkomende en uitgaande services naadloos naast elkaar bestaan.

NAT-gateway wordt aanbevolen als de standaardinstelling voor het inschakelen van uitgaande connectiviteit voor virtuele netwerken. NAT-gateway is efficiënter en minder operationeel complex dan andere uitgaande connectiviteitstechnieken in Azure. NAT-gateways wijzen SNAT-poorten on-demand toe en gebruiken een efficiënter algoritme om conflicten met het hergebruik van SNAT-poorten te voorkomen. Vertrouw niet op standaard uitgaande connectiviteit (een antipatroon) voor uw estate. Definieer deze in plaats daarvan expliciet met NAT-gatewaybronnen.

Betrouwbaarheid

NAT-gatewaybronnen zijn maximaal beschikbaar in één beschikbaarheidszone en omvatten meerdere foutdomeinen. NAT-gateway kan worden geïmplementeerd in 'geen zone' waarin Azure automatisch een zone selecteert om een NAT-gateway te plaatsen. NAT-gateway kan ook worden geïsoleerd naar een specifieke zone door een gebruiker.

Isolatie van beschikbaarheidszones kan niet worden opgegeven, tenzij elk subnet alleen resources binnen een specifieke zone heeft. Implementeer in plaats daarvan een subnet voor elk van de beschikbaarheidszones waar VM's worden geïmplementeerd, lijn de zonegebonden VM's uit met overeenkomende zonegebonden NAT-gateways en bouw afzonderlijke zonegebonden stacks. Een virtuele machine in beschikbaarheidszone 1 bevindt zich bijvoorbeeld op een subnet met andere resources die zich ook alleen in beschikbaarheidszone 1 bevinden. Een NAT-gateway is geconfigureerd in beschikbaarheidszone 1 om dat subnet te bedienen. Zie het volgende diagram.

Diagram dat de richtingsstroom van een zonegebonden stack laat zien.

Virtuele netwerken en subnetten omvatten alle beschikbaarheidszones in een regio. U hoeft ze niet te verdelen door beschikbaarheidszones om ruimte te bieden aan zonegebonden resources.

Beveiliging

Met NAT-gateway hebben afzonderlijke virtuele machines (of andere rekenresources) geen openbare IP-adressen nodig en kunnen ze volledig privé blijven. Resources zonder een openbaar IP-adres kunnen nog steeds externe bronnen buiten het virtuele netwerk bereiken. U kunt een openbaar IP-voorvoegsel koppelen om ervoor te zorgen dat een aaneengesloten set IP-adressen wordt gebruikt voor uitgaande connectiviteit. Doelfirewallregels kunnen worden geconfigureerd op basis van deze voorspelbare IP-lijst.

Een veelvoorkomende benadering is het ontwerpen van een nvA-scenario (outbound-only network virtual appliance) met firewalls van derden of met proxyservers. Wanneer een NAT-gateway wordt geïmplementeerd in een subnet met een virtuele-machineschaalset met NVA's, gebruiken deze NVA's het NAT-gatewayadres(en) voor uitgaande connectiviteit, in plaats van het IP-adres van een load balancer of de afzonderlijke IP-adressen. Zie Azure Firewall integreren met Azure Standard Load Balancer als u dit scenario wilt gebruiken met Azure Firewall.

Diagram met firewalls met een load balancer sandwich en NAT-gateway.

Microsoft Defender voor Cloud kan controleren op verdachte uitgaande connectiviteit via een NAT-gateway. Dit is een waarschuwingsfunctie in Microsoft Defender voor Cloud.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Hoofdauteur:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen