このスクリプトをさまざまな場所からまとめました。私が望んでいるのは、一度実行すると次のようになることです。
これはどのように実行されますか?私は何かを逃したことがありますか? ipに基づく何千ものACLルールがあり、haproxyが参照するファイルに保存されており、1分間に数回リロードする必要があります。
#!/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
編集:どういうわけかそれをテストしたいのですが、まだトラフィックがありません(私がテストしていることを除いて)。
出典:
http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html
それらの記事に基づいて、それはうまくいくはずです。
いつでもエミュレートできるトラフィックがないことを覚えておいてください。
Apacheベンチマーク ツールを使用して、偽のトラフィックを配置します。
最悪のシナリオをテストするために、ロードしているページのロードに数秒かかることを確認してください。
私はあなたのために cookbook を作成しました。これは、あなたが提供する構成が正しく機能することを証明します。