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ć?

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!


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.