HAProxy apenas trabalhando para localhost

1

Basta configurar o HAProxy pela primeira vez, como um balanceador de carga único, equilibrando dois servidores, cada um executando Varnish e Nginx.

Aqui está o arquivo cfg:

global

        #uid 99
        #gid 99
        daemon
        stats socket /var/run/haproxy.stat mode 600 level admin
        maxconn 40000
        ulimit-n 81000
pidfile /var/run/haproxy.pid
        defaults
        mode    http
        contimeout      4000
        clitimeout      42000
        srvtimeout      43000
        balance roundrobin
listen webfarm 91.227.223.61:80
           mode http
           stats enable
           stats auth admin:password
           balance roundrobin
           cookie web insert indirect nocache
           option httpclose
           option forwardfor
           option httpchk HEAD /check.txt HTTP/1.0
           server webA 91.227.223.58:80 cookie A check
           server webB 91.227.221.121:80 cookie B check
           option          forwardfor except 91.227.223.61
           reqadd          X-Forwarded-Proto:\ https
           reqadd          FRONT_END_HTTPS:\ on
listen  stats :7777
        stats enable
        stats uri /
        option httpclose
        stats auth admin:password

O problema é que isso só funciona do host local. Se eu fizer curl 91.227.223.61 da máquina local, a página será carregada corretamente. De qualquer outra máquina, eu espero vários segundos para a página expirar.

Parece que não existe nenhum firewall em nenhum dos servidores (ainda) e tentei iptables -F em cada máquina.

    
por James 23.12.2012 / 19:51

3 respostas

1

Eu tenho o mesmo problema. Meu HAProxy estava funcionando (confirmado com curl) localmente. O comando

iptables -P INPUT ACCEPT && iptables -P OUTPUT ACCEPT

resolveu meu problema!

    
por 07.03.2018 / 19:10
0

Para os registros, use apenas log 127.0.0.1 local0 (sem a filtragem em notice ) e certifique-se de que seu syslogd esteja escutando o soquete UDP (por exemplo: syslogd -r ). Por favor, adicione também "opção httplog" para obter um registro da solicitação completa.

O que você descreve me faz pensar em três possibilidades:

  • a conexão está bloqueada em algum outro lugar e nem sequer alcança o haproxy
  • o servidor não pode responder a um nome de host diferente de "localhost" e fecha a conexão.
  • o servidor responde com um redirecionamento para um local que a curva não pode alcançar (por exemplo, localhost: 12345), fazendo com que a onda tente algumas vezes e falhe.

Os logs vão te dizer isso. BTW, você tentou com curl -i ou telnet para ver o que é retornado pelo servidor?

Além disso, quando você configurar essa configuração, substitua "option httpclose" por "option http-server-close", que suportará o keep-alive de HTTP do lado do cliente (suponho que você esteja executando 1.4 ou 1.5 -dev), resultando em melhor desempenho e menor latência.

    
por 27.12.2012 / 08:36
0

talvez iptables -F não seja suficiente. Experimente iptables -P INPUT ACCEPT && iptables -P OUTPUT ACCEPT

    
por 27.12.2012 / 09:17

Tags