O HA Proxy não carregará o saldo de minhas solicitações da web. O que eu fiz errado?

1

Eu finalmente tenho o HA Proxy configurado e funcionando de uma forma que eu acho que quero. No entanto, não é balanceamento de carga as solicitações da web que ele recebe. Todas as solicitações estão sendo encaminhadas para o primeiro servidor no cluster. Vou colar minha configuração abaixo - se alguém puder ver onde posso estar errado, agradeço.

Esta é minha primeira tentativa de configurar servidores da Web em um ambiente * nix.

Primeiro, tenho o HA Proxy em execução no mesmo host que o primeiro servidor no cluster do Apache. Estamos movendo esses servidores para o virtual mais tarde, e eles terão diferentes hosts virtuais, mas eu queria que isso ocorresse agora.

Ambos os servidores da web estão recebendo suas verificações de integridade e estão respondendo corretamente. A página de estatísticas do haproxy informa corretamente os servidores que estão ativos e inativos. Eu testei isso alterando o nome do arquivo que está marcado. Ainda não coloquei nenhuma carga nesses servidores. Acabei de abrir os URLs em várias guias (navegação privada) e vários colegas de trabalho também acessaram a URL. Todo o tráfego vai para a WEB1. Estou equilibrando incorretamente?

global
      maxconn 10000
      nbproc 8
      pidfile /var/run/haproxy.pid
      log 127.0.0.1 local0 debug
      daemon

defaults
      log global
      mode http
      retries 3
      option redispatch
      maxconn 5000
      contimeout 5000
      clitimeout 50000
      srvtimeout 50000

listen WEBHAEXT :80,:8443
      mode http
      cookie sessionbalance insert indirect nocache
      balance roundrobin
      option httpclose
      option forwardfor except 127.0.0.1
      option httpchk HEAD /health_check.txt
      stats enable
      stats auth rah:rah
      server WEB1 10.90.2.131:81 cookie WEB_1 check
      server WEB2 10.90.2.130:80 cookie WEB_2 check

Editar:

Eu executei testes com êxito usando ab (benchmarking do apache) e a carga foi dividida igualmente entre os dois nós. Não tenho certeza do que estava fazendo de errado antes, mas a configuração acima funciona.

    
por Josh Smeaton 04.02.2011 / 07:59

4 respostas

3

Como você está verificando se todas as solicitações vão para um único servidor? Conforme você configurou o HAProxy, está usando sessões fixas em que o HAProxy define um cookie em cada cliente que o direciona para o mesmo nó de back-end para cada solicitação. Se você simplesmente continuasse a recarregar em um único navegador, todos os pedidos seriam enviados ao mesmo back-end.

    
por 04.02.2011 / 08:48
1

Acabei de experimentar a configuração exata que você forneceu. Em primeiro lugar a verificação de saúde não funcionou para mim, eu tive que adicionar um "/" infront de "health_check.txt" (haproxy-1.4.10).

No entanto, o balanceamento de carga funcionou bem. Cada vez que fecho e reabro meu navegador, sou direcionado para o outro servidor.

Você tem um aplicativo ao vivo que está testando (com seus próprios cookies) ou é apenas uma página de teste?

    
por 09.02.2011 / 10:47
0

Tente remover a instrução insert de cookie .

Seguindo a documentação para [ insert ]:

If the client has all the required information to connect to the same server next time, no further cookie will be inserted.

Assim, é possível que todos os pedidos obtenham o seu contrato WEB1 através deste cookie e, em seguida, siga esta direção em cada pedido.

PS: E você deve definir os mesmos nomes para o parâmetro cookie no servidor statement .

server WEB1 10.90.2.131:81 cookie WEB_LB check
server WEB2 10.90.2.130:80 cookie WEB_LB check
    
por 09.02.2011 / 08:44
0

Você tentou remover todas as opções envolvidas na persistência baseada em cookies? O que acontece?

Tente mudar o WEB_1 para o WEB1:

server WEB1 10.90.2.131:81 cookie WEB1 check
server WEB2 10.90.2.130:80 cookie WEB2 check
    
por 09.02.2011 / 08:41