HAProxy - przekaż do innego serwera WWW na podstawie URI

14

Mam farmę HTTP z następującą konfiguracją:

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

Chciałbym dodać opcję, która przekierowałaby wszystkie żądania dotyczące określonego identyfikatora URI (tj. / Special) na trzeci serwer WWW. Jak mam to zrobić?

Saggi Malachi
źródło

Odpowiedzi:

23

Oto post na blogu, który napisałem o równoważeniu obciążenia na podstawie nagłówków hosta:

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

Jeśli chcesz dopasować do identyfikatora URI lub katalogu, sugerowałbym użycie path_beg zamiast hdr_end, który jest używany w przykładzie podanym na tej stronie. Poniżej znajduje się przykład tego, jak możesz to zrobić ze swoją konfiguracją:

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

Mam nadzieję, że to pomaga!

Matt Beckman
źródło
Hej, widziałem twoją odpowiedź dopiero teraz. Rozwiązałem go już przy użyciu tego samego rozwiązania. Dziękuję za odpowiedź!
Saggi Malachi
Ten link już nie żyje. Jednak nadal można go zobaczyć tutaj: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
jaggedsoft,
1
@NextLocal Thanks - Zaktualizowałem link. Pozwoliłem, aby poprzednia domena wygasła, ale był to alias do zaktualizowanego linku powyżej.
Matt Beckman