Kami ingin dapat menambahkan lebih banyak server backend sesuai permintaan. Saat ini saya tidak melihat cara untuk menambahkan lebih banyak server backend ke file konfigurasi tanpa me-restart haproxy.
Kami ingin dapat menambahkan lebih banyak server backend sesuai permintaan. Saat ini saya tidak melihat cara untuk menambahkan lebih banyak server backend ke file konfigurasi tanpa me-restart haproxy.
Jawaban:
Saya belum menguji use case khusus ini tetapi haproxy mendukung "hot reload":
2.4.1) Hot reconfiguration
--------------------------
The '-st' and '-sf' command line options are used to inform previously running
processes that a configuration is being reloaded. They will receive the SIGTTOU
signal to ask them to temporarily stop listening to the ports so that the new
process can grab them. If anything wrong happens, the new process will send
them a SIGTTIN to tell them to re-listen to the ports and continue their normal
work. Otherwise, it will either ask them to finish (-sf) their work then softly
exit, or immediately terminate (-st), breaking existing sessions. A typical use
of this allows a configuration reload without service interruption :
# haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
Jika Anda memiliki skrip init untuk memulai dan menghentikan haproxy, kemungkinan mendukung reload
argumen dengan fungsi seperti:
haproxy_reload()
{
$HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \
|| return 2
return 0
}
Dari manual:
Haproxy sekarang mendukung gagasan pidfile. Jika argumen baris perintah '-p', atau opsi global 'pidfile' diikuti dengan nama file, file ini akan dihapus, kemudian diisi dengan semua anak-anak pids, satu per baris (hanya dalam mode daemon). File ini BUKAN dalam chroot, yang memungkinkan untuk bekerja dengan chroot hanya baca. Ini akan dimiliki oleh pengguna yang memulai proses, dan akan memiliki izin 0644.
global
daemon
quiet
nbproc 2
pidfile /var/run/haproxy-private.pid
# to stop only those processes among others :
# kill $(</var/run/haproxy-private.pid)
# to reload a new configuration with minimal service impact and without
# breaking existing sessions :
# haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)
Juga tergantung pada versi HA-proxy Anda, Anda mungkin ingin mempertimbangkan HA-Proxy Dynamic API seperti yang dijelaskan oleh haproxy.com di halaman ini: https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with -runtime-api /
API HA-Proxy Dynamic hadir dengan versi Enterprise.
Anda harus mempertimbangkan HA-Proxy Dynamic API jika Anda ingin menambah / menghapus server dengan cepat sebagai praktik biasa atau jika proyek Anda menyiratkan use case seperti itu.