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

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!


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.