haproxy tcp balanceamento de carga roundrobin não funciona como esperado

2

Sou novo no haproxy e o uso para balanceamento de carga TCP de logs rsyslog para conectores ArcSight. Para a vida de mim, não consigo fazer com que o tráfego seja equilibrado uniformemente em todos os nós do pool (que é o comportamento desejado). Eu tentei muitas permutações de pesos e maxconn sem sucesso.

Parece que isso deve ser um problema fácil, mas os comportamentos do nó por pool são muito confusos. Além disso, como a maioria das pessoas usa o haproxy para balanceamento de carga http, estou encontrando escassa documentação sobre a melhor maneira de fazer o que estou tentando fazer.

Alguém tem alguma informação, configurações comprovadas ou etapas de solução de problemas para recomendar?

Obrigado!

Aqui está nossa configuração atual:

global
    log 127.0.0.1       local0
    log 127.0.0.1       local1 notice
    maxconn 256000
    user haproxy
    group haproxy
    spread-checks 5
    daemon
    quiet

defaults
    log global
    option dontlognull
    option redispatch
    option allbackups
    maxconn 256000
    timeout connect 5000

listen stats :1936
    mode http
    stats enable
    stats realm Haproxy\ Statistics
    stats uri /
    stats auth admin:savetheday

frontend rsyslog_netscreen
    bind 127.0.0.1:8514
    mode tcp
    option tcplog
    option contstats
    option tcpka
    default_backend rsyslog_netscreen_backend

backend rsyslog_netscreen_backend
    balance roundrobin
    mode tcp
    option tcpka
    option srvtcpka
    server netscreen1 localhost:9515 weight 1 maxconn 1024 check
    server netscreen2 localhost:9516 weight 1 maxconn 1024 check
    server netscreen3 localhost:9517 weight 1 maxconn 1024 check
    server netscreen4 localhost:9518 weight 1 maxconn 1024 check
    server netscreen5 localhost:9519 weight 1 maxconn 1024 check
    server netscreen6 localhost:9520 weight 1 maxconn 1024 check
    
por Keith Miller 06.03.2014 / 00:56

2 respostas

5

Observe que roundrobin não é uma boa estratégia para atingir uma carga uniforme. Ele garantirá que cada backend receba o mesmo número de conexões ao longo do tempo, mas não se importa quanto tempo cada conexão durará.

Na exibição stats , deve ficar aparente que o número total de sessões por servidor de back-end é quase igual (se o tempo de atividade for igual). O número de sessões atuais pode variar um pouco, no entanto.

Descobrimos que usar leastconn em vez de roundrobin gera uma carga muito mais uniforme. Isso faz sentido, porque os servidores que estão presos a muitos clientes de longa duração que mantêm sua conexão não precisam ser sobrecarregados com novas conexões de entrada.

    
por 15.04.2014 / 15:11
-2

use a roundrobin para conexões de curta duração e use o terminal para conexões razoavelmente longas.

    
por 18.08.2016 / 19:58

Tags