Outras opções para “balancear a fonte” no haproxy

2

Eu tenho haproxy ouvindo em várias portas e apontei para vários servidores de back-end.

Idealmente, eu gostaria que as comunicações repetidas para a mesma porta fossem apontadas no mesmo backend.

"fonte de saldo" não é viável porque muitas vezes os pedidos vêm da mesma fonte.

Isso é factível?

Eu também estou aberto a soluções não-haproxy. O protocolo usado não é importante, mas definitivamente não é http. Apenas assuma o seu ssh e você não deve errar.

EDIT: Para esclarecer, imagine que eu tenho 10 'servidores backend' e 5 'clientes'. Cada servidor backend só pode lidar com uma conexão por vez. Eu tenho mais servidores do que o necessário, caso alguns se tornem indisponíveis. Eu apontarei manualmente cada cliente para a (s) porta (s) haproxy. Eu quero garantir que cada cliente sempre chegue a um servidor de back-end (que é simples), mas de preferência para o mesmo sempre que estiver disponível.

    
por PriceChild 17.03.2011 / 17:43

3 respostas

2

Veja como resolvi meu problema.

frontend name_of_frontend
    bind *:20000-20010
    default_backend     servers

backend servers
    balance roundrobin
    stick-table type integer size 1k expire 3h
    stick on dst_port
    server name ip-address check maxconn 1
    ...
    server name ip-address check maxconn 1

Willy advertiu em um comentário de resposta anterior que "não garantirá que cada cliente vá para uma porta diferente".

No meu caso específico, tenho controle total sobre meus 'clientes'. A única razão pela qual os estou apontando para portas diferentes no servidor proxy é para que eu possa identificá-los como clientes diferentes. Este definitivamente não é um sistema 'público'.

    
por 11.04.2011 / 17:07
1

O haproxy não implementa a persistência ip: port porque em um proxy não faz sentido. Isso faz muito sentido em um balanceador de carga com base em pacotes (por exemplo: LVS), pois permite o balanceamento de carga sem monitoração com distribuição e persistência semelhantes a round-robin. Mas em um proxy, as conexões são necessariamente mantidas em ambas as extremidades do começo ao fim. Então eu realmente não sei o que você está tentando alcançar com precisão.

Se o que você precisa é apenas uma porta de destino - > relação de servidor, que parece muito estranho, porque você precisa ouvir em muito mais portas do que você tem servidores, a fim de obter um bom equilíbrio. Eu realmente não tenho certeza se você gostaria de fazer isso.

    
por 18.03.2011 / 06:54
0

Eu não sou especialista em haproxy, mas sei que tem outras opções de balanceamento de carga além de source (no mínimo, round-robin). Eu aconselharia a verificação da documentação do HAProxy para ver quais são os recursos e as limitações de cada modo de balanceamento de carga.

Você também pode obter o que deseja usando o pf firewall (em uma de suas muitas encarnações - o pfSense é um bom um, se você precisar de uma GUI). Configure o balanceamento de carga no firewall (round-robin ou similar) com a opção sticky-address definida e você deverá ter uma configuração viável.

    
por 17.03.2011 / 18:44

Tags