NGINX es un proxy de aceleración capaz de funcionar con una amplia gama de aplicaciones basadas en HTTP. Su almacenamiento en caché, el procesamiento de la conexión HTTP y la descarga aumentan significativamente el rendimiento de la aplicación , especialmente durante períodos de alta carga.
Editor: NGINX Plus versión 5 y posteriores también pueden equilibrar la carga de aplicaciones 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 { server {
listen 80;
location / {
proxy_pass http://backend;
}
}
upstream backend {
server web-server1:80;
server web-server2: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 :
upstream backend { zone backend 64k;
least_conn;
server web-server1 weight=1;
server web-server2 weight=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:
server web-server1 slow_start=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:
location / {
proxy_pass http://backend;
# Rewrite the 'Host' header to the value in the client request
# or primary server name
proxy_set_header Host $host;
# Alternatively, put the value in the config:
#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.