HAProxy - ส่งต่อไปยังเว็บเซิร์ฟเวอร์อื่นตาม URI


14

ฉันมีฟาร์ม HTTP ที่มีการกำหนดค่าต่อไปนี้:

listen webfarm 10.254.23.225:80
       mode http
       balance roundrobin
       cookie SERVERID insert
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP/1.0
       server webA 10.254.23.4:80 cookie A check
       server webB 10.248.23.128:80 cookie B check

ฉันต้องการเพิ่มตัวเลือกที่จะส่งต่อคำขอทั้งหมดสำหรับ URI เฉพาะ (เช่น / พิเศษ) ไปยังเว็บเซิร์ฟเวอร์ที่สาม ฉันควรทำอย่างไร

คำตอบ:


23

นี่คือโพสต์บล็อกที่ฉันเขียนเกี่ยวกับการทำโหลดบาลานซ์ตามส่วนหัวของโฮสต์:

http://www.mattbeckman.com/2009/09/18/using-the-acl-in-haproxy-for-load-balancing-named-virtual-hosts/

หากคุณต้องการจับคู่กับ URI หรือไดเรกทอรีฉันขอแนะนำให้ใช้ path_beg แทน hdr_end ที่ใช้ในตัวอย่างที่มีให้ในหน้านั้น ด้านล่างเป็นตัวอย่างของวิธีที่คุณสามารถทำได้ด้วยการกำหนดค่าของคุณ:

frontend http-in
    bind 10.254.23.225:80
    acl has_special_uri path_beg /special
    use_backend special_server if has_special_uri
    default_backend webfarm

backend webfarm
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webA 10.254.23.4:80 cookie webA check
    server webB 10.248.23.128:80 cookie webB check

backend special_server
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webC 10.0.0.1:80 cookie webC check

หวังว่าจะช่วย!


เฮ้เห็นคำตอบของคุณตอนนี้เท่านั้น ฉันได้แก้ไขไปแล้วโดยใช้โซลูชันเดียวกันนี้ ขอบคุณสำหรับคำตอบ!
Saggi Malachi

ลิงค์นี้ไม่มีชีวิตอีกต่อไป อย่างไรก็ตามยังสามารถดูได้ที่นี่: web.archive.org/web/20160404161136/http://www.techrawr.com/2009//
jaggedsoft

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