Estamos orgullosos de anunciar la incorporación de una nueva y emocionante capacidad a NGINX Open Source y a nuestra plataforma de entrega de aplicação , NGINX Plus : equilibrio de carga UDP. La nueva capacidad se basa en nuestras capacidades TCP y HTTP existentes, lo que convierte a NGINX en una interfaz potente, fácil de usar y consistente para una gama aún más amplia de aplicações y dispositivos de Internet. Estamos entusiasmados de ampliar las capacidades de equilibrio de carga que impulsan más de la mitad de las aplicações más activas del mundo a un nuevo conjunto de usuarios que construyen la Internet de las cosas (IoT).
La mayoría de las aplicações de Internet dependen de HTTP para la comunicación de red. Los protocolos avanzados como SOAP y REST se basan en la base de HTTP, que puede aprovechar una serie de extensiones avanzadas: seguridad mediante TLS, compresión mediante Gzip y mejoras de rendimiento mediante HTTP/2 .
Sin embargo, muchas aplicações necesitan utilizar múltiples protocolos para diferentes propósitos, y muchos de los protocolos principales de Internet son anteriores a HTTP. Por este motivo, una solución completa para equilibrar la carga y el proxy inverso debe admitir una amplia gama de protocolos, tanto basados en TCP como en UDP.
UDP se usa comúnmente para protocolos livianos que no son de naturaleza transaccional, como DNS (usado para resolver nombres de dominio en direcciones), syslog (usado para registro liviano) y RADIUS (usado para autenticación). Estos protocolos no tienen requisitos estrictos de confiabilidad (si se pierde un mensaje UDP ( datagrama ), el cliente puede reenviar el mensaje de manera segura después de un tiempo de espera), pero los servicios que brindan son fundamentales para el correcto funcionamiento de los servicios de Internet. UDP también está surgiendo como uno de los protocolos preferidos para las nuevas aplicações de IoT debido a sus bajos requisitos de ancho de banda.
Hace un año, NGINX presentó el equilibrio de carga TCP a nuestra comunidad de usuarios y clientes comerciales. Ahora nos complace ampliar nuestras capacidades de equilibrio de carga con la incorporación del equilibrio de carga UDP. Con NGINX y NGINX Plus, los usuarios ahora pueden ofrecer servicios basados en UDP con confiabilidad, escalabilidad y rendimiento.
NGINX escucha el tráfico de red UDP (protocolos como DNS, syslog y RADIUS) en una o más direcciones (dirección IP y puerto), según lo definido por el administrador. Estas direcciones se publican para que los clientes sepan dónde enviar las solicitudes del servicio deseado.
En cuanto al equilibrio de carga HTTP y TCP, la configuración para el equilibrio de carga UDP define un grupo ascendente (el conjunto de servidores de origen que proporcionan el servicio basado en UDP) y el algoritmo a utilizar cuando se equilibra la carga del tráfico entre los servidores (por ejemplo, Round Robin, Menos conexiones o Hash basado en la dirección IP de origen). La configuración también define un servidor virtual para cada puerto UDP, con una directiva proxy_pass
que nombra el grupo ascendente que proporciona el servicio asociado:
# Balance de carga del tráfico DNS basado en UDP entre dos servidores stream {
upstream dns_upstreams {
servidor 192.168.136.130:53;
servidor 192.168.136.131:53;
}
servidor {
list 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
}
Cuando NGINX recibe un datagrama UDP en un puerto (aquí, una consulta DNS en el puerto 53), utiliza el algoritmo de equilibrio de carga configurado (aquí, el Round Robin predeterminado) para seleccionar qué servidor del grupo ascendente lo procesará. Cuando corresponde, NGINX espera una respuesta del servidor y reenvía esa respuesta (y cualquier paquete posterior recibido dentro del período de tiempo de espera) al cliente.
Si un servidor no responde a una solicitud, NGINX lo marca como “fallido” y deja de enviarle datagramas temporalmente. Cada pocos segundos, NGINX verifica la salud del servidor para ver si se ha recuperado enviándole una pequeña cantidad de tráfico en vivo.
NGINX Plus R9 incluirá controles de estado de aplicação (también llamados "asincrónicos" o "sintéticos") para servicios UDP, similares a los del tráfico HTTP y TCP . Podrás configurar NGINX Plus para enviar solicitudes UDP especiales a los servidores ascendentes y definir el tipo de respuesta que los servidores deben devolver para que se consideren saludables.
Otras características compatibles con el equilibrio de carga UDP incluyen el registro de transacciones en un registro de acceso estilo servidor web , listas de control de acceso basadas en direcciones IP y una variedad de funciones de limitación de velocidad.
En NGINX Plus R9, las estadísticas de monitoreo de actividad en vivo proporcionadas por el módulo Estado incluirán métricas UDP, y podrá reconfigurar grupos ascendentes UDP sobre la marcha , usando una API basada en HTTP y DNS, como puede hacerlo actualmente para servidores HTTP y TCP.
El equilibrio de carga UDP aborda dos casos de uso clave: alta disponibilidad y escalamiento horizontal. Por diseño, UDP no garantiza la entrega de datos de extremo a extremo y, por lo tanto, requiere que el software del cliente solucione errores y retransmisiones a nivel de red. Los protocolos basados en UDP normalmente definen un par de servidores; si un cliente no puede conectarse a su servidor preferido, debe esperar un período de tiempo de espera definido antes de intentar con el otro servidor. Esto puede introducir retrasos prolongados en las transacciones UDP.
Implementar NGINX o NGINX Plus como un balanceador de carga altamente disponible y confiable frente a sus servidores UDP puede eliminar o reducir demoras de este tipo. Los clientes envían solicitudes UDP al balanceador de carga NGINX o NGINX Plus, que monitorea el estado y la disponibilidad de los servidores UDP y no envía solicitudes a servidores fallados o sobrecargados. Los clientes no experimentan fallas de conexión o de solicitud y, por lo tanto, no sufren los tiempos de espera asociados con los reintentos de solicitudes.
El uso de NGINX o NGINX Plus como balanceador de carga también permite escalar una aplicação UDP para manejar tráfico pesado. En una implementación UDP típica, los clientes conocen como máximo dos servidores UDP, pero ampliar para satisfacer una alta demanda requiere muchos más servidores UDP. En este escenario, los clientes envían sus solicitudes UDP a una o dos instancias NGINX o NGINX Plus conocidas, que equilibran la carga de las solicitudes entre la mayor cantidad de servidores UDP realmente necesarios para manejar la carga.
El equilibrio de carga UDP con NGINX y NGINX Plus es adecuado para cualquier aplicação basada en UDP que envíe datos y, opcionalmente, espere una o más respuestas. NGINX también puede equilibrar la carga de protocolos propietarios basados en UDP, como los que se encuentran en entornos de IoT.
El momento específico de disponibilidad del equilibrio de carga UDP en nuestras versiones es el siguiente:
NGINX y NGINX Plus proporcionan una plataforma completa de equilibrio de carga y entrega de aplicação para una amplia gama de protocolos de Internet. Ya sea que esté entregando aplicações basadas en HTTP, aplicações TCP de nivel inferior o protocolos basados en UDP, puede confiar en NGINX y NGINX Plus para brindar alta disponibilidad, confiabilidad, escalabilidad y rendimiento en una única aplicação liviana. Estamos muy entusiasmados con la nueva función de equilibrio de carga UDP y su potencial para brindar equilibrio de carga de alto rendimiento y entrega perfecta de aplicação a una nueva cantidad de dispositivos.
¿Quieres familiarizarte con NGINX Plus antes del lanzamiento del equilibrio de carga UDP en la versión 9? Comience hoy su 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.