BLOG | NGINX

Lastenausgleich für TCP- und UDP-Verkehr in Kubernetes mit NGINX

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Amir Rawdat Miniaturbild
Amir Rawdat
Veröffentlicht am 07. Juni 2022

[ Herausgeber – Dieser Beitrag ist ein Auszug aus unserem umfassenden eBook „Verwaltung des Kubernetes-Verkehrs mit F5 NGINX“: Ein praktischer Leitfaden . Laden Sie es noch heute kostenlos herunter .]

Neben dem HTTP-Datenverkehr gleicht der NGINX Ingress Controller auch den TCP- und UDP-Datenverkehr aus, sodass Sie damit den Datenverkehr für eine breite Palette von Apps und Dienstprogrammen basierend auf diesen Protokollen verwalten können, darunter:

  • MySQL, LDAP und MQTT – TCP-basierte Apps, die von vielen gängigen Anwendungen verwendet werden
  • DNS, Syslog und RADIUS – UDP-basierte Dienstprogramme, die von Edge-Geräten und nicht-transaktionalen Anwendungen verwendet werden

Der TCP- und UDP-Lastausgleich mit NGINX Ingress Controller ist auch unter den folgenden Umständen eine effektive Lösung für die Verteilung des Netzwerkverkehrs auf Kubernetes-Anwendungen:

  • Sie verwenden End-to-End -Verschlüsselung (EE2E) und lassen die Ver- und Entschlüsselung von der Anwendung und nicht vom NGINX Ingress Controller durchführen.
  • Sie benötigen einen leistungsstarken Lastenausgleich für Anwendungen, die auf TCP oder UDP basieren
  • Sie möchten den Änderungsaufwand bei der Migration eines vorhandenen Netzwerk-Load Balancers (TCP/UDP) in eine Kubernetes-Umgebung minimieren

NGINX Ingress Controller verfügt über zwei NGINX Ingress-Ressourcen, die TCP/UDP-Lastausgleich unterstützen:

  • GlobalConfiguration- Ressourcen werden normalerweise von Cluster-Administratoren verwendet, um die TCP/UDP-Ports ( Listener ) anzugeben, die für die Verwendung durch DevOps-Teams verfügbar sind. Beachten Sie, dass jede Bereitstellung des NGINX Ingress Controllers nur eine GlobalConfiguration-Ressource haben kann.
  • TransportServer- Ressourcen werden normalerweise von DevOps-Teams verwendet, um den TCP/UDP-Lastausgleich für ihre Anwendungen zu konfigurieren. NGINX Ingress Controller hört nur auf Ports, die vom Administrator in der GlobalConfiguration-Ressource instanziiert wurden. Dies verhindert Konflikte zwischen Ports und bietet eine zusätzliche Sicherheitsebene, indem sichergestellt wird, dass DevOps-Teams öffentlichen externen Diensten nur die Ports zugänglich machen, die vom Administrator als sicher vorhergesagt wurden.

Das folgende Diagramm zeigt einen Beispielanwendungsfall für die Ressourcen GlobalConfiguration und TransportServer. In gc.yaml definiert der Cluster-Administrator TCP- und UDP-Listener in einer GlobalConfiguration-Ressource. In ts.yaml verweist ein DevOps-Ingenieur auf den TCP-Listener in einer TransportServer-Ressource, die den Datenverkehr an eine MySQL-Bereitstellung weiterleitet.

Topologiediagramm des Anwendungsfalls für GlobalConfiguration- und TransportServer-Ressourcen

Die Ressource „GlobalConfiguration“ in gc.yaml definiert zwei Listener: einen UDP-Listener auf Port 514 für die Verbindung mit einem Syslog-Dienst und einen TCP-Listener auf Port 5353 für die Verbindung mit einem MySQL-Dienst.

Die Zeilen 6–8 der TransportServer-Ressource in ts.yaml verweisen auf den TCP-Listener, der in gc.yaml mit Namen ( mysql-tcp ) definiert ist, und die Zeilen 9–14 definieren die Routing-Regel, die TCP-Verkehr an den Upstream von mysql-db sendet.

In diesem Beispiel verwendet ein DevOps-Ingenieur den MySQL-Client, um zu überprüfen, ob die Konfiguration funktioniert, was durch die Ausgabe mit der Liste der Tabellen in der Datenbank rawdata_content_schema innerhalb der MySQL-Bereitstellung bestätigt wird.

$ echo „TABELLEN ANZEIGEN“ | mysql –h <externe_IP_Adresse> -P <Anschluss> -u <Benutzer> –p Rohdateninhaltsschema Passwort eingeben: <Passwort>
Tabellen_im_Rohdateninhaltsschema
Autoren
Beiträge

TransportServer-Ressourcen für UDP-Verkehr werden ähnlich konfiguriert; ein vollständiges Beispiel finden Sie unter „Basic TCP/UDP Load Balancing“ im NGINX Ingress Controller-Repo auf GitHub. Fortgeschrittene NGINX-Benutzer können die TransportServer-Ressource mit einer nativen NGINX-Konfiguration erweitern, indem sie den ConfigMap-Schlüssel der Stream-Snippets verwenden, wie im Beispiel „Unterstützung für TCP/UDP-Lastausgleich“ im Repo gezeigt.

Weitere Informationen zu den Funktionen, die Sie in TransportServer-Ressourcen konfigurieren können, finden Sie in der NGINX Ingress Controller-Dokumentation .

Dieser Beitrag ist ein Auszug aus unserem umfassenden E-Book „ Verwaltung des Kubernetes-Verkehrs mit NGINX“: Ein praktischer Leitfaden . Laden Sie es noch heute kostenlos herunter .

Testen Sie den auf NGINX Plus basierenden NGINX Ingress Controller noch heute selbst in einer 30-tägigen kostenlosen Testversion oder kontaktieren Sie uns, um Ihre Anwendungsfälle zu besprechen .


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."