Você está na página 1de 14

Balanceamento de Carga

Com foco em DNS


Disciplina: Sistemas Distribuidos

Autores:
Daniel de Castro e Silva

201115567

Danillo dos Santos Neves

201101881

Luiz Ricardo dos Reis

201202034

Ricardo Moura L. da Silva

201201860

2015

Balanceamento de Carga

O aumento do uso da Internet vem provocando dezenas de problemas de


desempenho, incluindo tempos de resposta demorados, congestionamento da rede e
interrupo dos servios, isso causado por sobrecarga normal do sistema ou por
ataques cibernticos (DDoS). A soluo mais utilizada para minimizar ou resolver esses
problemas o Balanceamento de Carga.
O conceito de Balanceamento de Carga se trata de 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. Essa diviso pode ser feita pela
virtualizao do trabalho dos servidores que esto sendo utilizados.
Outra definio para Balanceamento de Carga pode ser tambm: O processo de
distribuio de solicitaes de servio por um grupo de servidores. Isso resolve uma
srie de exigncias que tm se tornado cada vez mais importantes nas redes:

Aumento da escalonabilidade: A escalonabilidade se trata da fcil e dinmica


capacidade de adaptao ao aumento da carga, sem impacto sobre o
desempenho atual. Quando muitas aplicaes de contedo intensivo crescem
para alm do ponto em que apenas um servidor pode fornecer poder de
processamento adequado, cada vez mais importante ter a flexibilidade de
adicionar mais servidores de forma rpida e transparente aos utilizadores finais.

Alto desempenho: O melhor desempenho alcanado quando o poder de


processamento dos servidores usado de forma inteligente. Uma infraestrutura
avanada de balanceamento de carga pode direcionar as solicitaes de servio
ao utilizador final para os servidores que esto menos ocupadas e, portanto,
capazes de fornecer o tempo de resposta mais baixo.

Alta disponibilidade e recuperao de desastres: O terceiro benefcio do


balanceamento de carga a sua capacidade de melhorar a disponibilidade das
aplicaes. Se uma aplicao ou servidor falha, o balanceamento de carga pode
automaticamente redistribuir as solicitaes de servio do utilizador final para
outros servidores dentro de um cluster de servidores ou para servidores em
outro local.

A figura ilustra os componentes bsicos do Balanceamento de Carga.


O balanceamento de carga pode ser implementado com hardware, software ou
uma combinao de ambos. Um dos principais objetivos do balanceamento de carga
2

fazer com que vrios servidores apaream como um nico servidor, distribuindo de
forma transparente os pedidos dos utilizadores entre os servidores. O balanceamento de
carga impede que as paralisaes planejadas para manuteno de hardware ou software
interrompam o servio para os utilizadores finais e tambm pode fornecer servios de
recuperao de desastres, redirecionando as solicitaes de servio para um local de
backup quando uma falha catastrfica desativa o site principal.
As duas categorias de implementao de balanceamento de carga no servidor
so:

Balanceamento de carga por software: No balanceamento por software, o


gerenciamento feito por um software instalado em um cluster especfico para
balanceamento. O software filtra os pedidos dos clientes para os servidores,
baseado em diferentes algoritmos como, Round-Robin ou um algoritmo mais
complexo.

Balanceamento de carga por hardware: Neste caso, o gerenciamento feito


em um Switch ou Roteador especializado e com apoio de um software
especfico, como citado acima. Esta soluo integra comutao e
balanceamento de carga em um nico dispositivo, o que reduz a quantidade de
hardware adicional necessrio para implementar o balanceamento de carga. Os
modernos balanceadores de carga por hardware so normalmente conhecidos
como ADC (Application Delivery Controllers).

Inicialmente uma organizao pode comear com uma arquitetura simples, como
a exemplificada na figura seguinte, que pode responder s expectativas de desempenho
iniciais. Porm, com o aumento do volume de requisies, a camada de aplicao deve
adaptar-se para manter o bom desempenho. Usando como exemplo uma empresa que
utilize uma soluo de base de dados como o SQL Server em um ambiente do tipo Web
Farm e que tambm tem opo de acesso aos dados em ficheiros, como as tabelas do
Visual FoxPro ou Jet(Acess) e as tabelas so mantidas em uma localizao centro e
acessvel via LAN, temos a seguinte estrutura:

