Używam nginx i NginxHttpUpstreamModule do równoważenia obciążenia. Moja konfiguracja jest bardzo prosta:
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;
}
}
Ale przy tej konfiguracji, gdy jeden z 2 serwerów zaplecza jest wyłączony, nginx nadal kieruje do niego żądania i powoduje to przekroczenie limitu czasu przez połowę czasu :(
Czy istnieje jakieś rozwiązanie, dzięki któremu nginx automatycznie przekieruje żądanie do innego serwera, gdy wykryje on wyłączony serwer.
Dziękuję Ci.
nginx
load-balancing
cluster
failover
robinmag
źródło
źródło
Hej, zobacz wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server
Zasadniczo, jeśli zostanie wykryta awaria, backend zostanie oznaczony jako x na x sekund i spróbuje ponownie. Więc jeśli nadal widzisz połączenia, prawdopodobnie nginx sprawdza, czy backend stał się dostępny.
Powinien jednak wypróbować następny wpis w górnym bloku, więc nie powinieneś widzieć, że żadne backendy nie są dostępne, jeśli tylko jeden jest wyłączony.
źródło