O que é e para que serve o balanceamento de carga
description
Transcript of O que é e para que serve o balanceamento de carga
Autor: Guilherme Zanini de Sá
Campo Mourão, 2010
O que é e para que serve o balanceamento de carga?
Balanceamento de carga consiste em uma técnica para distribuição
de carga de trabalho uniformemente entre dois ou mais computadores,
enlaces de rede, UCPs, discos rígidos ou outros recursos. Intuito pelo qual
visa o aperfeiçoamento da utilização dos recursos, a maximização do
desempenho, a diminuição do tempo de resposta e ainda evitar sobrecarga.
Devido a redundância de múltiplos componentes a confiabilidade aumenta.
Quais as estratégias de balanceamento de carga para
sistemas distribuídos existentes atualmente?
Baseada no Cliente
Baseada no DNS
Baseada num Despachante
Baseada no Servidor
Como funciona o balanceamento de carga em uma rede de
computadores? E o balanceamento de carga em servidores Web?
Em forma de dispositivos baseados em rede, surgiu a segunda
geração do balanceamento de carga de finalidade específica, seguido dos
sistemas proprietários baseados em aplicativos, são os precursores dos
controladores de distribuição de aplicativos atuais.
Por se portarem de forma neutra em relação a aplicativos, esses
dispositivos podiam fornecer o balanceamento de carga usando técnicas
diretas de rede. Em suma, esses dispositivos ofereciam para o mundo
exterior um endereço de servidor virtual e, na tentativa de se conectar,
encaminhava a conexão ao servidor verdadeiro mais apropriado, fazendo
uma tradução de endereços de rede (NAT) bidirecional.
O conceito de nó, host, membro ou servidor é utilizado pela maioria
dos balanceadores de carga, alguns usam todos eles, com significados
diferentes. Não obstante há dói conceitos básicos que todos eles tentam
expressar. Primeiramente, nó ou servidor, consiste a idéia do servidor
físico que recebe trafego do balanceador de carga, que equivale ao
endereço IP do servidor físico e, na falta de um balanceador, seria o
endereço para o qual o nome do servidor seria atribuído, conceito
conhecido como “host”.
O segundo conceito é de membro, bem mais definido do que um
servidor ou nó, visto a inclusão da porta TCP do aplicativo que recebe o
tráfego. Simplificando, um membro inclui a definição da porta do aplicativo,
além do endereço IP do servidor físico, conceito conhecido com “serviço”.
Para que o balanceador de carga interaja individualmente com os
aplicativos, ao invés com o hardware subjacente, deve-se fazer a distinção
entre o servidor físico e os serviços de aplicativos sendo executados.
A maioria das tecnologias de balanceamento de carga utiliza algum
conceito para representar o host, ou servidor físico, e um segundo conceito
para representar os serviços nele disponíveis.
É possível utilizar o IPTables para realizar o balanceamento
de carga em servidores?
O conteúdo deverá ser igual nos dois servidores, em prática, como
na demonstração abaixo:
1 - $IPTABLES -A PREROUTING -t nat -d 200.xxx.xxx.1 -j DNAT --
to 192.168.1.1-192.168.1.2
2 - $IPTABLES -A POSTROUTING -t nat -s 192.168.1.1 -j SNAT --to
200.xxx.xxx.1
3 - $IPTABLES -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT --to
200.xxx.xxx.1
Repare que utilizei --to 192.168.1.1-192.168.1.2 (dois hosts),
poderia usar --to 192.168.1.1-192.168.1.10 (que significa que estarei
dispondo de um range de 10 hosts no load balance).
A distribuição de carga nos servidores pode ser monitorada através
da ferramenta MRTG, como mostram as figuras abaixo:
Note que as figuras são bem parecidas apenas com uma sutil
diferença na carga recebida pelos servidores.
Quais são os principais benefícios obtidos com o
balanceamento de carga em sistemas distribuídos, ou seja, mais
precisamente sob o ponto de vista de servidores Web?
Alta disponibilidade
Escalabilidade
Administração facilitada da aplicação
Alta disponibilidade pode ser definida como redundância. Se um
servidor falhar ou não puder atender uma requisição, então outro servidor
assumirá, da forma mais transparente o possível, o processamento da
requisição. Isso tende a eliminar os pontos de falha de uma aplicação.
Escalabilidade é a habilidade que uma aplicação tenha de suportar
um crescente número de usuários. Se uma aplicação leva 10 ms para
responder uma requisição, quanto tempo ela levará para responder 10.000
requisições concorrentes? Escalabilidade infinita permitiria que a aplicação
respondesse essa carga em 10 ms; no mundo real a resposta seria num
espaço de tempo indeterminado maior que 10 ms. Escalabilidade é uma
medida de vários fatores, incluindo o número de usuários simultâneos que
um cluster pode suportar e o tempo que se leva para responder uma
requisição.
A administração facilitada do sistema é facilitada, no sentido de que
o cluster aparece como um único sistema para os usuários, aplicações e
para o resto da rede, facilitando o acesso e administração do sistema e dos
recursos de rede.
Suponha que você seja um gerente de TI de uma pequena
empresa que possui um servidor Web ut ilizado para armazenar
aplicações relacionadas aos sistemas de telefonia móvel (sistema de
pagamento, sistemas de consulta aos créditos de celular, etc). A
empresa tornou-se conhecida no mercado e inesperadamente o
servidor Web não consegue lidar com a alta demanda de requisições.
Sendo você o responsável pela área de TI da empresa, como você
solucionaria o problema da incapacidade de atendimento do servidor
Web? É possível utilizar o balanceamento de carga neste caso? Caso
afirmativo, esboce de forma gráfica (usando a rede, servidores,
switchs, etc) como você apresentaria esta solução.
REFERENCIAS
Article (Viswanathan2001)
Viswanathan, V.
Load Balancing Web Applications
2001, 2
Article (Teruszkin2002)
Teruszkin, R.
Balanceamento de Carga em Servidores Web
2002
Article (Wikipedia2010)
Wikipédia, a. e. l.
Balanceamento de carga
2010
Article (Salchow2010)
Salchow, K.
Balanceamento de carga: Conceitos básicos
2010
Article (Wikipedia2010a)
Wikipedia
Load balancing (computing)
2010