No exemplo utilizado, a camada de aplicao contm apenas um servidor de


aplicao que atende s solicitaes dos clientes. Caso haja sobrecarga deste servidor, o
sistema ter perdas considerveis de desempenho ou ficar totalmente fora do ar.
Considerando os conceitos de balanceamento que vimos anteriormente,
podemos expandir a camada de aplicao, adicionando novos servidores e utilizando os
conceitos de balanceamento, fazendo com que mesmo com problemas em um dos
servidores, os outros mantenham o sistema no ar e diminua ao mximo as perdas
causadas por algum problema na rede. A mudana de estrutura est descrita na prxima
figura, onde so adicionais mais dois servidores camada de aplicao, criando um
cluster com balanceamento.

O resultado da reestruturao mostra uma arquitetura padro de balanceamento


de carga, onde um dispositivo de hardware ou software que est rodando nas mquinas
host, atribui um nome de host (ServidorBD) ao servidor virtual e um endereo de IP ao
servidor 1, 2 e 3. O cluster de balanceamento expe este endereo virtual e o nome do
host para a rede e equilibra a carga de solicitaes recebidas uniformemente entre todos
os servidores saudveis dentro do grupo. Dentro desta estrutura, caso haja alguma
falha em um dos servidores, a requisio automaticamente enviada outro servidor
que no esteja com problemas.

Nveis do Balanceamento de Carga

O balanceamento de carga dentro do servidor, pode ser dividido em


balanceamento por hardware e balanceamento por software e integrando essas duas
solues, podemos separar o processo de balanceamento em 3 camadas.

Balanceamento de carga no nvel 2: Balanceamento de carga no nvel 2, que


conhecido tambm como Agregao de Ligaes ou Agregao de
Portas, tem a funo de unir duas ou mais ligaes em uma nica ligao
lgica com maior largura de banda. Caso uma das ligaes seguir um caminho
fsico diferentes, essas ligaes podem fornecer redundncia e tolerncia
falhas.

Balanceamento de carga no nvel 4: O balanceamento de carga no nvel 4


responsvel por distribuir os pedidos para os servidores no nvel (camada) de
transporte, sendo assim, no nvel 4 onde so utilizados protocolos como TCP
e UDP. Um roteador tpico limita-se a enviar os pacotes recebidos para o
endereo IP apropriado na sua rede, mas um roteador de nvel 4 est na camada
de transporte e toma decises sobre para onde enviar os pacotes distribuindo
ligaes de rede de clientes que conhecem um nico endereo IP para um
servio, a um conjunto de servidores que realmente executam o trabalho. Um
roteador de camada 4, conhecido como NAT com conhecimento das portas e da
transao, usa uns artifcios e envia pacotes de entrada para uma ou mais
mquinas que esto escondidos atrs de um nico endereo IP. Uma vez que a
ligao deve ser estabelecida entre o cliente e o servidor antes de ser enviado o
contedo pedido, o balanceador de carga normalmente seleciona um servidor
sem olhar ao contedo do pedido. Este tambm um mtodo de redundncia,
por isso, se uma mquina no est funcionando, o roteador no lhe ir enviar
trfego.

Balanceamento de carga no nvel 7: Balanceamento de carga o nvel 7,


tambm conhecido como balanceamento de carga de aplicaes, trabalho com
a distribuio dos pedidos da camada de aplicao pelos servidores com base
nos diferentes tipos de contedo de cada pedido, de modo a fornecer requisitos
de qualidade de servio para diferentes tipos de contedo e melhorar o
desempenho global do cluster. A sobrecarga de analisar pedidos na camada de
aplicao alta, portanto, a sua escalabilidade limitada, em comparao com
balanceamento de carga do nvel 4.

As aplicaes capazes de efetuar balanceamento de carga na camada 7 so


conhecidas como ADC (Application Delivery Controllers) e combinam as tradicionais
funcionalidades de balanceamento de carga com comutao avanada de camada 7 para
sustentar a implementao de redes de aplicaes altamente escalveis e otimizadas.
Esse tipo de balanceamento permite que os recursos adicionais oferecidos pelos ADCs
sejam aplicados com base no tipo de contedo, o que melhora ainda mais a
performance, executando apenas as polticas que so aplicveis ao contedo.

Comutao do nvel 7
A comutao o nvel 7, tambm conhecida como "comutao de pedidos",
"comutao de aplicaes" ou "encaminhamento de contedos, recebeu esse nome com
base no modelo OSI, indicando que o dispositivo comuta pedidos com base em dados
do nvel 7 (camada de aplicao). Um switch de camada 7 apresenta ao mundo exterior
um "servidor virtual", que aceita pedidos em nome de um nmero de servidores e
distribui esses pedidos com base em polticas que utilizam dados de aplicao para
determinar qual o servidor deve atender o pedido.
Isso permite que a infraestrutura de aplicaes possa ser ajustada
especificamente para atender a tipos especficos de contedo. Por exemplo, um servidor
pode ser ajustado para servir apenas imagens, outro para a execuo de scripting no
servidor como PHP e ASP e outro para contedo esttico, como HTML, CSS e
JavaScript.
Ao contrrio do balanceamento de carga, a comutao de nvel 7 no exige que
todos os servidores no grupo tenham o mesmo contedo. Na verdade, essa comutao
espera que os servidores tenham um contedo diferente, a partir disso, h a necessidade
de inspecionar os pedidos mais profundamente antes de determinar para onde devem ser
direcionados.

Algoritmos de Balanceamento de Carga


Existem diversos tipos de algoritmos que so utilizados pelos balanceadores para
melhor controlar o trfego de informao, utilizando os servidores da melhor forma e
distribuindo a carga de forma inteligente.

Distribuio Aleatria: O algoritmo de distribuio aleatria um tanto


arriscado, porm, sua implementao consideravelmente simples. Neste
algoritmo, o trfego distribudo a um servidor escolhido aleatoriamente entre
o grupo de servidores de destino, ou seja, pode ser que um dos servidores
receba uma carga muito grande de processos, enquanto outros servidores no
recebem nada, ou recebem uma carga mnima. Em mdia, cada servidor recebe
uma cota aproximadamente igual de carga devida seleo aleatrio, mas
ainda assim, pode acontecer casos onde h sobrecarga de um ou mais
servidores.

Distribuio Rotativa: A distribuio rotativa utiliza o algoritmo rotativo


conhecido como Round-Robin. Neste algoritmo, o trfego enviado para o
servidor de destino de forma rotativa, de uma forma que seja possvel atribuir
igualmente a carga para cada servidor, independentemente do nmero atual de
ligaes ou do tempo de resposta. O primeiro pedido atribudo a um servidor
escolhido aleatoriamente a partir do grupo dos servidores de destino, para as
solicitaes subsequentes, o algoritmo segue a ordem pela qual so listados os
restantes servidores. Quando um servidor recebe um pedido, esse servidor
movido para o final da lista e o prximo servidor escolhido para o seguinte
pedido, mantendo assim todos os servidores uniformemente carregados. O
algoritmo Round-Robin s adequado quando todos servidores no cluster tm
igual capacidade de processamento, caso contrrio, alguns servidores podem
receber mais pedidos do que ele pode processar, enquanto outros utilizam
apenas uma parte dos seus recursos.

Distribuio Rotativa Ponderada: Esta uma verso avanada do RoundRobin, que leva em considerao as diferentes capacidades de processamento
de cada servidor. possvel atribuir manualmente um fator de desempenho
para cada servidor no grupo de destino gerando assim, uma sequncia de
programao de acordo com o peso do servidor. Os pedidos so ento
direcionados para os diferentes servidores de acordo com uma sequncia de
distribuio rotativa. Por exemplo, se o grupo de servidores composto por 2
servidores e um servidor capaz de lidar com o dobro da carga do outro, o
servidor mais poderoso recebe duas vezes o fator de desempenho e o
balanceador de carga atribui dois pedidos para o servidor potente para cada
solicitao atribuda ao mais fraco.

