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                       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                        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                         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                       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                       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                      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?
8         Balanceamento de carga com DNS


    fim

Tópicos - Cluster de Balanceamento de Carga com DNS

  • 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?
  • 8.
    8 Balanceamento de carga com DNS fim