HAProxy - URI tabanlı farklı bir web sunucusuna yönlendirme


14

Aşağıdaki yapılandırmaya sahip bir HTTP grubum var:

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

Belirli bir URI (yani / özel) için tüm istekleri 3. web sunucusuna iletmek için bazı seçenek eklemek istiyorum. Bunu nasıl yapmalıyım?

Yanıtlar:


23

İşte ana bilgisayar başlıklarına göre yük dengeleme üzerine yazdığım bir blog yazısı:

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

Bir URI veya dizine karşı eşleştirmek isterseniz, o sayfada sağlanan örnekte kullanılan hdr_end yerine path_beg kullanmanızı öneririm. Aşağıda bunu yapılandırmanızla nasıl yapabileceğinize ilişkin bir örnek verilmiştir:

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

Umarım yardımcı olur!


Hey, cevabını sadece şimdi gördüm. Aslında aynı çözümü kullanarak zaten çözdüm. Cevabınız için teşekkürler!
— Saggi Malachi

Bu bağlantı artık canlı değil. Ancak, burada hala görüntülenebilir: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
— jaggedsoft

1
@NextLocal Teşekkürler - Bağlantıyı güncelledim. Önceki alan adının süresinin dolmasına izin verdim, ancak yukarıdaki güncellenmiş bağlantı için bir takma addı.
— Matt Beckman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.