Apakah HAProxy ini "restart script" bekerja dengan anggun saya pikir itu akan berhasil?

9

Saya menggabungkan naskah ini dari berbagai tempat. Apa yang saya harapkan adalah ini akan dilakukan setelah dijalankan:

  1. Jeda semua lalu lintas http "BARU" untuk port 80 dan 443 - cukup "pause" mereka, jangan berikan kesalahan apa pun
  2. Restart haproxy dengan anggun ketika semua permintaan "dalam proses" selesai
  3. Batalkan jeda lalu lintas http dan lanjutkan bisnis seperti biasa.

Apakah ini cara kerjanya? Apakah saya melewatkan sesuatu? Kami memiliki ribuan aturan acl berdasarkan ip, disimpan dalam file yang memiliki referensi haproxy dan kami perlu memuatnya kembali beberapa kali dalam satu menit.

#!/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

Sunting: Saya ingin mengujinya, tetapi kami belum memiliki traffic (dengan pengecualian saya sedang menguji).

Sumber:

http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html

https://github.com/Mirantis/openstack-lbaas/issues/3

HAProxy anggun memuat ulang dengan nol paket loss

Mike Curry
sumber

Jawaban:

4

Berdasarkan artikel-artikel itu harus berfungsi dengan baik.

Ingatlah bahwa Anda tidak memiliki lalu lintas yang selalu dapat Anda tiru.

Gunakan alat benchmark apache untuk menaruh beberapa traffic palsu.

Pastikan saja bahwa halaman yang Anda muat memerlukan beberapa detik untuk dimuat, untuk menguji skenario terburuk.

Saya membuatkan Anda buku masak yang membuktikan bahwa konfigurasi yang Anda berikan berfungsi dengan benar.

Tk421
sumber