আমি এই স্ক্রিপ্টটি বিভিন্ন জায়গা থেকে একসাথে রেখেছি। আমি যা প্রত্যাশা করছি তা হ'ল এটি একবার চালানোর পরে নিম্নলিখিতটি করবে:
- 80 এবং 443 পোর্টগুলির জন্য সমস্ত "নতুন" HTTP ট্র্যাফিক থামিয়ে দিন - কেবল "বিরতি দিন", কোনও ত্রুটি করবেন না
- সমস্ত "প্রক্রিয়াধীন" অনুরোধগুলি সম্পূর্ণ হয়ে গেলে হৃৎপিণ্ডে পুনরায় চালু করুন
- আনুষ্ঠানিকভাবে http ট্র্যাফিক থামান এবং যথারীতি ব্যবসা চালিয়ে যান।
এভাবে কি চলবে? আমি কি কিছু মিস করেছি? আইপি-এর উপর ভিত্তি করে আমাদের কয়েক হাজার এসিএল বিধি রয়েছে, এমন একটি ফাইলে সঞ্চিত রয়েছে যেটি হ্যাপ্রোক্সি রেফারেন্স করে এবং আমাদের এটি এক মিনিট কয়েকবার পুনরায় লোড করতে হবে।
#!/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