Balanceo de carga con nginx: upstream, métodos y comprobaciones de salud

Balanceo de carga con nginx

Balanceador de carga nginx: upstream, métodos, pesos y salud | We.Inc

Configura nginx como balanceador de carga: el bloque upstream, round robin, least_conn, ip_hash y hash, pesos, max_fails y fail_timeout, servidores de respaldo y un generador de configuración.

Para balancear carga con nginx, enumera tus servidores de aplicación en un bloque upstream y apunta proxy_pass a su nombre. Las peticiones se reparten en round robin salvo que añadas least_conn, ip_hash, hash o random. Cada línea server puede llevar weight, max_fails y fail_timeout para comprobaciones de salud pasivas, además de los flags backup o down.

Métodos de balanceo de carga de nginx

Repartir el tráfico entre varias copias de una aplicación es una de las tareas más antiguas de nginx, y toda la configuración cabe en una docena de líneas. El generador de abajo escribe el bloque upstream a partir de una lista de servidores, avisa de las combinaciones que nginx rechaza y muestra la parte de peticiones de cada servidor cuando se aplican pesos. La referencia que sigue cubre cada parámetro de server con su valor por defecto.

Preguntas frecuentes

¿nginx de código abierto tiene comprobaciones de salud activas?

No. La directiva health_check pertenece al producto comercial NGINX Plus. nginx de código abierto depende de comprobaciones pasivas: si una petición a un servidor falla max_fails veces dentro de fail_timeout, el servidor se omite durante fail_timeout y luego se vuelve a probar con tráfico real.

¿Cuáles son los valores por defecto de max_fails y fail_timeout?

max_fails vale 1 por defecto y fail_timeout 10 segundos. Por tanto, un solo intento fallido saca a un servidor durante diez segundos. Con max_fails=0 se desactiva el recuento para ese servidor.

¿Cómo hago sesiones persistentes en nginx?

Usa ip_hash para mantener cada dirección de cliente en un servidor, o hash con una variable de cookie como $cookie_session para un control más fino. Las directivas sticky basadas en cookies solo existen en la edición comercial.

¿Qué hace el parámetro weight?

Cambia cuántas peticiones recibe un servidor en relación con los demás. Con pesos 3, 1 y 1, el primer servidor recibe unas tres de cada cinco peticiones en round robin. El peso por defecto es 1.

¿Puede nginx balancear conexiones WebSocket?

Sí. Apunta proxy_pass al upstream y reenvía las cabeceras Upgrade y Connection. least_conn encaja mejor que round robin con sockets de larga duración, porque cuenta cuántas conexiones tiene ya cada servidor.

Dónde va cada pieza

Comprobaciones de salud pasivas, paso a paso

Parámetros de server y sus valores por defecto

Parámetros de una línea server dentro de upstream

Ejemplos completos

Round robin con un servidor de reserva

Dos principales se reparten la carga; el tercero solo responde si los dos están caídos.

least_conn con conexiones reutilizadas

keepalive guarda en caché las conexiones inactivas con los backends; las dos líneas de proxy hacen que funcione.

Afinidad de caché por URL

Cada URL sigue llegando al mismo servidor de caché; consistent mantiene intactas la mayoría de las asignaciones al añadir o quitar un servidor.

Nombre del upstream

Método

Round robin (por defecto)

Clave de hash

Conexiones keepalive inactivas (0 para ninguna)

Servidores

Dirección y puerto

Peso

fail_timeout (s)

Parte

Quitar servidor {n}

Añadir servidor

nginx rechaza los servidores backup con hash, ip_hash y random. Quita el flag backup o cambia el método.

Todos los servidores principales están marcados como down, así que ninguno puede recibir tráfico.

Configuración

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio