Ich verwende Nginx und NginxHttpUpstreamModule für den Lastenausgleich. Meine Konfiguration ist sehr einfach:
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;
}
}
Wenn einer der beiden Backend-Server in dieser Konfiguration nicht verfügbar ist, leitet nginx die Anforderung weiterhin an diesen weiter und es tritt in der Hälfte der Zeit eine Zeitüberschreitung auf :(
Gibt es eine Lösung, mit der nginx die Anforderung automatisch an einen anderen Server weiterleitet, wenn ein ausgefallener Server erkannt wird?
Vielen Dank.
nginx
load-balancing
cluster
failover
Rotkehlchen
quelle
quelle
Hey, bitte schau im Wiki nach: http://wiki.nginx.org/NginxHttpUpstreamModule#server
Wenn ein Fehler festgestellt wird, wird das Backend für x Sekunden als inaktiv markiert und es wird erneut versucht. Wenn Sie also weiterhin Verbindungen sehen, prüft wahrscheinlich Nginx, ob das Backend verfügbar ist.
Es sollte jedoch der nächste Eintrag im Upstream-Block ausprobiert werden, sodass Sie nicht sehen sollten, dass keine Backends verfügbar sind, wenn nur eines ausgefallen ist.
quelle