Load Balancing conexões TCP de longa duração

5

Estou tentando pesquisar a melhor maneira de carregar o balanceamento de conexões TCP de longa duração para o seguinte cenário:

Temos vários servidores por trás de um conjunto redundante de firewalls e os clientes estabelecem conexões TCP de longa duração (normalmente de 10 a 15 horas) para nossos servidores de back-end. Agora, o "balanceamento de carga" é tratado por meio de uma abordagem round-robin do lado do cliente para passar por uma lista de endereços IP que são hospedados nos nossos firewalls e NAT de acordo com os servidores de backend.

Gostaria de sair dessa abordagem e ter apenas um IP público e ter um balanceador de carga separado que possa verificar a integridade / carga dos servidores e distribuir as solicitações de conexão do cliente de entrada de acordo.

Um problema aqui é que cada cliente estabelece 3 conexões de soquete em 3 portas diferentes e eu preferiria que essas conexões fossem "fixas", então todas as 3 solicitações de conexão são enviadas para o mesmo servidor de backend.

Eu estive procurando por exemplo HAProxy mas eu não tenho certeza se é realmente adequado para o meu cenário. Temos uma contagem de conexões relativamente baixa (~ 300 clientes * 3 conexões de soquete para cada). Normalmente, vemos um volume de transferência de dados contínuo de ~ 15KB / s para cada soquete.

Qualquer entrada sobre isso é muito apreciada!

Obrigado,

Tom

    
por TJF 24.09.2010 / 21:13

2 respostas

2

Supondo que todas as suas máquinas de back-end estejam "ativas" e capazes de responder a solicitações, tudo o que você realmente precisa é de um front-end de balanceador de carga.

Um bom balanceador de carga será capaz de acompanhar o número de conexões indo para cada host e distribuir dinamicamente novas conexões para evitar sobrecarregar um dos sistemas de back-end (por "bom" quero dizer "caro", como Cisco Content Switches / Content Switch Service Modules). O preço anda de mãos dadas com os recursos aqui: os switches de conteúdo estão bem no nível de soluções.

Eu não tenho experiência com o HAProxy, mas parece que ele pode fazer balanceamento de carga com menos conexão, como opções de conteúdo, então isso provavelmente seria uma boa escolha (e com um preço muito mais atraente). Não tenho certeza se o HAProxy pode fazer rastreamento de origem (envie todas as conexões do mesmo IP para o mesmo back-end).

Alguns passos no firewall pf (ou o pfsense distribuição personalizada) pode fazer o balanceamento de carga (random ou round-robin, eu não acredito que eles possam fazer "menos conexões ponderadas" como uma opção de balanceamento como o conteúdo muda). O rastreamento de origem é implementado em pf, embora você possa ter que jogar com o tempo que a informação é retida para evitar problemas com conexões sendo movidas de um servidor para outro. Se você já usa o pf / pfsense como seu firewall, essa é uma opção gratuita: usamos isso na minha implantação atual com bons resultados, mas nossas conexões não duram tanto quanto as suas.

    
por 24.09.2010 / 21:32
2

Outros implementaram com sucesso o HAProxy e até ajudam a executar os sites do StackExchange. Outros front-ends populares da Web são Nginx e libra . Em última análise, a maioria dessas soluções será bastante eficaz para a maioria do tráfego da Web.

Se sua meta for alta disponibilidade e balanceamento de carga, sessões persistentes ou persistentes não são recomendadas , pois reduzem a eficácia de ambos.

Sem saber mais sobre sua arquitetura ou tipo de tráfego, recomendo LVS , que é a minha solução preferida. Você se refere à camada de rede, que é onde essa solução de balanceamento de carga é mais focada. Ele pode ser usado com a maioria dos protocolos e não se limita ao tráfego da Web.

    
por 24.09.2010 / 22:38