Ich habe dieses Skript an verschiedenen Stellen zusammengestellt. Was ich hoffe ist, dass es nach dem Ausführen Folgendes tun wird:
- Unterbrechen Sie den gesamten "NEUEN" http-Verkehr für die Ports 80 und 443 - "pausieren" Sie sie einfach, geben Sie keinen Fehler aus
- Starten Sie haproxy ordnungsgemäß neu, wenn alle "in Bearbeitung" -Anforderungen abgeschlossen sind
- Unterbrechen Sie den http-Verkehr und fahren Sie wie gewohnt fort.
Wird es so laufen? Habe ich etwas verpasst Wir haben Tausende von ACL-Regeln basierend auf IP, die in einer Datei gespeichert sind, auf die Haproxy verweist, und wir müssen sie mehrmals pro Minute neu laden.
#!/bin/sh
# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1
# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D INPUT -p tcp --dport 443 --syn -j DROP
Bearbeiten: Ich würde es gerne irgendwie testen, aber wir haben noch keinen Datenverkehr (mit Ausnahme von mir testen).
Quellen:
http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html