Update (28. August 2012): Heutzutage verwende ich eher Haproxyctl , das die unten beschriebenen Methoden verwendet.
Ich habe es nach ein wenig mehr Nachforschungen für alle anderen mit dem gleichen Problem behoben: -
Sie können einen Unix-Socket in Ihre Konfiguration einfügen und dann damit interagieren ( hier sind die möglichen Befehle ).
So richten Sie ein:
sudo nano /etc/haproxy/haproxy.cfg
Fügen Sie in Ihrem Bereich "Global" Folgendes hinzu:
stats socket /etc/haproxy/haproxysock level admin
Starten Sie Ihren Haproxy-Daemon neu (zB sudo service haproxy restart
)
Jetzt brauchst du socat (wenn du es nicht hast, nur apt-get install socat
auf Ubuntu).
Jetzt müssen Sie nur noch diesen Befehl auslösen, um einen Knoten herunterzufahren:
echo "disable server yourbackendname/yourservername" | socat stdio /etc/haproxy/haproxysock
Um es wieder zu aktivieren, ersetzen Sie "disable" durch "enable" im obigen Befehl.
socat /var/run/haproxy.stat stdio
für jeden einzelnen BefehlWenn Sie nur Zugriff auf netcat (
nc
) haben, können Sie damit auf ähnliche Weise wie mit HAProxys Socket-Datei interagierensocat
.So deaktivieren Sie einen Server:
Stellen Sie sicher, dass die Socket-Datei über die entsprechende Zugriffsberechtigung verfügt, um die oben genannten Vorgänge auszuführen. Hauptsächlich so etwas:
Andernfalls erhalten Sie Fehler, denen die Erlaubnis verweigert wurde:
Verweise
quelle
Der einfache Weg ist:
1 - Konfigurieren Sie Ihren Webserver so, dass er 503-Code zurückgibt, wenn beispielsweise eine Datei mit dem Namen maintenance.html vorhanden ist. Mit Apache können Sie dies wie folgt tun:
2 - Konfigurieren Sie Ihr Haproxy-Backend so, dass eine URL überprüft wird, anstatt nur einen Port wie folgt zu überprüfen:
3 - Starten Sie Ihren Webserver und Load Balancer neu.
4 - Versetzen Sie Ihren Webserver in den Wartungsmodus.
5 - Entfernen Sie Ihren Webserver aus dem Wartungsmodus.
quelle
Sie können die Integritätsprüfungsseite auch vorübergehend von einem Server "entfernen", um den Endpunkt herunterzufahren und Ihre Anwendung dann zu veröffentlichen.
quelle
Wenn Sie Debian haben, Readline funktioniert nicht, ist Netcat eine bessere Option für interaktive:
Nicht interaktiv:
quelle