Estou usando o nginx e o NginxHttpUpstreamModule para balanceamento de carga. Minha configuração é muito simples:
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;
}
}
Mas com essa configuração, quando um dos 2 servidores back-end está inativo, o nginx ainda encaminha a solicitação para ele e resulta em tempo limite na metade do tempo :(
Existe alguma solução para fazer com que o nginx roteie automaticamente a solicitação para outro servidor quando detectar um servidor inativo.
Obrigado.
nginx
load-balancing
cluster
failover
robinmag
fonte
fonte
Ei, veja o wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server
Basicamente, se uma falha for detectada, o back-end será marcado como inativo por x segundos e tentará novamente. Portanto, se você continuar vendo as conexões, provavelmente é o nginx que verifica se o back-end está disponível.
No entanto, tente a próxima entrada no bloco upstream, para que você não veja realmente que nenhum back-end está disponível se apenas um estiver inativo.
fonte