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?

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!


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.