NGINX es un proxy de aceleración capaz de funcionar con una amplia gama de aplicações basadas en HTTP. Su almacenamiento en caché, el procesamiento de la conexión HTTP y la descarga aumentan significativamente el rendimiento de la aplicação , especialmente durante períodos de alta carga.
Editor: NGINX Plus versión 5 y posteriores también pueden equilibrar la carga de aplicações basadas en TCP. El equilibrio de carga TCP se amplió significativamente en la versión 6 mediante la incorporación de controles de estado, reconfiguración dinámica, terminación SSL y más. En NGINX Plus versión 7<.htmla> y posteriores, el balanceador de carga TCP tiene paridad de funciones completa con el balanceador de carga HTTP. El soporte para el equilibrio de carga UDP se introdujo en la versión 9.
Configura el equilibrio de carga TCP y UDP en el contexto de transmisión
en lugar del contexto http
. Las directivas y parámetros disponibles difieren un poco debido a las diferencias inherentes entre HTTP y TCP/UDP; para obtener más detalles, consulte la documentación de los módulos Upstream HTTP y TCP .
NGINX Plus amplía las capacidades de NGINX al agregar más capacidades de equilibrio de carga: controles de estado , persistencia de sesión , monitoreo de actividad en vivo y configuración dinámica de grupos de servidores con equilibrio de carga .
Esta publicación de blog lo guía a través de la configuración de NGINX para equilibrar el tráfico hacia un conjunto de servidores web. Destaca algunas de las características adicionales de NGINX Plus.
Para obtener más información, también puede consultar la Guía de administración de NGINX Plus y el artículo siguiente, Equilibrio de carga con NGINX y NGINX Plus, parte 2 .
Comenzaremos enviando tráfico a un par de servidores web ascendentes. La siguiente configuración de NGINX es suficiente para finalizar todas las solicitudes HTTP al puerto 80 y reenviarlas de manera rotatoria a través de los servidores web en el grupo ascendente:
http { servidor {
escuchar 80;
ubicación / {
contraseña_proxy http://backend;
}
}
backend ascendente {
servidor servidor-web1:80;
servidor servidor-web2:80;
}
}
Con esta sencilla configuración, NGINX reenvía cada solicitud recibida en el puerto 80 a web-server1 y web-server2 a su vez, estableciendo una nueva conexión HTTP en cada caso.
De forma predeterminada, NGINX utiliza el método Round Robin para distribuir el tráfico de manera uniforme entre los servidores, informado por un “peso” opcional asignado a cada servidor para indicar su capacidad relativa.
El método IP Hash distribuye el tráfico en función de un hash de la dirección IP de origen. Las solicitudes desde la misma dirección IP de cliente siempre se envían al mismo servidor ascendente. Este es un método de persistencia de sesión rudimentario que se recalcula cada vez que un servidor falla o se recupera, o cada vez que se modifica el grupo ascendente; NGINX Plus ofrece mejores soluciones si se requiere persistencia de sesión.
El método de Menos Conexiones dirige cada solicitud al servidor ascendente con la menor cantidad de conexiones activas. Este método funciona bien cuando se maneja una combinación de solicitudes rápidas y complejas.
Todos los métodos de equilibrio de carga se pueden ajustar utilizando un parámetro de peso
opcional en la directiva del servidor
. Esto tiene sentido cuando los servidores tienen diferentes capacidades de procesamiento. En el siguiente ejemplo, NGINX dirige cuatro veces más solicitudes a web-server2 que a web-server1 :
backend ascendente { zona backend 64k; menor_conexión; servidor web-server1 peso=1; servidor web-server2 peso=4 ; }
En NGINX, los pesos son gestionados independientemente por cada proceso de trabajo. NGINX Plus utiliza un segmento de memoria compartida para datos ascendentes (configurado con la directiva de zona
), por lo que los pesos se comparten entre los trabajadores y el tráfico se distribuye con mayor precisión.
Si hay un error o tiempo de espera cuando NGINX intenta conectarse con un servidor, pasarle una solicitud o leer el encabezado de respuesta, NGINX vuelve a intentar la solicitud de conexión con otro servidor. (Puede incluir la directiva proxy_next_upstream
en la configuración para definir otras condiciones para volver a intentar la solicitud). Además, NGINX puede sacar el servidor fallado del conjunto de servidores potenciales y ocasionalmente intentar realizar solicitudes contra él para detectar cuándo se recupera. Los parámetros max_fails
y fail_timeout
de la directiva del servidor
controlan este comportamiento.
NGINX Plus agrega un conjunto de controles de estado fuera de banda que realizan pruebas HTTP sofisticadas contra cada servidor ascendente para determinar si está activo y un mecanismo de inicio lento para reintroducir gradualmente los servidores recuperados nuevamente en el grupo con equilibrio de carga:
servidor web-server1 inicio_lento=30s;
del host
Con mucha frecuencia, un servidor ascendente utiliza el encabezado Host
en la solicitud para determinar qué contenido servir. Si te encuentras con algo inesperado404
errores del servidor, o cualquier otra cosa que sugiera que está sirviendo contenido incorrecto, esto es lo primero que se debe verificar. Luego incluya la directiva proxy_set_header
en la configuración para establecer el valor apropiado para el encabezado:
ubicación / { proxy_pass http://backend; # Reescribe el encabezado 'Host' con el valor en la solicitud del cliente # o el nombre del servidor principal proxy_set_header Host $host ; # Alternativamente, coloca el valor en la configuración: #proxy_set_header Host www.example.com; }
Una gama de funciones avanzadas en NGINX Plus lo convierten en un balanceador de carga ideal frente a granjas de servidores ascendentes:
Para obtener detalles sobre equilibrio de carga avanzado y proxy, consulte la publicación de seguimiento de esta, Equilibrio de carga con NGINX y NGINX Plus, parte 2 .
Para probar NGINX Plus, comience hoy su prueba gratuita de 30 días o contáctenos para analizar sus casos de uso de equilibrio de carga .
"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.