Pular para o conteúdo

Balanceamento simples com BALANCE

Este é um artigo simples para quem precisa implementar um balanceamento ou distribuição de carga e/ou serviço.
Gleison silent-man
Hits: 12.258 Categoria: Linux Subcategoria: Software
  • Indicar
  • Impressora
  • Denunciar

Introdução

Recentemente tive a missão de retirar uma solução de terminal server usando o TSWEB por questões burocráticas e incompatibilidade com softwares (TSWEB não roda em outro browser que não seja o IE).

Hoje temos um script em .php que faz uma contagem quando alguém acessa o TSWEB, esse por vez redireciona as conexões (quando o botão conectar é pressionado) para 3 de nossos servidores de TS.

Como os servidores tem as configurações distintas (memória, processador, disco etc), existem algumas prioridades.

Assim:
  • As primeiras 5 conexões ele joga para o SERVIDOR_A.
  • As próximas 3 conexões ele joga para o SERVIDOR_B.
  • As próximas 2 conexões ele joga para o SERVIDOR_C.

Temos aí 10 conexões que são contadas por um arquivo .txt que zera quando alcança esse número (10) e começa tudo de novo.

Bom, vou deixar um pouco de blá-blá-blá e colocar a mão na massa.

Instalação do Balance

A distribuição usada foi Debian Lenny.

Para quem usa outra distribuição, segue link para download:
Instalando:

# aptitude install balance

Após isso é só rodar o programa conforme sua necessidade (man balance).

No meu caso fiz assim:

# balance 3389 SERVIDOR_C::40 SERVIDOR_B::40 ! SERVIDOR_A

Explicando:

Ele cria um "daemon", uma instância ouvindo na porta 3389 e joga ALTERNANDO 40 conexões para o SERVIDOR_C e 40 conexões para o SERVIDOR_B. Quando ambos alcançarem seu limites de conexões, ele começa a jogar todas as outras novas conexões para o SERVIDOR_A.

Sempre que um cliente desconecta digamos do SERVIDOR_B (esse estava com seu limite todo ocupado 40), a próxima conexão ele deveria jogar para o SERVIDOR_A, mas antes ele vê que tem uma conexão livre no SERVIDOR_B e ocupa essa.

Considerações

Bom, não é algo "EXTRAORDINÁRIO", mas me ajudou bastante e espero que ajude alguém.

Para quem ia fazer via iptables (rsrsrsr)... aí vai uma dica:

# iptables -t nat -A PREROUTING -i eth0 -p tcp -m statistic --mode nth --every 3 --packet 0 -d $if_lan --dport 3389 -j DNAT --to 192.168.0.3
# iptables -t nat -A PREROUTING -i eth0 -p tcp -m statistic --mode nth --every 3 --packet 1 -d $if_lan --dport 3389 -j DNAT --to 192.168.0.5
# iptables -t nat -A PREROUTING -i eth0 -p tcp -m statistic --mode nth --every 3 --packet 2 -d $if_lan --dport 3389 -j DNAT --to 192.168.0.3


É algo bem parecido, porém é sempre 1 para 1.

Referências

  • apt-cache search balance (foi assim que achei o carinha rsrsrsrs).
  • man balance
  • man iptables

[]s

NOTA DE MODERAÇÃO: Apesar do texto não possuir conteúdo o suficiente para ser publicado como artigo, o mesmo ganha pontos por sua relevância, objetividade, utilidade e por se tratar de um assunto inédito no VOL.

   1. Introdução

Nagios enviando alertas via WhatsAPP

Configurando o Lopster

Projetos de software livre descontinuados: um problema com solução

Gerenciamento de Lan House com Main Control System

Consumo de link com Cacti

NFS simples e fácil usando Mandriva e Kurumin

#1 Comentário enviado por cleysinhonv em 02/12/2009 - 15:26h
Olá,

O assunto é bom, muito bom, porém poderia ter detalhado mais, explicado melhor, mas isso não tira o brilho do seu artigo, parabéns!
#2 Comentário enviado por silent-man em 02/12/2009 - 18:50h
Opa, Valeu!!! :P
#4 Comentário enviado por michel5670 em 03/12/2009 - 09:22h
Colega isto que dizer que se eu tiver um webserver tipo apache ou um servidor de e-mail ele vai dividir o acesso entre os servidores....
Desculpe pela pergunta mais e que o artigo não ficou claro para mim...
Obrigado...
#5 Comentário enviado por manoserpa em 03/12/2009 - 13:26h
Opa!

Legal, não conhecia a ferramentas mas vou dar uma olhada depois.

Valeu.
#6 Comentário enviado por silent-man em 03/12/2009 - 17:02h
Vlw grandmaster, michel, manoserpa.

michel,

O que ele faz é priorizar!
balance smtp 192.168.0.1::40 ! 192.168.0.2

As primeiras 40 conexões smtp serão direcionadas para o servidor 192.168.0.1. Estando todas as 40 completadas, a Quadragésima primeira(41) será direcionada para o servidor 192.168.0.2 assim por diante até que desocupe uma conexão no servidor 192.168.0.1.

Agora se você quer dividir( 1 x 1 )

balance smtp 192.168.0.1 192.168.0.2
Aí sim ele vai dividir.

Espero que tenha ficado um pouco mais claro!

Procurem uma outra ferramenta chamada "PEN".

Ela dá mais opções que o balance, inclusive gera um status das conexões em html.

Flwsss!!

#7 Comentário enviado por michel5670 em 04/12/2009 - 09:11h
Obrigado colega agora ficou mais claro !!!
#9 Comentário enviado por dailson em 04/12/2009 - 10:50h
Interessantíssima ferramenta!!!
Parabéns pelo artigo/dica!!

Contribuir com comentário

Entre na sua conta para comentar.