HAProxy - Weiterleiten an einen anderen Webserver basierend auf URI

14

Ich habe eine HTTP-Farm mit der folgenden Konfiguration:

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

Ich möchte eine Option hinzufügen, die alle Anforderungen für eine bestimmte URI (dh / special) an einen dritten Webserver weiterleitet. Wie soll ich das machen

Saggi Malachi
quelle

Antworten:

23

Hier ist ein Blog-Beitrag, den ich zum Lastenausgleich basierend auf den Host-Headern geschrieben habe:

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

Wenn Sie mit einer URI oder einem Verzeichnis abgleichen möchten, würde ich vorschlagen, path_beg anstelle von hdr_end zu verwenden, das in dem auf dieser Seite bereitgestellten Beispiel verwendet wird. Im Folgenden finden Sie ein Beispiel dafür, wie Sie dies mit Ihrer Konfiguration tun können:

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

Ich hoffe, das hilft!

Matt Beckman
quelle
Hey, hab deine Antwort erst jetzt gesehen. Ich habe es tatsächlich schon mit der gleichen Lösung gelöst. Danke für deine Antwort!
Saggi Malachi
Dieser Link lebt nicht mehr. Es kann hier jedoch weiterhin angezeigt werden: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
jaggedsoft
1
@NextLocal Danke - Ich habe den Link aktualisiert. Ich habe die vorherige Domain ablaufen lassen, aber es war ein Alias ​​für den aktualisierten Link oben.
Matt Beckman