HAProxy - transfert vers un autre serveur Web basé sur l'URI

14

J'ai une ferme HTTP avec la configuration suivante:

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

Je voudrais ajouter une option qui transmettrait toutes les demandes d'un URI spécifique (c'est-à-dire / spécial) à un troisième serveur Web. Comment dois-je procéder?

Saggi Malachi
la source

Réponses:

23

Voici un article de blog que j'ai écrit sur l'équilibrage de charge basé sur les en-têtes d'hôte:

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

Si vous souhaitez établir une correspondance avec un URI ou un répertoire, je suggère d'utiliser path_beg au lieu de hdr_end qui est utilisé dans l'exemple fourni sur cette page. Vous trouverez ci-dessous un exemple de la manière dont vous pouvez procéder avec votre configuration:

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

J'espère que cela pourra aider!

Matt Beckman
la source
Hé, je n'ai vu ta réponse que maintenant. Je l'ai déjà résolu en utilisant cette même solution. Merci pour votre réponse!
Saggi Malachi
Ce lien n'est plus vivant. Cependant, il est toujours visible ici: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
jaggedsoft
1
@NextLocal Thanks - J'ai mis à jour le lien. J'ai laissé le domaine précédent expirer, mais c'était un alias du lien mis à jour ci-dessus.
Matt Beckman