J'utilise nginx et NginxHttpUpstreamModule pour l'équilibrage de charge. Ma config est très 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;
}
}
Mais avec cette configuration, lorsque l'un des 2 serveurs principaux est en panne, nginx achemine toujours la demande vers lui et il en résulte un délai d'expiration la moitié du temps :(
Existe-t-il une solution pour que nginx achemine automatiquement la demande vers un autre serveur lorsqu'il détecte un serveur en panne?
Merci.
nginx
load-balancing
cluster
failover
robinmag
la source
la source
Hé, veuillez consulter le wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server
Fondamentalement, si un échec est détecté, le backend sera marqué comme arrêté pendant x secondes et il réessaiera. Donc, si vous continuez à voir les connexions, c'est probablement nginx qui continue de vérifier si le backend est devenu disponible.
Cependant, il devrait essayer l'entrée suivante dans le bloc en amont, de sorte que vous ne devriez pas réellement voir qu'aucun backend n'est disponible si un seul est en panne.
la source