Menos Ligaes: Neste algoritmo o balanceador de carga ir monitorar o


nmero de ligaes que os servidores tm e enviar o pedido para o servidor
com menos ligaes, ou seja, o que estiver sendo menos requisitado naquele
momento.

Agente no Servidor: Neste caso instalado um cliente no servidor para


comunicar com o balanceador de carga. Isto s vezes necessrio quando se
utiliza um balanceador de carga bsico que tem um retorno direto do servidor,
ou seja, ele no sabe quantas ligaes reais o servidor tem ou quo bem ele est
a responder porque no recebe as respostas dos servidores.

Balanceamento de carga por DNS


O DNS (Domain Name System) um sistema que organiza os servidores em
uma hierarquia de domnio, ele define nomes para os servidores, ele substitui um
endereo de IP por um nome como www.site.com.br, tornando a visualizao e
localizao muito mais simples para o usurio. Um balanceamento por DNS pode ser
feito a partir de diferentes critrios, como Distribuio Rotativa, Distribuio Rotativa
Ponderada e tambm a localizao geogrfica. Este balanceamento possui uma
abordagem consideravelmente simples, consiste na criao de mltiplas entradas DNS,
identificando um tipo de registro para todos os servidores que contm a aplicao e
associando a um servidor DNS autoritrio, ou seja, todos os servidores esto conectado
a um DNS autoritrio que far a distribuio de acordo com o critrio utilizado.
Para exemplificar melhor o processo do DNS, vamos utilizar o mtodo de
distribuio rotativa, Round-Robin. Uma vez que o domnio seja resolvido para um dos
servidores especificados, as solicitaes subsequentes dos clientes usando o mesmo
servidor DNS local sero enviadas ao mesmo servidor mas as provenientes de outros
DNSs locais sero encaminhadas para outro servidor, como podemos conferir na figura
seguir:

Geralmente, so estes os passos que ocorrem assim que feita uma consulta DNS:
1. Quando um cliente tenta acessar ao site, realizada uma pesquisa no
DNS local para determinar qual o endereo IP correspondente;
2. O pedido de endereo chega ao servidor de DNS autoritrio do domnio;
3. A primeira vez que esta consulta feita, o servidor DNS remoto pode
retornar todos os registros de endereos que ele tem para o site;
4. O servidor DNS local, em seguida, determina o endereo de registro para
retornar ao cliente;
8

5. Se todos os registros so retornados, o cliente utilizar o primeiro que lhe


atribudo;
6. O servidor responde ao cliente e atende ao pedido;
7. A cada pedido, o algoritmo Round Robin roda os endereos, a partir da
ordem em que esto;
8. Cada consulta DNS resulta em um cliente utilizando um endereo de IP
diferente;
9. Esta rotao de endereos ir distribuir o pedidos para os servidores.
Apesar deste processo ser eficaz na distribuio, simples e extremamente
escalvel, ele possui algumas desvantagens bastante significativas:

O balanceamento pode ser ignorado quando Cliente guardar informaes em


cache com o objetivo de melhorar o desempenho, nesse caso as novas consultas
realizadas pelo balanceador no podem ser executadas, j que a resoluo do
endereo j foi realizada. O resultado final que o mesmo endereo IP ser
devolvido para vrios clientes, ou seja, o mecanismo da cache quebra este
esquema de balanceamento de carga;
Este mtodo no possui nenhum meio de monitorar o estado dos hosts
individuais, ento, caso haja falha no servio de um dos servidores, mas ele
ainda est ligado e respondendo ao balanceador, as requisies so enviadas para
ele, independente da falha.
H ocasies em que o estado da sesso importante e necessrio amarrar o
cliente ao mesmo servidor, o que algo que no pode ser feito usando o Round
Robin DNS.

