HAProxy - encaminhar para um servidor da web diferente com base no URI


14

Eu tenho um farm HTTP com a seguinte configuração:

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

Eu gostaria de adicionar uma opção que encaminharia todas as solicitações de um URI específico (por exemplo, / special) para um terceiro servidor da web. Como devo fazer isso?

Respostas:


23

Aqui está um post que escrevi sobre balanceamento de carga com base nos cabeçalhos do host:

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

Se você gostaria de corresponder a um URI ou diretório, sugiro usar path_beg em vez de hdr_end que é usado no exemplo fornecido nessa página. Abaixo está um exemplo de como você pode fazer isso com sua configuração:

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

Espero que ajude!


Ei, só vi sua resposta agora. Na verdade, eu já resolvi usando essa mesma solução. Obrigado pela sua resposta!
— Saggi Malachi

Este link não está mais ativo. No entanto, ele ainda pode ser visualizado aqui: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/…
— jaggedsoft 23/16

1
Obrigado @NextLocal - atualizei o link. Deixei o domínio anterior expirar, mas era um alias para o link atualizado acima.
— Matt Beckman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.