next up previous contents
Next: LVS Up: Balanceamento de Carga Previous: Cluster ou não?   Sumário


Balanceamento de carga com DNS e Netfilter

Existem diversos modos de se fazer um cluster de balanceamento de carga, por exemplo através de um servidor de DNS.

Um servidor de DNS pode ter configurados diversos endereços respondendo por um certo nome de domínio, assim, os requisitantes do endereço acabam resolvendo o nome com endereços IP diferentes e realizando conexões com diversos nós do cluster de maneira transparente.

Em Linux, ainda outro método é usar o netfilter. Netfilter é um módulo do kernel que é responsável por realizar ações em pacotes de conexões realizadas por uma máquina, segundo regras pré-establecidas.

Talvez o uso mais conhecido para o netfilter seja a montagem de firewalls. Um firewall é uma configuração de regras que especifica se um pacote que entra ou sai da máquina deve chegar a seu destino ou deve ser descartado, baseado em seus dados, isto é, endereço do remetente, de destino, porta de destino, tipo do protocolo e diversas outras características.

Mas o netfilter também pode realizar NAT ou Network Address Translation realiza uma troca do endereço de destino (DNAT ou Destination NAT) ou de origem (SNAT ou Source NAT).

Particularmente o DNAT pode ser feito para uma coleção de máquinas através de uma regra como a da figura [*]. A sua operação está ilustrada na figura [*].



Figura: Balanceamento de Carga com DNAT
7#7





Figura: Funcionamento de balanceamento de carga por DNAT
[width=7cm]img/dnat.eps



Uma regra de DNAT, no entanto, tem que estar relacionada com uma de SNAT, já que o cliente vai receber a resposta de um servidor que não foi o qual para o que pediu, e vai acabar ignorando a resposta. O SNAT pode ser configurado com uma regra equivalente à da figura [*] e vai se encarregar de dizer ao destinatário do pacote que foi ele quem enviou.

O computador encarregado da distribuição constuma ser chamado de director enquanto que os servidores que se encarregam de atender as requisições reais são chamados de real servers.

Para entender melhor o iptables e o nat refira-se a [9] e [10], para um tutorial a fundo refira-se a [8].

No entanto, o netfilter só faz balanceamento baseado em round robin, o que muitas vezes não é o bastante. Gostariamos que máquinas fossem selecionadas de acordo com a carga que estão suportando.

Além disto tem mais um problema que é que todo o trafego, tanto de ida quando de volta passa pelo director. Dependendo da topologia da rede pode ser que isto seja um desperdício.


next up previous contents
Next: LVS Up: Balanceamento de Carga Previous: Cluster ou não?   Sumário
Guilherme Tomas O'Connor de Lungarzo 2004-02-27