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

Der NGINX Ingress Controller bietet zwei NGINX Ingress-Ressourcen, die TCP/UDP-Lastverteilung ermöglichen:

  • GlobalConfiguration-Ressourcen verwenden Clusteradministratoren in der Regel, um TCP/UDP-Ports (Listener) zu definieren, die DevOps-Teams zur Verfügung stehen. Beachten Sie, dass pro NGINX Ingress Controller-Bereitstellung nur eine GlobalConfiguration-Ressource möglich ist.
  • TransportServer-Ressourcen nutzen DevOps-Teams, um den TCP/UDP-Lastausgleich für ihre Anwendungen zu konfigurieren. Der NGINX Ingress Controller hört nur auf Ports, die der Administrator in der GlobalConfiguration-Ressource festgelegt hat. So vermeiden Sie Portkonflikte und gewährleisten zusätzlich, dass DevOps-Teams öffentlichen Diensten nur vorab durch den Administrator als sicher freigegebene Ports zugänglich machen.

Das folgende Diagramm zeigt einen typischen Anwendungsfall der Ressourcen GlobalConfiguration und TransportServer. In gc.yaml legt der Cluster-Administrator TCP- und UDP-Listener in einer GlobalConfiguration-Ressource fest. In ts.yaml nutzt ein DevOps-Ingenieur den TCP-Listener in einer TransportServer-Ressource, um den Datenverkehr zu einer MySQL-Bereitstellung zu leiten.

Topologiediagramm zum Anwendungsfall der GlobalConfiguration- und TransportServer-Ressourcen

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

Die Zeilen 6–8 der TransportServer-Ressource in ts.yaml beziehen sich auf den in gc.yaml definierten TCP-Listener mit dem Namen (mysql-tcp), und die Zeilen 9–14 legen die Routing-Regel fest, die den TCP-Verkehr an den Upstream mysql-db leitet.

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 konfigurieren Sie ähnlich; ein vollständiges Beispiel finden Sie unter Basic TCP/UDP Load Balancing im NGINX Ingress Controller-Repository auf GitHub. Erfahrene NGINX-Anwender erweitern die TransportServer-Ressource mit nativer NGINX-Konfiguration über den ConfigMap-Schlüssel stream-snippets, wie im Beispiel Support for TCP/UDP Load Balancing im Repository dargestellt.

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

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."