Estou tentando configurar 2 servidores Glassfish em uma configuração de balanceamento de carga usando UCARP e HAProxy
Server1 tem 2 IPs x.x.x.17 e x.x.x.18
O HAProxy está ouvindo apenas o x.x.x.18 e o Glassfish ouvindo apenas o x.x.x.17 rodando com a seguinte configuração ...
global
maxconn 4096
debug
user haproxy
group haproxy
defaults
mode http
retries 3
option redispatch
listen wms x.x.x.18:8080
source x.x.x.18
option httpchk
balance leastconn
server Server1 x.x.x.17:8080 check inter 2000 fastinter 500 fall 2 weight 50
server Server2 x.x.x.19:8080 check inter 2000 fastinter 500 fall 2 weight 50
Server2 com 1 IP x.x.x.19 está executando o Glassfish
Mesmo que eu possa wget manualmente a página de x.x.x.17: 8080 e receber uma resposta 200 OK, HAProxy diz Server1 é DOWN e não direciona quaisquer solicitações para ele. Não consigo encontrar nenhum motivo para isso.
Aqui está um trecho do log de acesso Server1 com as verificações ...
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:29 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:29 +0000" "OPTIONS / HTTP/1.0" 200 0
Aqui está um trecho do log de acesso do Servidor2 com as verificações ...
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:25 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:25 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:31 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:31 +0000" "OPTIONS / HTTP/1.0" 200 0
Se eu remover a opção httpchk, o Server1 verificará como UP, no entanto, esta não é uma solução permanente, porque precisamos que ela seja bem-sucedida se a resposta realmente falhar.
Alguma idéia?
(HAProxy é v1.3.22)
Addn: Acabei de tentar adicionar o server3 x.x.x.13 rodando o Glassfish mas no Windows e isso também diz para baixo quando está ativo e acessível da máquina proxy.
Addn2: Depois de instalar o v1.4 do haproxy para obter códigos de erro, o erro é informação de resposta inválida do Layer7: "HTTP / 1.1". Quando recuperamos a página manualmente, ambos os servidores UP e DOWN retornam HTTP / 1.1 200 OK como a primeira linha.
Então, depois de executar o wireshark para ver o que está acontecendo. No servidor glassfish que funciona (e todos os outros servidores da Web que eu verifiquei) a resposta HTTP / 1.1 200 OK vem no primeiro pacote. Nos servidores glassfish que não funcionam, a resposta vem em 3 pacotes de HTTP / 1.1, depois em 200 e depois em OK.
Então, alguma idéia de por que o HAProxy não está lidando com vários pacotes ou como configurar o glassfish para não dividi-lo? (maxKeepAliveRequests = 1 já)