Configuração básica
Estamos executando o HAProxy em um par de caixas PFsense. Na frente, estamos servindo vários endereços IP e, para cada endereço IP, temos um par de descarregadores SSL por trás disso.
O HAProxy é usado para balancear a carga entre os dois. A configuração é mais ou menos esta:
frontend FOO_FRONT_80
bind 5.5.5.5:80 name 5.5.5.5:80 transparent
mode tcp
log global
maxconn 10000
timeout client 30000
use_backend FOO_BACK_80
backend FOO_BACK_80
mode tcp
log global
option log-health-checks
balance source
timeout connect 30000
timeout server 30000
retries 3
source ipv4@ usesrc clientip
server FOO_LB_001 10.0.0.21:80 check inter 10000 weight 100
server FOO_LB_002 10.0.0.22:80 check inter 10000 weight 100
Isso atende a algumas dezenas de milhares de conexões simultâneas.
Aqui está uma foto:
Problemas
Todas as solicitações GET regulares para os balanceadores de carga passam por OK. Mas as solicitações POST (qualquer coisa com corpo de solicitação> 50kBytes) não, com a conexão aparentemente sendo cortada entre o HAProxy e os Apaches de back-end.
Em um ambiente de laboratório, não conseguimos reproduzir isso. Mas na produção, esses problemas desapareceram quando desativamos a configuração de IP transparente do cliente.
Agora estamos tentando descobrir o que pode estar causando isso. Poderia ser um grande problema (duvido) ou é algum erro de configuração em algum lugar (onde?).
Qualquer ajuda seria muito apreciada.
Ruben