Balanceamento simples com BALANCE

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

[ Hits: 11.306 ]

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

Instalando o RealPlayer 10 no Linux

ANSIBLE Series: Teoria ... Um papo sobre DevOps

DNS BIND para integração em domínios AD (com Windows Active Directory ou Samba)

Planejando e migrando softwares do Windows para o Linux

Instalação e correção de erros do DBDesigner 4 no Linux

  
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 RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts