มีวิธีการเพิ่มเซิร์ฟเวอร์แบ็กเอนด์มากขึ้นไป haproxy โดยไม่ต้องรีสตาร์ท haproxy?


17

เราต้องการที่จะสามารถเพิ่มเซิร์ฟเวอร์แบ็กเอนด์ตามความต้องการ ตอนนี้ฉันไม่เห็นวิธีเพิ่มเซิร์ฟเวอร์แบ็กเอนด์มากขึ้นไปยังไฟล์ปรับแต่งโดยไม่ต้องรีสตาร์ท haproxy

คำตอบ:


15

ฉันยังไม่ได้ทดสอบเคสการใช้งานเฉพาะนี้ แต่ haproxy ไม่รองรับ "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)

หากคุณมีสคริปต์เริ่มต้นที่จะเริ่มและหยุด haproxy ก็อาจสนับสนุนการreloadโต้แย้งด้วยฟังก์ชั่นเช่น:

haproxy_reload()
{
    $HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \
        || return 2
    return 0
}

1
ฉันลองแล้ว แต่ฉันพบว่ามันล้างตัวนับของฉัน บางทีฉันอาจทำอะไรผิดไปหรือเป็นพฤติกรรมที่คาดหวัง
Leandro López

6

จากคู่มือ:

> 1.6) ช่วยการจัดการกระบวนการ

ตอนนี้ Haproxy สนับสนุนแนวคิดของ pidfile หากอาร์กิวเมนต์บรรทัดคำสั่ง '-p' หรือตัวเลือกโกลบอล 'pidfile' ตามด้วยชื่อไฟล์ไฟล์นี้จะถูกลบออกจากนั้นเติมด้วย pids ของเด็กทั้งหมดหนึ่งรายการต่อบรรทัด (ในโหมด daemon เท่านั้น) ไฟล์นี้ไม่อยู่ใน chroot ซึ่งอนุญาตให้ทำงานกับ chroot แบบอ่านอย่างเดียว มันจะเป็นของผู้ใช้ที่เริ่มต้นกระบวนการและจะมีสิทธิ์ 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)

1

ขึ้นอยู่กับเวอร์ชัน HA-proxy ของคุณคุณอาจต้องการพิจารณา HA-Proxy Dynamic API ตามที่อธิบายโดย haproxy.com ในหน้านี้: https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with -runtime-API /

HA-Proxy Dynamic API มาพร้อมกับรุ่น Enterprise

คุณควรพิจารณา HA-Proxy Dynamic API ถ้าคุณต้องการที่จะเพิ่ม / ลบเซิร์ฟเวอร์แบบง่าย ๆ ตามปกติหรือหากโครงการของคุณมีความหมายเช่นกรณีการใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.