Encaminhamento de padrão HAProxy Url

4

Estou usando o HAProxy para balanceamento de carga de alguns servidores da Web (modo HTTP). Os servidores da Web são estritamente dinâmicos, ou seja, não há conteúdo estático, apenas serviços da Web.
As URLs do tipo (análogo)

http://192.168.5.10:8080/small
http://192.168.5.10:8080/medium
http://192.168.5.10:8080/large

Agora, quando configuro o HAProxy para encaminhar as solicitações de entrada para esses 3 urls em algumas máquinas, estou especificando o url_path usando acl e path_end / path_beg , mas ao fazer a solicitação, recebo% erroNot Found on Accelerator, o que dificulta a identificação do problema.

Abaixo está a configuração que estou usando. Além disso, não está registrando nenhum erro.

    global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      10000
        srvtimeout      10000

frontend http_proxy
        bind 192.168.5.9:8888
        acl is_small path_end -i small
        acl is_medium path_end -i medium
        acl is_large path_end -i large

        use_backend web_server_small if is_small
        use_backend web_server_medium if is_medium
        use_backend web_server_large if is_large

backend web_server_small
        mode http
        balance roundrobin
        option httpclose
        server  web_1 192.168.5.10:8080 check
        server  web_2 192.168.5.11:8080 check

backend web_server_medium
        mode http
        balance roundrobin
        option httpclose
        server  web_1 192.168.5.12:8080 check
        server  web_2 192.168.5.13:8080 check

backend web_server_large
        mode http
        balance roundrobin
        option httpclose
        server  web_1 192.168.5.14:8080 check
        server  web_2 192.168.5.15:8080 check

É possível enviar o pedido do HAProxy para o web_server com o url_path?.

Se o HAProxy o receber como http://192.168.5.2:80/small , envie a solicitação para o servidor da Web como http://192.168.5.10:8080/small

    
por Rakesh 13.01.2014 / 10:44

2 respostas

4

Como seu caminho está contido no início da URL, por que não usar path_beg, o uso recomendado para path_end é para extensões de nome de arquivo.

        acl is_small path_beg -i /small
        acl is_medium path_beg -i /medium
        acl is_large path_beg -i /large
    
por 20.01.2014 / 07:06
3

O caminho de uma solicitação HTTP é sempre entregue ao servidor de back-end, por exemplo

GET /small HTTP/1.1

será visível por trás do HAproxy como apenas esse pedido. Se você suspeitar que isso de alguma forma é truncado para

GET / HTTP/1.1

no servidor por trás do HAproxy, você deve verificar isso usando

tcpdump -i any port 8080 -As1024 | grep GET

nesse servidor e observe as solicitações GET de entrada.

Estou indo em um membro e suponho que você espera que o HAproxy insira algo na frente do URI, como

    server web_1 192.168.5.14:8080/my/path check

transformaria uma solicitação para /small em uma solicitação para /my/path/small . Isto pode ser conseguido usando a opção reqrep , veja a documentação para detalhes.

    
por 15.04.2014 / 15:41