Я использую nginx и NginxHttpUpstreamModule для балансировки нагрузки. Мой конфиг очень прост:
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;
}
}
Но с этим конфигом, когда один из 2 серверных серверов не работает, nginx все еще направляет запрос к нему, и это приводит к тайм-ауту в половине случаев :(
Есть ли какое-нибудь решение сделать nginx для автоматической маршрутизации запроса на другой сервер, когда он обнаружит сбитый сервер.
Спасибо.
nginx
load-balancing
cluster
failover
robinmag
источник
источник
Эй, пожалуйста, смотрите вики: http://wiki.nginx.org/NginxHttpUpstreamModule#server
В основном, если обнаружен сбой, бэкэнд будет помечен как выключенный в течение x секунд, и он попытается снова. Так что, если вы продолжаете видеть соединения, вероятно, nginx продолжает проверять, стал ли бэкэнд доступным.
Однако следует попробовать следующую запись в вышестоящем блоке, поэтому вы не должны видеть, что бэкэнды не доступны, если только один не работает.
источник