BLOG | NGINX

Équilibrage de charge du trafic TCP et UDP dans Kubernetes avec NGINX

NGINX-Partie-de-F5-horiz-black-type-RGB
Miniature d'Amir Rawdat
Amir Rawdat
Publié le 07 juin 2022

[ Editeur – Cet article est un extrait de notre eBook complet, Managing Kubernetes Traffic with F5 NGINX : Un guide pratique . [Téléchargez-le gratuitement dès aujourd'hui .]

Outre le trafic HTTP, NGINX Ingress Controller équilibre la charge du trafic TCP et UDP, ce qui vous permet de l'utiliser pour gérer le trafic d'une large gamme d'applications et d'utilitaires basés sur ces protocoles, notamment :

  • MySQL, LDAP et MQTT – Applications basées sur TCP utilisées par de nombreuses applications populaires
  • DNS, Syslog et RADIUS – Utilitaires basés sur UDP utilisés par les périphériques périphériques et les applications non transactionnelles

L'équilibrage de charge TCP et UDP avec NGINX Ingress Controller est également une solution efficace pour distribuer le trafic réseau aux applications Kubernetes dans les circonstances suivantes :

  • Vous utilisez le chiffrement de bout en bout (EE2E) et laissez l'application gérer le chiffrement et le déchiffrement plutôt que NGINX Ingress Controller
  • Vous avez besoin d’un équilibrage de charge hautes performances pour les applications basées sur TCP ou UDP
  • Vous souhaitez minimiser la quantité de modifications lors de la migration d'un équilibreur de charge réseau (TCP/UDP) existant vers un environnement Kubernetes

NGINX Ingress Controller est fourni avec deux ressources NGINX Ingress qui prennent en charge l'équilibrage de charge TCP/UDP :

  • Les ressources GlobalConfiguration sont généralement utilisées par les administrateurs de cluster pour spécifier les ports TCP/UDP ( écouteurs ) disponibles pour une utilisation par les équipes DevOps. Notez que chaque déploiement de NGINX Ingress Controller ne peut avoir qu’une seule ressource GlobalConfiguration.
  • Les ressources TransportServer sont généralement utilisées par les équipes DevOps pour configurer l’équilibrage de charge TCP/UDP pour leurs applications. NGINX Ingress Controller écoute uniquement les ports qui ont été instanciés par l’administrateur dans la ressource GlobalConfiguration. Cela évite les conflits entre les ports et fournit une couche de sécurité supplémentaire en garantissant que les équipes DevOps exposent aux services externes publics uniquement les ports que l'administrateur a prédéterminés comme étant sûrs.

Le diagramme suivant illustre un exemple de cas d’utilisation pour les ressources GlobalConfiguration et TransportServer. Dans gc.yaml , l’administrateur du cluster définit les écouteurs TCP et UDP dans une ressource GlobalConfiguration. Dans ts.yaml , un ingénieur DevOps référence l'écouteur TCP dans une ressource TransportServer qui achemine le trafic vers un déploiement MySQL.

Diagramme de topologie du cas d'utilisation des ressources GlobalConfiguration et TransportServer

La ressource GlobalConfiguration dans gc.yaml définit deux écouteurs : un écouteur UDP sur le port 514 pour la connexion à un service syslog et un écouteur TCP sur le port 5353 pour la connexion à un service MySQL.

Les lignes 6 à 8 de la ressource TransportServer dans ts.yaml font référence à l'écouteur TCP défini dans gc.yaml par son nom ( mysql-tcp ) et les lignes 9 à 14 définissent la règle de routage qui envoie le trafic TCP vers la base de données mysql-db en amont.

Dans cet exemple, un ingénieur DevOps utilise le client MySQL pour vérifier que la configuration fonctionne, comme le confirme la sortie avec la liste des tables de la base de données rawdata_content_schema dans le déploiement MySQL.

$ echo « AFFICHER LES TABLES » | mysql –h <adresse_IP_externe> -P <port> -u <utilisateur> –p schéma_de_contenu_des_données_raw Entrez le mot de passe: <mot de passe>
Tables_dans_le_schéma_de_contenu_des_données_brute
auteurs
publications

Les ressources TransportServer pour le trafic UDP sont configurées de la même manière ; pour un exemple complet, consultez Équilibrage de charge TCP/UDP de base dans le référentiel NGINX Ingress Controller sur GitHub. Les utilisateurs avancés de NGINX peuvent étendre la ressource TransportServer avec la configuration native de NGINX à l'aide de la clé ConfigMap stream-snippets , comme indiqué dans l'exemple de prise en charge de l'équilibrage de charge TCP/UDP dans le référentiel.

Pour plus d'informations sur les fonctionnalités que vous pouvez configurer dans les ressources TransportServer, consultez la documentation de NGINX Ingress Controller .

Cet article est un extrait de notre livre électronique complet, Gérer le trafic Kubernetes avec NGINX : Un guide pratique . Téléchargez-le gratuitement aujourd'hui .

Essayez dès aujourd'hui le contrôleur d'entrée NGINX basé sur NGINX Plus dans le cadre d'un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d'utilisation .


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."