Solues de DNS
Network Load Balancing - Microsoft
A soluo Network Load Balancing (NLB) da Microsoft uma implementao
baseada em software que executada em cada n de cluster usando um algoritmo de
hash que usa o endereo IP, ou endereo IP e a porta de um pedido e determina qual n
no cluster ir processar este pedido. Todos os ns no cluster recebem todos os pacotes
de trfego e a determinao de qual o n responsvel por responder feita atravs da
aplicao de um filtro para que apenas um n atenda esta solicitao.
O conceito por trs do NLB bastante simples: cada servidor em um cluster com
balanceamento de carga configurado com um endereo IP virtual, este endereo IP
configurado em todos os servidores que participam no cluster do balanceamento de
carga. Sempre que uma solicitao feita para este IP virtual, um driver de rede em
cada uma destas mquinas intercepta a solicitao para o endereo IP e reencaminha o
pedido para uma das mquinas do cluster com balanceamento de carga com base em
regras que podem ser configuradas para cada um dos servidores no cluster.
O software do NLB atua como um dispositivo de rede virtual, com seu prprio
endereo IP e os dispositivos reais (as portas Ethernet) so associados com o software
NLB. Em vez de utilizar e anunciar os endereos IP das portas, o sistema usa o endereo
IP do software NLB o que acaba fazendo com que o software NLB e seus pontos em
cada servidor sejam vistos pelos clientes como um dispositivo nico.
medida que novas mquinas so adicionadas ou removidas do cluster, o
algoritmo deve ser executado novamente num processo de reavaliao extremamente
importante chamado convergncia, para que o redirecionamento continue sendo feito da
forma correta. Tambm importante perceber que em momento algum possvel ao
NLB saber qual a carga em de cada n do cluster, pois ele no consegue determinar se a
utilizao da CPU de um n extremamente alta, ou se um n tem pouca ou nenhuma
memria disponvel para processar o pedido.
Se um n no cluster tiver alguma falha desses recursos, o NLB vai continuar a
enviar-lhe pedidos at que o n pare de enviar mensagens de pulsao (sincronizao),
neste momento em que o n automaticamente retirado do cluster. No entanto, se o n
continua a enviar as mensagens de pulsao, permanecer no cluster, embora possa estar
em um estado inutilizvel.
A fim de monitorizar o estado do cluster, todos os ns transmitem uma
mensagem de pulsao de 1500 bytes por segundo para todos os outros ns permitindo
assim que qualquer n no cluster possa facilmente determinar quando necessria uma
operao de convergncia.
O NLB fornece alta disponibilidade para aplicaes stateless, tais como
servidores Web, adicionando servidores adicionais medida que aumenta a carga e pode
ser usado com praticamente qualquer aplicao TCP ou UDP. O termo stateless se refere
s aplicaes que respondem a cada solicitao do cliente como uma operao isolada o
que significa que solicitaes tratadas antes de um pedido de determinado cliente no
tm nenhum impacto sobre a transao atual.A figura abaixo ilustra o uso do NLB:

10

Cada servidor no cluster totalmente independente, o que significa que deve ser
capaz de funcionar sem qualquer outro no cluster exceo da base de . Isso significa
que cada servidor deve ser configurado separadamente, mas no caso de alojar um site
esttico, todos os arquivos HTML e as imagens devem ser replicadas entre todos os
servidores.
H uma srie de benefcios significativos na implantao de uma soluo de
NLB, que so:
O NLB muito eficiente e pode fornecer um grande incremento de
desempenho de cada mquina adicionada ao cluster;
O NLB extremamente tolerante falhas. Muitas implementaes de
balanceamento de carga, como o Round Robin DNS (RRDNS), continuam a
enviar pedidos a servidores que "morreram" at que os administradores do
sistema reparem nesse fato e executem manualmente uma alterao de
configurao. Se qualquer mquina no cluster cair, o NLB ir reequilibrar as
solicitaes de entrada para os servidores ainda em funcionamento, lidando
assim com cenrios de fontes de alimentao queimadas, placas de rede
avariadas, falhas no disco rgido primrio, etc;
A escalabilidade da aplicao ilimitada, devido ao nvel de
redundncia, pode-se simplesmente instalar mais uma mquina no cluster para
que o processo de balanceamento passe a utilizar esta nova mquina;
O NLB funciona com qualquer aplicao que se baseie nos protocolos
TCP ou UDP. Isto significa que dentro de uma organizao podem ser
configurados uma variedade de clusters NLB, e cada um pode ter a sua prpria
funo especfica;
Uma das maiores vantagens da NLB a sua facilidade de uso. O NLB
instala apenas um componente de driver de redes sem absolutamente nenhuma
necessidade de hardware especial o que no s facilita a implementao de uma
soluo de balanceamento de carga, como tambm reduz significativamente os
custos.

