Servidores em cluster e balanceamento de carga

Por:
Servidores em cluster e balanceamento de carga

“Oi Carlos,
Seguindo o artigo “Sistema tolerante a falhas”, queria sugerir um assunto que tem a ver: servidores em Cluster. Seria interessante saber como funciona esses servidores em cluster, mirror, ou seja os dois como um único servidor e aqueles em cluster com balanceamento de carga, cada um pegando metade do trabalho pesado. Não sei se os termos estão certos, mas acho que deu pra entender. Eu queria saber sobre o funcionamento destes sistemas.
Abraços, Portella”

Oi Portella, acho que você deu a deixa para mais um artigo 🙂 Vamos lá.

Hoje em dia, os servidores mais comuns são os servidores de banco de dados. Este tipo de servidor não abrange só; os servidores com extensas listas de clientes ou de produtos, que servem à equipe de vendas ou de marketing de alguma empresa. Veja por exemplo os fóruns do Guiadohardware, as mensagens, assim como dados complementares, com quem postou, quando, quantas vezes foi visualizada, etc. são armazenadas num de banco de dados e o software se encarrega se organizar as mensagens por tópico, dividí-las em páginas, mostrar o número de visualizações, as respostas e assim por diante.

Cada vez mais sites organizam seu conteúdo dessa maneira, como se fosse uma espécie de fó;rum, os textos, imagens, etc. fazem parte de um grande banco de dados e o servidor vai gerando as páginas conforme solicitado pelos usuários. Isso permite uma série de recursos e facilita as atualizações, mas em compensação aumenta muito o trabalho do servidor. Enquanto num site construído com páginas estáticas, em html o servidor simplesmente lê os arquivos no disco rígido e o despacha pela rede, num site baseado num banco de dados ele precisa ler vários arquivos diferentes, cruzar dados, montar a página, etc. cada vez que um visitante clica em um link.

Enquanto o site tiver pouco tráfego, digamos umas 20 ou 30 mil pageviews por dia, provavelmente um único servidor, de configuração média dará conta do recado sozinho. Mas, imagine que derrepente a audiência deste site aumentou muito, foi para 5 milhões de pageviews por dia, que é o que um grande portal costuma ter.

Provavelmente, um único servidor, mesmo que tenha 2 ou 4 processadores, não vai dar conta de todo este tráfego.

Ok, agora que temos o problema, podemos pensar numa solução, baseada nas tecnologias que você citou.

Um cluster nada mais é do que um grupo de servidores, ligados em rede, que graças a um software qualquer, dividem entre sí as tarefas necessárias para desempenhar uma tarefa qualquer, ou seja, vários servidores que trabalham como se fossem um só.

Já que o nosso primeiro servidor não está dando conta da tarefa de servir as 5 milhões de páginas diariamente, podemos montar um cluster, com por exemplo, mais 4 servidores. Agora temos 5 no total, ligados através de uma rede Ethernet de 100 megabits (ou uma rede gigabit Ethernet, dependendo do tráfego). O link com a Internet está no servidor 1, enquanto os outros estão ligados a ele através de uma rede local, como na ilustração abaixo:

gdh1
Veja de qualquer modo, todos os dados continuarão passando pelo server 1, pois é ele quem possui o link com a Web, mas o grande problema aqui não é a simples transmissão dos dados, pois mesmo que fosse um link de 40 megabits, qualquer HD razoavelmente rápido poderia dar conta do recado. O grande problema é processar os pedidos e montar as páginas, é para isso que os servers 2, 3, 4 e 5 estão aqui.

Entra em cena então a idéia de balanceamento de carga, onde os servidores dividiriam entre sí os pedidos. Cada um cuidaria de parte das requisições e enviaria as páginas prontas para o server 1, que por sua vez as enviaria para o usuário.

A idéia já está pronta, faltaria agora coloca-la em prática. Além dos servidores, precisaríamos de um programa que possa gerenciar tudo isso. Existem várias opções. A versão Enterprise do Cold Fusion por exemplo vem com um software de balanceamento de carga, o ClusterCATS, Se a idéia é usar um software GNU, então uma boa opção seria o Linux Virtual server, http://www.linuxvirtualserver.org/

O software de balanceamento rodaria no Server 1, os demais servidores poderiam rodar qualquer outro sistema, Win 2k Server, Linux, Solaris, o que preferisse.

Todos os servidores manteriam uma cópia integral de todos os dados do site, já que de qualquer forma cada servidor precisará de todos os dados para atender as requisições que chegarem até ele. Isto já é um tipo de espelhamento. Caso algum dos servidores precise ser desligado, seja por alguma falha, ou então para algum tipo de manutenção, os outros três continuariam trabalhando normalmente. O Virtual Linux Server por exemplo tem a capacidade de detectar a desconexão automaticamente, e passar a enviar tarefas apenas para os outros três. Depois de terminada a manutenção, o V.L. Server se encarregaria de atualizar os dados para que ele pudesse voltar a trabalhar.

Existem claro, vários outros programas que podem ser usados para criar mirror de um servidor, que passam a ser automaticamente atualizados. Você poderia usar um software assim para criar um mirror do server 1, para substituí-lo quando fosse necessário fazer algum tipo de manutenção, por exemplo. Um software relativamente popular para isso é o Sure-Sync (Windows) http://www.softwarepursuits.com/suresync/mirror.htm

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X