Load Balancing com DNS

You’re able to see this post in english too.

Olá!

O artigo deste mês mostrará como é fácil balancear a carga de uma aplicação utilizando seu DNS.

No entanto, você deve ser capaz de realizar as seguintes ações:

  1. Retirar do seu servidor web a responsabilidade de guardar os dados de sessão da aplicação;
  2. Ter acesso ao servidor DNS que realiza os apontamentos de sua aplicação;
  3. Ter mais de um servidor web para processar as requisições da aplicação (óbvio, mas é bom dizer…).

Se a aplicação é escrita em PHP, pode-se tratar o primeiro item acima via função session_set_save_handler. Está fora do escopo deste post mostrar como fazer isso, mas uma visita no website do PHP lhe detalhará o uso.

O grande truque está realmente na configuração realizada no servidor DNS (2º item). Configure, para o mesmo registro do tipo A de sua aplicação, os dois (ou mais) endereços IP que possam processar as requisições web. O trecho de código abaixo foi retirado do arquivo de configuração de zonas do servidor DNS responsável por um domínio fictício qualquer:


ns1 IN A 192.168.0.1
www IN A 192.168.0.2
mta IN A 192.168.0.3
app IN A 192.168.0.4
app IN A 192.168.0.5


Esta característica de balancear as requisições de um host para diferentes endereços IP direto no DNS também pode ser realizada via registros do tipo SRV.

A tela abaixo evidencia (pelos logs do Apache) que ambos servidores estão tratando as requisições.

Load Balancing de aplicação com DNS

Load Balancing de aplicação com DNS

O cenário se complicará caso sua aplicação necessite receber dados via upload, o que implicará na necessidade de um ponto único para armazenamento dos arquivos.

Até 😉

About Adriano Laranjeira

Software engineer & developer See more at http://about.me/arglbr
This entry was posted in Português and tagged , , . Bookmark the permalink.

1 Response to Load Balancing com DNS

  1. Pingback: Adriano Laranjeira » Blog Archive » Load Balancing with DNS

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s