Você tem conexão persistente ativada? O tempo limite de conexão persistente pode ser definido usando -p [tempo limite]
Isso mantém a conexão b ativa para rotear mais solicitações do IP do cliente para o mesmo servidor real.
Estou usando o keepalived para balancear a carga de conexões entre um número de servidores TCP. Eu não espero que importe, mas o serviço neste caso é rabbitmq. Estou usando balanceamento de tipo NAT com round-robin ponderado.
Um cliente se conecta ao servidor assim:
[client]-----------[lvs]------------[real server]
a b
Se um cliente se conecta ao LVS e permanece ocioso, não enviando nada no soquete, isso eventualmente atinge o tempo limite, de acordo com os tempos limite definidos usando ipvsadm --set
. Neste ponto, a conexão marcada 'a' acima corretamente desaparece da saída de netstat -anp
no cliente e da saída de ipvsadm -L -n -c
na caixa lvs. A conexão 'b', no entanto, permanece ESTABELECIDA de acordo com netstat -anp
na caixa do servidor real.
Por que isso? Posso forçar o lvs a redefinir corretamente a conexão com o servidor real?
Você tem conexão persistente ativada? O tempo limite de conexão persistente pode ser definido usando -p [tempo limite]
Isso mantém a conexão b ativa para rotear mais solicitações do IP do cliente para o mesmo servidor real.
Você pode usar o comando --set para diminuir o tempo limite.
/sbin/ipvsadm --set 3600 120 300
Ou dê haproxy uma tentativa.
Tags load-balancing lvs