Balanceamento de Carga (I)

Balanceamento de Carga


O constante crescimento da Internet tem vindo a provocar muitos problemas de desempenho, incluindo tempos de resposta baixos, congestionamento da rede e interrupção dos serviços, quer causada por normal sobrecarga do sistema ou por ataques cibernéticos (DDoS). A solução mais utilizada para minimizar ou resolver esses problemas é o Balanceamento de Carga.
O Balanceamento de Carga é dividir a quantidade de trabalho que um computador tem para fazer entre dois ou mais computadores para que mais trabalho seja feito na mesma quantidade de tempo e, em geral, todos os utilizadores sejam servidos mais rapidamente.
O Balanceamento de Carga (BC) pode também ser descrito como o processo de distribuição de solicitações de serviço por um grupo de servidores. Isso resolve uma série de exigências que se têm tornado cada vez mais importantes nas redes:

  • Aumento da escalabilidade: Quando muitas aplicações de conteúdo intensivo crescem para além do ponto em que um único servidor pode fornecer poder de processamento adequado, é cada vez mais importante para ter a flexibilidade de adicionar mais servidores de forma rápida e transparente aos utilizadores finais;

  • Alto desempenho: O melhor desempenho é alcançado quando o poder de processamento dos servidores é usado de forma inteligente. Uma infra-estrutura avançada de balanceamento de carga pode direccionar as solicitações de serviço ao utilizador final para os servidores que estão menos ocupadas e, portanto, capazes de fornecer o tempo de resposta mais baixo;

  • Alta disponibilidade e recuperação de desastres: O terceiro benefício do balanceamento de carga é a sua capacidade de melhorar a disponibilidade das aplicações. Se uma aplicação ou servidor falha, o balanceamento de carga pode automaticamente redistribuir as solicitações de serviço do utilizador final para outros servidores dentro de um cluster de servidores ou para servidores noutro local.

Na Internet, as empresas cujos websites têm grande volume de tráfego normalmente usam o BC. Quando um único servidor Web não é suficiente para lidar com o tráfego num site então é altura de equacionar a instalação de uma Webfarm que usa várias máquinas na rede actuando como um único servidor.

Numa webfarm, serviços ou aplicações podem ser instalados em vários servidores que estão configurados para partilhar a carga de trabalho. Este tipo de configuração é um cluster com balanceamento de carga em que a carga é dividida de modo a equilibrar o desempenho dos programas baseados em servidores, como um servidor Web, através da distribuição de pedidos de clientes por vários servidores.

As tecnologias de balanceamento de carga, vulgarmente conhecidas como balanceadores de carga, recebem os pedidos e redireccionam-nos para um host específico, se tal for necessário e os host do balanceamento de carga podem responder em simultâneo a vários pedidos do mesmo cliente, ou mesmo a vários pedidos do mesmo cliente. Por exemplo, um browser pode obter as múltiplas imagens duma única página web a partir de diferentes hosts no cluster. Isso distribui a carga, acelera o processamento, e encurta o tempo de resposta aos clientes. A figura ilustra os componentes básicos do Balanceamento de Carga:

Balanceador de Carga
 
As webfarms são uma escolha óbvia se já foram atingidos os limites do servidor isolado e o balanceamento de carga também pode trazer benefícios em cenário de sobrecarga. Geralmente, é mais barato resolver um problema de sobrecarga com máquinas de nível médio em vez de comprar uma máquina de topo de gama. Mesmo contando com licenças de servidor, várias máquinas de gama baixa podem fornecer uma solução mais eficiente.

O BC é também uma forma de garantir que a informação no servidor continua a ser fácil e eficientemente acessível, mesmo durante os períodos mais movimentados, permitindo que vários servidores respondam aos visitantes com o mesmo conteúdo, dependendo da carga que cada servidor tem no momento e assim, um utilizador não é afectado pelas exigências colocadas no servidor por outros utilizadores e isto é um aumento da fiabilidade de um site através do encaminhamento dos pedidos para outros servidores no cluster quando um dos servidores está muito ocupado ou falhou.

Balanceador de Carga

O BC pode ser implementado com hardware, software ou uma combinação de ambos sendo normalmente a principal razão para clusters de servidores de computador. Lembram-se do quadro anterior com todas as principais soluções de Alta Disponibilidade? Nos artigos seguintes vou entrar em detalhes sobre as soluções utilizadas para criar Balanceamento de Carga:

Soluções de Balanceamento de Carga

Existem outras abordagens para resolver os problemas de sobrecarga do sistema acima mencionados:

  • Replicação de Sites (site mirroring)
  • Servidores Proxy
Actualizar o hardware é certamente uma outra opção disponível especialmente tendo em conta que o hardware de hoje é extremamente capaz e deve ser suficiente para responder mesmo às mais exigentes aplicações Web num único servidor. Máquinas com múltiplos processadores são uma plataforma muito potente para correr aplicações Web mesmo tendo em conta que estas máquinas topo de gama são bastante caras. Se é verdade que os grandes sites empresariais não correm numa única máquina, a grande maioria das aplicações pode confortavelmente responder a um milhão de visitas por dia de num único servidor, mesmo com um único processador.

Replicação de Sites


Uma réplica de um site (mirror) é uma cópia exacta de outro site ou datacenter que contém as mesmas informações que o original. Os mirrors são normalmente utilizados para oferecer fontes múltiplas da mesma informação, como backup para recuperação de desastres e ainda para equilibrar a carga de tráfego de vários pedidos de download na web. Esses mirrors são muitas vezes colocados em locais diferentes em toda a Internet com servidores de arquivos que contêm um conjunto duplicado de arquivos de outro servidor de arquivos partilhando assim a carga de distribuição para garantir a rápida disponibilização de dados quando há grande procura.

Servidores Proxy


Estes são servidores através dos quais todos os computadores na rede local têm que passar antes de aceder a informações na Internet. Ao utilizar um servidor proxy, uma organização pode melhorar o desempenho da rede e filtrar o que os utilizadores podem ou não aceder.   Existem vários tipos de servidores proxy distintos, mas não é esse o tema deste artigo. No entanto, vou salientar que os servidores proxy tem duas finalidades principais:
  • Melhorar o desempenho: Um servidor proxy aumenta a velocidade de acesso à Internet a partir de uma rede, principalmente, utilizando um sistema de cache. A cache guarda os websites vistos recentemente, imagens e arquivos num disco rígido para que eles não tenham que ser retirados da web novamente;
  • Filtrar Pedidos: O outro objectivo principal de um servidor proxy é o de filtrar o que é permitido na rede. Embora possam ser filtrados vários protocolos, o HTTP é o mais comum e assim o servidor proxy pode limitar aquilo a que os utilizadores de websites podem aceder.