bilanciamento del carico di failover automatico nginx

Sto utilizzando nginx e NginxHttpUpstreamModule per il bilanciamento del carico. Il mio config è molto semplice:

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; } } 

Ma con questa configuration, quando uno dei 2 server backend è in discesa, nginx continua a percorrere la richiesta a esso e si traduce in un timeout metà del tempo 🙁

C'è una soluzione per rendere nginx automaticamente la richiesta di rotazione su un altro server quando rileva un server downed.

Grazie.

  • Conservare le intestazioni di risposta nell'equilibratore di carico NGINX
  • C'è un'interface programmata alla configuration nginx?
  • Come posso configurare nginx per accettare richieste gzip?
  • Nginx 10k connessioni simultanee
  • vedere tutti gli host virtuali attivi in ​​nginx?
  • Nel proxy inverso di nginx, come impostare la bandiera protetta per i cookie?
  • Segfault PHP-FPM, Nginx, Freebsd
  • nginx come proxy inverso con SSL a monte
  • 2 Solutions collect form web for “bilanciamento del carico di failover automatico nginx”

    Penso che sia perché la nginx non sta rilevando che il monte è in discesa perché è sulla stessa macchina.

    Le opzioni che cerchi sono: proxy_next_upstream e proxy_connect_timeout .

    Prova questo:

     location / { proxy_pass http://lb; proxy_redirect off; proxy_next_upstream error timeout invalid_header http_500; proxy_connect_timeout 2; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 

    Hey, vedi il wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server

    Fondamentalmente se viene rilevato un guasto, il backend verrà contrassegnato come giù per x secondi e si riprova. Quindi, se continuate a vedere connessioni è probabilmente nginx che continua a controllare se il backend è diventato disponibile.

    Dovrebbe comunque provare la prossima voce nel block a monte, per cui non dovresti veramente vedere che nessun backend è disponibile se solo uno è in discesa.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.