BLOG | NGINX

Load Balancing TCP and UDP Traffic in Kubernetes with NGINX (Equilibrio de carga de tráfico TCP y UDP en Kubernetes con NGINX)

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Amir Rawdat
Amir Rawdat
Publicado el 7 de junio de 2022

[ Editor : Esta publicación es un extracto de nuestro completo libro electrónico, Gestión del tráfico de Kubernetes con F5 NGINX: Una guía práctica . Descárgalo gratis hoy .]

Además del tráfico HTTP, NGINX Ingress Controller equilibra la carga del tráfico TCP y UDP, por lo que puede usarlo para administrar el tráfico de una amplia gama de aplicaciones y utilidades basadas en esos protocolos, incluidos:

  • MySQL, LDAP y MQTT : aplicaciones basadas en TCP utilizadas por muchas aplicações populares
  • DNS, syslog y RADIUS : utilidades basadas en UDP utilizadas por dispositivos perimetrales y aplicações no transaccionales

El equilibrio de carga de TCP y UDP con NGINX Ingress Controller también es una solución eficaz para distribuir el tráfico de red a las aplicações de Kubernetes en las siguientes circunstancias:

  • Está utilizando cifrado de extremo a extremo (EE2E) y haciendo que la aplicação maneje el cifrado y el descifrado en lugar del controlador de ingreso NGINX
  • Necesita un equilibrio de carga de alto rendimiento para aplicações que se basan en TCP o UDP
  • Desea minimizar la cantidad de cambios al migrar un balanceador de carga de red existente (TCP/UDP) a un entorno de Kubernetes

El controlador de ingreso NGINX viene con dos recursos de ingreso NGINX que admiten el equilibrio de carga TCP/UDP:

  • Los recursos de GlobalConfiguration generalmente son utilizados por los administradores de clúster para especificar los puertos TCP/UDP ( oyentes ) que están disponibles para que los usen los equipos de DevOps. Tenga en cuenta que cada implementación de controlador de ingreso NGINX solo puede tener un recurso GlobalConfiguration.
  • Los equipos de DevOps suelen utilizar los recursos de TransportServer para configurar el equilibrio de carga TCP/UDP para sus aplicações. El controlador de ingreso NGINX escucha únicamente en los puertos instanciados por el administrador en el recurso GlobalConfiguration. Esto evita conflictos entre puertos y proporciona una capa adicional de seguridad al garantizar que los equipos de DevOps expongan a servicios externos públicos solo los puertos que el administrador ha predeterminado como seguros.

El siguiente diagrama muestra un caso de uso de muestra para los recursos GlobalConfiguration y TransportServer. En gc.yaml , el administrador del clúster define los escuchas TCP y UDP en un recurso GlobalConfiguration. En ts.yaml , un ingeniero de DevOps hace referencia al escucha TCP en un recurso TransportServer que enruta el tráfico a una implementación de MySQL.

Diagrama de topología del caso de uso para los recursos GlobalConfiguration y TransportServer

El recurso GlobalConfiguration en gc.yaml define dos oyentes: un oyente UDP en el puerto 514 para la conexión a un servicio syslog y un oyente TCP en el puerto 5353 para la conexión a un servicio MySQL.

Las líneas 6 a 8 del recurso TransportServer en ts.yaml hacen referencia al escucha TCP definido en gc.yaml por nombre ( mysql-tcp ) y las líneas 9 a 14 definen la regla de enrutamiento que envía tráfico TCP al origen mysql-db .

En este ejemplo, un ingeniero de DevOps utiliza el cliente MySQL para verificar que la configuración esté funcionando, como lo confirma la salida con la lista de tablas en la base de datos rawdata_content_schema dentro de la implementación de MySQL.

$ echo “MOSTRAR TABLAS” | mysql –h <dirección IP externa> -PAG <puerto> -u <usuario> –p esquema_de_contenido_de_datos_sin_registro Introducir contraseña: <contraseña>
Tablas en el esquema de contenido de datos sin procesar
Autores
Publicaciones

Los recursos de TransportServer para el tráfico UDP se configuran de manera similar; para ver un ejemplo completo, consulte Equilibrio de carga TCP/UDP básico en el repositorio del controlador de ingreso NGINX en GitHub. Los usuarios avanzados de NGINX pueden ampliar el recurso TransportServer con la configuración nativa de NGINX usando la clave ConfigMap de stream-snippets , como se muestra en el ejemplo de Compatibilidad con equilibrio de carga TCP/UDP en el repositorio.

Para obtener más información sobre las funciones que puede configurar en los recursos de TransportServer, consulte la documentación del controlador de ingreso NGINX .

Esta publicación es un extracto de nuestro completo libro electrónico, Gestión del tráfico de Kubernetes con NGINX: Una guía práctica . Descárgalo gratis hoy .

Pruebe usted mismo el controlador de ingreso NGINX basado en NGINX Plus hoy mismo con una prueba gratuita de 30 días o contáctenos para analizar sus casos de uso .


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.