1. Um cluster de balanceamento de carga distribui a carga de trabalho entre várias máquinas para evitar sobrecarga ou ociosidade. Isso pode ser feito usando um servidor DNS que direciona requisições para diferentes endereços IP.
2. O documento explica como configurar um servidor DNS no Slackware Linux para balancear a carga entre servidores HTTP e FTP usando os endereços IP 192.168.73.2 e 192.168.73.3.
3. Testes foram sugeridos para verificar a ordem do balanceamento de carga e o comportamento durante
1. 1 Balanceamento de carga com DNS
Um Cluster de Balanceamento de Carga é um conjunto de máquinas (duas
ou mais) nas quais estão sendo executadas aplicações requerida por um número
muito grande pessoas.
Um bom Cluster de Balanceamento de Carga deve ter a capacidade de receber
os pedidos de requisição de serviço de vários clientes e distribuir (balancear a
carga de trabalho) tais serviços às máquinas que constituem o cluster de forma
que nenhuma máquina fique sobrecarregada e/ou ociosa.
Um exemplo simples para se obter este tipo de tecnologia é utilizando um
servidor DNS (Domain Name System). Sendo que, quando o “cliente” vai
acessar um serviço na rede este o faz utilizando nomes, e não endereços IPs,
esta resolução de nomes em endereços IPs se dá via servidor DNS. Assim,
podemos dizer para um servidor DNS que um dado nome pode ser resolvido por
vários IPs (várias máquinas).
Cliente 1 Servidor DNS
Cliente N
Servidor HTTP 1
Servidor HTTP 2
2. 2 Balanceamento de carga com DNS
Desta forma, podemos dizer para o servidor DNS que o nome www.cluster.com,
pode ser resolvido por um servidor HTTP 1 (com endereço IP, 200.0.0.1) e por um
servidor HTTP 2 (com endereço IP, 200.0.0.2), por exemplo. Assim, quando um
dado cliente tentar acessar www.cluster.com, ele vai ser redirecionado para o
servidor HTTP 1, quando um segundo cliente tentar acessar o www.cluster.com ele
pode ser direcionado ao servidor HTTP 2, e assim por diante!
Para fazermos um cluster de balanceamento de carga simples com o DNS no
Slackware Linux devemos seguir os seguintes passos:
obs. Nossa rede vai ser a 192.168.73.0/24. O servidor DNS vai ser o 192.168.73.1,
e os servidores vão ser o 192.168.73.2 e 192.168.73.3.
1. Editar o arquivo /etc/named.conf;
2. Criar o arquivo de zona reversa, no nosso caso vai ser /var/named/caching-
example/domain.rev;
3. Criar o arquivo de domínio, no nosso caso vai ser /var/named/caching-
example/cluster.host;
4. Iniciar o servidor de nomes (DNS)
5. Configurar os servidores HTTP.
3. 3 Balanceamento de carga com DNS
1. Editar o arquivo /etc/named.conf:
vi /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "caching-example/named.ca";
};
zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};
zone "0.73.168.192.in-addr.arpa" IN {
type master;
file "caching-example/domain.rev";
};
zone "cluster.com" IN {
type master;
file "caching-example/cluster.host";
};
4. 4 Balanceamento de carga com DNS
No primeiro passo iremos editar o arquivo /etc/named.conf, neste iremos apenas
criar as zonas reversa e de domínio e apontar os respectivos arquivos que
conterão as configurações para esta zona. A parte acrescentada está em negrito.
2. Criar o arquivo de zona reversa, no nosso caso vai ser /var/named/caching-
example/domain.rev;
# vi /var/named/caching-example/domain.rev
$TTL 86400
$ORIGIN cluster.com.
73.168.192.in-addr.arpa IN SOA servidor.cluster.com. root.cluster.com.
(
&n bsp; 2004101901 ; Serial de sincronização
&n bsp; 3H ; refresh
&n bsp; 15M ; retry
&n bsp; 1W ; expiry
&n bsp; 1D ) ; minimum
NS dns.cluster.com.
2 IN PTR www
3 IN PTR www
2 IN PTR ftp
3 IN PTR ftp
5. 5 Balanceamento de carga com DNS
Bem como nossa idéia é apenas fazer um simples servidor de DNS balancear
carga e não montar um servidor real de DNS, o arquivo de zona reversa não vai
ser construído e configurado a risca é vai servir apenas de referencia.
O próximo passo é criar o arquivo de domínio:
3. Criar o arquivo de domínio, no nosso caso vai ser /var/named/caching-
example/cluster.host;
vi /var/named/caching-example/cluster.host
$TTL 86400
@ IN SOA servidor.cluster.com. root.servidor.cluster.com. (
2004101901 ;Serial de sincronização
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
NS dns.cluster.com.
IN MX 10 cluster.com.
localhost IN A 127.0.0.1
cluster.com. IN A 192.168.73.1
dns IN A 192.168.73.1
www IN A 192.168.73.2
IN A 192.168.73.3
ftp IN A 192.168.73.2
IN A 192.168.73.3
6. 6 Balanceamento de carga com DNS
Bem, é justamente o arquivo de domínio que vai fazer o esquema de
balanceamento de carga, observe que na entrada do www temos um endereço IP
que é o 192.168.73.2 e logo na seqüência temos uma entrada em branco que faz
referencia também ao www, mas indica o IP 192.168.73.3. O mesmo acontece
com o servidor ftp.
4. Iniciar o servidor de nomes (DNS):
# sh /etc/rc.d/rc.bind start
5. Configurar os servidores HTTP:
Nas máquinas que serão os servidores HTTP inicie o apache com o comando:
apachectl start. É aconselhável criar paginas diferentes em cada servidor HTTP,
para que seja observado a alternância entre os servidores (gerada pelo servidor
DNS). É também interessante criar um servidor FTP para fazer testes também, tal
servidor deve ser iniciado pelo inetd.
Observação, lembre para fazer o balanceamento de carga os clientes devem ter
como servidor DNS primário, o servidor DNS que você acabou de criar! No Linux
teremos que editar o arquivo /etc/resolv.conf e colocar a seguinte linha
nameserver 192.168.73.1.
7. 7 Balanceamento de carga com DNS
Agora que você configurou o servidor DNS para que este faça o balanceamento de
carga, vamos fazer alguns testes e responder a algumas perguntas:
1. Utilizando o ping verifique qual é a ordem em que o servidor DNS vai fazer o
balanceamento.
2. Agora usando um browser acesse várias vezes o servidor, e verifique qual é a
ordem de acesso aos servidores HTTP. Tente utilizar vários browsers ao mesmo
tempo, tal como: Firefox, konqueror, Seamonkey, lynx, links, etc.
3. Faça também testes com os servidores FTP, fazendo acessos via browsers e
principalmente via linha de comando, observando a ordem de balanceamento.
4. Corte a conexão de um dos servidores e observe como o servidor trata a
indisponibilidade de tal servidor. Ele redireciona conexões para um servidor
inativo ou não? O que acontece quanto o servidor voltar a ativa?
5. De acordo com o que você pesquisou nas questões acima responda qual é o
esquema de balanceamento que o DNS utiliza? Se possível relacione com algum
algoritmo de balanceamento de carga.
6. Quais foram as vantagens e desvantagens observadas quanto ao uso do DNS
para fazer o balanceamento de carga?