Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Criando um cluster de balanceamento de carga para servidores web

Imprimir
Avaliação do Usuário: / 7
PiorMelhor 

 

Todo mundo quer criar um site de sucesso e atrair infinitos usuários, oferecer produtos e serviços e ganhar muito dinheiro, mas ter uma quantidade muito grande de acesso pode fazer com que o servidor web não seja capaz de dar conta de todas as requisições de acesso que lhe são enviadas. Aí seu site de sucesso não estará disponível a 100% dos usuários que desejam acessá-lo, muito desistirão e terão a impressão de que o serviço é ruim, pois fica indisponível em momentos de tráfego intenso, aí lá se foi o sucesso!

Há várias maneiras de resolver esse problema, que também passa pela banda disponível, mas isso ficará para outro tutorial. Nesse vamos tratar de um jeito sem considerar fatores externos, principalmente de rede.

Uma das formas de tratar esse problema é criar um cluster de balanceamento de carga. Resumidamente, o cluster de balanceamento de carga é algum agente de software ou hardware recebe todas as requisições e repassa para um servidor, de um grupo de servidores, que estiver com o menor tráfego ou maior poder de processamento. Para o usuário todo esse processo é transparente, ele não faz a menor ideia de quem está atendendo suas requisições.

Ok, sem mais bla-bla-bla e vamos criar nosso próprio cluster de Load Balance!

Vou considerar que você tem três máquinas virtuais com o Debian em instalação mínima disponíveis em seu computador. Para ter uma ideia de como fazer isso leia Realizar uma instalação mínima do Debian em uma máquina virtual

Para a configuração de rede das máquinas virtuais use-a em modo bridge (ponte) para que do seu computador você tenha acesso aos servidores web que serão feitos.

Verifique e anote o endereço IP de cada uma delas para que você possa acessá-las depois.

Para ver o IP das suas máquinas virtuais use o comando:

ifconfig

Uma das máquinas virtuais será nosso elemento de balanceamento de carga e nas outras duas iremos simular servidores web, que serão os elementos balenceados.

Primeiro certifique-se de que seu Debian está atualizado:

apt-get update
apt-get dist-upgrade
apt-get autoclean

Selecione as duas máquinas que receberão o servidor web e instale o Apache:

apt-get install apache2 php5

Agora altere o arquivo index.html do diretório /var/www/ para que possamos identificar qual servidor que atende nossas requisições.

No meu caso irei alterar o cabeçalho da página, de It works! para colocar o nome do servidor, no meu caso: máquina01 em uma e máquina02 em outra.

O arquivo original de um dos servidores:

O arquivo alterado:

O resultado, acessando a máquina virtual que criei com o nome de MAQUINA02:

Também tenho minha MAQUINA01:

Ok, temos dois servidores WEB, isso terá algumas implicações, mas depois falo disso. Agora vamos focar em instalar o balanceador de cargas. Iremos usar o POUND para isso.

O pound é muito fácil de entender e de usar. Ele configura as máquinas (outros servidores) em um cluster e trabalha com conexões de entrada HTTP. Quando a conexão é aceita ele manda para uma das máquinas do grupo (cluster) para que seja atendida.

A instalação é simples:

apt-get install pound

Então vem a configuração criando-se e editando-se o arquivo /etc/pound.cfg. Que na versão original é assim:

Vou dar um exemplo de configuração que atende aos meus testes, você pode adequar da maneira de resolva seus problemas.

Da configuração original alterei as seguintes linhas:

Alive    2

Essa linha determina de quanto em quanto tempo, em segundos, o balanceador de cargas deve verificar os servidores balanceados. No original o valor é 30.

ListenHTTP
 Address 192.168.2.229
 Port     80
 xHTTP  0
 Service
 BackEnd
 Address 192.168.2.238
 Port 80
 End
 BackEnd
 Address 192.168.2.164
 Port 80
 End
 Session
 Type    Cookie
 ID        “loadbal_session”
 TTL      300
 End
 End
End

Com esse bloco fazemos o seguinte:

O balanceador de cargas vai “ouvir” as requisições na porta 80 e no seu próprio IP. Essa configuração é interessante, pois atrás de um firewall pode haver redirecionamento de portas.

Em xHTTP não permitimos documentos com cabeçalhos PUT e DELETE, apenas GET e POST. Isso evita alguns problemas de segurança.

Na série BackEnd especificamos quais serão os servidores web e em qual porta atenderão (80).

Em Session dizemos que o controle de sessão será feito por cookie, o nome do cookie será loadbal_session e o tempo de vida será de 300 segundos.

Agora precisamos editar o arquivo /etc/default/pound e alterar a linha:

startup=1

Originalmente a linha vem com o valor zero, fazemos isso para indicar que o pound tem nova configuração.

Para iniciar o serviço:

/etc/init.d/pound start

OK, para testar abra seu navegador e asse o IP do balanceador de cargas. Hora você acessará a página da máquina 01 e hora acessará a página da máquina 02. Ou seja, o balanceamento está acontecendo.

Mas note que temos um problema aí, no caso de um servidor deveríamos ver a mesma página, ou seja, os usuários devem acessar o mesmo site transparentemente em relação ao servidor.

 

Bom, isso é facílimo de resolver: coloque o seu site em um diretório compartilhado na rede e faça com que os servidores Apache acessem o seu site a partir deste local!

Adicionar comentário


Código de segurança
Atualizar

You are here: