Balanceamento simples com BALANCE

Este é um artigo simples para quem precisa implementar um balanceamento ou distribuição de carga e/ou serviço.

[ Hits: 9.876 ]

Por: Gleison em 02/12/2009 | Blog: http://gleisonrodrigo.xpg.uol.com.br/


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.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Nagios enviando alertas via WhatsAPP

Leitura recomendada

Rodando vídeos .rmvb no Linux

Instalando pacotes .tar.gz e .tar.bz2

Criando aplicação MVC utilizando DOTNET Core no GNU/Linux

Aprendendo LaTeX com o Texmaker

Virtualbox - clonando e reduzindo o tamanho de HDs

  
Comentários
[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

[3] Comentário enviado por grandmaster em 02/12/2009 - 22:39h

Valeu pelo artigo, ideia interessante.

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[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 !!!

[8] Comentário enviado por manoserpa em 04/12/2009 - 09:22h

Opa!

Segue página que encontrei sobre a ferramenta.

http://www.inlab.de/balance.html


Valeu!

[9] Comentário enviado por dailson em 04/12/2009 - 10:50h

Interessantíssima ferramenta!!!
Parabéns pelo artigo/dica!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts