Estoy usando nginx y NginxHttpUpstreamModule para el equilibrio de carga. Mi configuración es muy simple:
upstream lb {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 89;
server_name localhost;
location / {
proxy_pass http://lb;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Pero con esta configuración, cuando uno de los 2 servidores back-end está inactivo, nginx aún dirige la solicitud a él y resulta en un tiempo de espera la mitad del tiempo :(
¿Hay alguna solución para hacer que nginx enrute automáticamente la solicitud a otro servidor cuando detecta un servidor caído?
Gracias.
nginx
load-balancing
cluster
failover
robinmag
fuente
fuente
Hola, por favor vea el wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server
Básicamente, si se detecta una falla, el backend se marcará como inactivo durante x segundos e intentará nuevamente. Entonces, si sigue viendo conexiones, es probable que nginx siga verificando si el backend está disponible.
Sin embargo, debería intentar la siguiente entrada en el bloque ascendente, por lo que no debería ver que no hay backends disponibles si solo uno está inactivo.
fuente