11

12

Linux Virtual Server LVS


O Linux Virtual Server, assim como o NLB, uma tecnologia baseada em
cluster. O LVS uma avanada soluo de balanceamento que pode ser utilizada para
fornecer servios crticos de rede, onde necessrio um alto grau de disponibilidade e
escalabilidade, como servios web, mail, VOIP, etc.
Sua arquitetura totalmente transparente aos usurios finais, sendo que estes
usurios interagem com o computador que faz o papel do servidor virtual e este servidor
responsvel pode receber os pedidos e repassar aos servidores reais, tal como foi visto
no NLB.
A imagem a seguir ilustra uma arquitetura baseada em LVS:

Existem alguns mtodos de configurao de um balanceador utilizando Linux,


que so:

Network Adress Translation: Esse tipo de balanceamento aproveita a


possibilidade do Kernel do Linux funcionar como retoeador com NAT. A nica
rota padro do cluster o computador baleador (Servidor Virtual). Ento,
quando a solicitao chega este servidor, ele redireciona a solicitao para um
dos servidores reais, para que ele atenda a solicitao do cliente.
A grande vantagem do NAT o fato de que os ns que compem o cluster
poderiam executar qualquer sistema operacional que suporte TCP/IP, sendo que
toda a manipulao de endereos e gesto do cluster feito pelo servidor virtual.
Porm, este mtodo efetua o balanceamento em nvel de protocolo, o que
ocasiona desvantagem, que a de tornar o servidor virtual um grande gargalo,
sendo que ele tem uma tarefa rdua que a de receber todos os pacotes dos
clientes, ler os pacotes, alterar estes pacotes para enviar aos servidores reais,
sendo assim, todo o servio de comunicao fica por responsabilidade do
servidor virtual.
IP Tunneling: O mtodo de encapsulamento, permite escalar um alto nmero de
servidores. Ele consistem em fazer trafegar um datagrama TCP/IP, com os
endereos de origem e destino, dentro de um outro datagrama com origem e
destino e quando esse datagrama chegar ao seu destino, ser desencapsulado o
datagrama original para ser roteado a partir dali. uma forma de se utilizar um
roteamento alternativo, por exemplo, uma rede A para uma rede B, passando por
uma rede C. Este mtodo exclusivo para sistemas Linux.

13

Referncias Bibliogrficas
[1] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (I). Disponvel
em: http://redes-e-servidores.blogspot.com.br/2011/03/balanceamento-de-carga-i.html.
Acessado em: 21 de abril de 2015.
[2] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (II).
Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/03/balanceamento-de-cargaii.html. Acessado em: 21 de abril de 2015.

[3] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (III).


Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-cargaiii.html. Acessado em: 21 de abril de 2015.

[4] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (IV).


Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-cargaiv.html. Acessado em: 21 de abril de 2015.

[5] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (V).


Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-cargav.html. Acessado em: 21 de abril de 2015.

[6] Agility Tech Center. Balanceamento de carga baseado no mtodo Round-Robin.


Disponvel em: http://techcenter.agilitynetworks.com.br/index.php?
option=com_content&view=article&id=174:balanceamento-de-carga-baseado-no-metodoround-robin&catid=94&Itemid=878. Acessado em: 2 de maio de 2015.
[6] Slideshare. Cluster de Balanceamento de Carga. Por: Luiz Arthur.
Disponvel em: http://pt.slideshare.net/luiz_arthur/tpicos-cluster-debalanceamento-de-carga. Acessado em: 2 de maio de 2015.

14