UNIVERSIDADE FEDERAL FLUMINENSE
CAMILA CURCIO GOMES
GIOLIANO BARBOSA BERTONI
BALANCEAMENTO DE CARGA EM SERVIDORES
NITERÓI
2010
CAMILA CURCIO GOMES
GIOLIANO BARBOSA BERTONI
BALANCEAMENTO DE CARGA EM SERVIDORES
Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade
Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.
Orientador:
Leandro Soares de Sousa
NITERÓI
2010
CAMILA CURCIO GOMES
GIOLIANO BARBOSA BERTONI
BALANCEAMENTO DE CARGA EM SERVIDORES:
INTRODUÇÃO E CONCEITOS DO BALANCEAMENTO DE CARGA
EM SERVIDORES
Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade
Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação.
Niterói, ___ de _______________ de 2010.
Banca Examinadora:
_________________________________________
Prof. Leandro Soares de Sousa, Msc. – Orientador
UFF - Universidade Federal Fluminense
_________________________________________
Prof. Cristiano Grijó Pitangui, Msc. – Avaliador
UFRJ – Universidade Federal do Rio de Janeiro
Dedicamos este trabalho às nossas famílias,
aos nossos amigos e aos tutores.
AGRADECIMENTOS
À Deus, que nos iluminou e nos fez superar
as dificuldades que encontramos no caminho.
Aos nossos familiares, amigos, e colegas de
curso
pelo
incentivo,
pela
troca
de
experiências, pelo apoio e pelo carinho que
sempre tiveram conosco.
Aos tutores, que sempre estiveram presentes
em nossa caminhada, nos estimulando e
repassando seus conhecimentos para que
pudéssemos chegar até aqui.
Ao nosso amigo Alan Teixeira de Figueiredo,
que sempre nos apoiou, especialmente nas
decisões referentes ao trabalho de conclusão.
“A mente que se abre a uma nova idéia jamais volta ao seu tamanho original. ''
Albert Einstein
RESUMO
Esse trabalho tem como objetivo abordar conceitos sobre o balanceamento de carga, um tema relativamente novo, mas que possui uma grande importância atualmente, devido ao crescimento exponencial da utilização da Internet. Serão discutidas as
características essenciais do balanceamento de carga, de uma forma simples e direta, bem como suas utilizações mais comuns.
Palavras-chaves: balanceamento, Internet e redes de computadores.
LISTA DE ILUSTRAÇÕES
Figura 1: Balanceamento de carga simplificado.........................................................17
Figura 2: Diagrama de balanceamento de carga global em servidores. [7] ..............25
Figura 3: Um cenário de clustering.............................................................................27
Figura 4: Uma implementação típica de balanceamento de carga em servidores.....29
Figura 5: O cabeçalho do pacote IP............................................................................30
Figura 6: Um dia na vida de um pacote......................................................................31
Figura 7: Um cenário de redundância ativa de espera...............................................41
Figura 8: Um cenário de insuficiência de espera ativa...............................................42
Figura 9: Um cenário ativo-ativo de recuperação de falhas.......................................43
Figura 10: Demonstração de uma infraestrutura comum para Web hosting..............48
Figura 11: Foto de um data center..............................................................................49
Figura 12: Um cenário de linhas alugadas..................................................................50
Figura 13: Descrição da matriz que facilita a implementação do balanceamento de
carga............................................................................................................................61
Figura 14: Configuração One-armed..........................................................................64
Figura 15: Configuração Two-armed..........................................................................65
Figura 16: Design do four pack...................................................................................67
Figura 17: Design do six Pack.....................................................................................68
Figura 18: Loop de transição no six pack...................................................................69
Figura 19: Six pack usando STP.................................................................................70
LISTA DE TABELAS
Tabela 1: Manipulação do tráfego SLB.......................................................................32
Tabela 2 : Padrões e suas métricas............................................................................55
LISTA DE GRÁFICOS
Gráfico 1: A barreira de desempenho.........................................................................58
LISTA DE ABREVIATURAS E SIGLAS
DoS - Denial of Service
DDoS – Distributed Denial of Service
HTTP – HyperText Transfer Protocol
HTTPS - HyperText Transfer Protocol Secure
FTP - File Transfer Protocol
DNS – Domain Name System
IP – Internet Protocol
WWW – World Wide Web
POP3 – Post Office Protocol versão 3
SMTP – Simple Mail Transfer Protocol
NAT - Network Address Translation
TCP – Transmission Control Protocol
URL - Uniform Resource Locator
FWLB - Firewall Load Balancing
CPU - Central Processing Unit
GSLB - Global Server Load Balancing
LAN - Local Area Network
WAN - Wide Area Network
BGP – Border Gateway Protocol
SLB – Server Load Balancing
MTU - Maximum Transmittable Units
MAT – Media Access Control
MAT- MAC Address Translation
VRRP- Virtual Router Redundancy Protocol
STP - Spanning-Tree Protocol
SUMÁRIO
RESUMO......................................................................................................................7
LISTA DE ILUSTRAÇÕES ......................................................................................... 8
LISTA DE TABELAS.................................................................................................... 9
LISTA DE GRÁFICOS................................................................................................10
LISTA DE ABREVIATURAS E SIGLAS..................................................................... 11
SUMÁRIO..................................................................................................................13
1 INTRODUÇÃO......................................................................................................... 14
2 DEFINIÇÃO DO BALANCEAMENTO DE CARGA.................................................. 16
3 ARQUITETURA DO BALANCEAMENTO DE CARGA EM SERVIDORES............29
4 ABORDAGENS PARA O BALANCEAMENTO........................................................36
5 MÉTRICAS DE DESEMPENHO.............................................................................. 51
6 IMPLEMENTAÇÃO.................................................................................................. 60
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
CONCLUSÕES E TRABALHOS FUTUROS............................................................. 76
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
REFERÊNCIAS BIBLIOGRÁFICAS...........................................................................77
14
1 INTRODUÇÃO
O objetivo do balanceamento é direcionar o tráfego imediatamente para os
outros servidores disponíveis no ambiente, no caso de falhas em algum servidor na
rede, fazendo com que praticamente se reduza a zero a indisponibilidade do serviço
ao cliente.
Apesar de ser um tópico um tanto não muito recente, este tem uma grande
importância atualmente, pois com o crescimento acelerado na utilização da Internet
são necessárias soluções para que as requisições de todos os clientes sejam quase
sempre atendidas. O balanceamento de carga é utilizado, por exemplo, em serviços
de comércio eletrônico e provedores de Internet.
O texto foi subdividido da seguinte forma:
•
No Capítulo 2, definimos o conceito de balanceamento de carga,
explicando a distribuição de tráfego, como o balanceamento é feito
nos servidores Web, tecnologias alternativas, o balanceamento de
carga firewall, o GSLB e, também, informações sobre clustering.
•
No Capítulo 3, descrevemos a arquitetura do balanceamento de
carga em servidores, descrevendo de forma dinâmica o trajeto
percorrido por um pacote e os desafios encontrados por ele no
caminho até o seu destino. Além disso, falamos sobre servidor de
retorno direto e outros métodos de balanceamento de carga em
servidores.
•
No Capítulo 4, citamos as abordagens para o balanceamento.
Descrevemos o Modelo OSI e suas camadas resumidamente, os
dispositivos balanceadores de carga em servidores, o provedor de
infraestrutura, os data centers, que são os locais seguros que
abrigam os equipamentos que disponibilizam, por exemplo, um site.
•
No Capítulo 5, abordamos as métricas de desempenho, quais
técnicas são usadas para monitorar o desempenho do balanceador,
15
como verificar o seu serviço, os perfis de tráfego, redundância
stateful entre outros temas relacionados a essas métricas.
•
No Capítulo 6, falamos resumidamente da implementação do
balanceamento de carga e os detalhes de arquitetura que são
relevantes para a implementação.
•
Finalmente, no Capítulo 7, temos as conclusões e indicações para
futuros trabalhos.
16
2 DEFINIÇÃO DO BALANCEAMENTO DE CARGA
Balanceamento de servidores é uma solução muito utilizada para distribuição de carga entre vários servidores, o que permite alta disponibilidade ao sistema.
Caso ocorra falha em algum servidor na rede, o tráfego é imediatamente direcionado
para os outros servidores disponíveis no ambiente, fazendo com que o conteúdo
permaneça sempre disponível para o cliente [1].
Outra grande vantagem de empregar o balanceamento de servidores é a
segurança proporcionada por esta solução, uma vez que o equipamento balanceador localiza-se no front-end e é feito para esta função. O front-end é a parte do sistema de software que interage diretamente com o usuário, ou seja, recebe as requisições de trabalho (por exemplo, requisições por páginas web).
Diante de um eventual ataque de DoS 1 ou DDoS2, o balanceador contém
o ataque por empregar processamento em hardware, o que confere maior velocidade e segurança. Desta forma, a integridade de servidores e serviços permanece preservada [1].
Quase todos os tipos de serviços podem ser balanceados. Por exemplo, o
HTTP (Protocolo usado por servidores Web), HTTPS (Protocolo usado por servidores Web com criptografia, como os serviços que envolvem transações financeiras –
bancos, lojas virtuais, etc), FTP (Protocolo de Transferência de arquivos), DNS (Protocolo de resolução de nomes, ou seja, traduz nomes para endereços IP, como, por
exemplo, www.exemplo.com.br), e-mail (POP3 e SMTP, por exemplo. Protocolos
usados para o envio e recepção de e-mails). Na Figura 1, podemos ver um exemplo
simplificado de um cenário de balanceamento de carga, no qual o tráfego vindo da
1
De acordo com a definição do CERT (Computer Emergency Response Team), os ataques DoS (Denial of Service), também denominados Ata-
ques de Negação de Serviços, consistem em tentativas de impedir usuários legítimos de utilizarem um determinado serviço de um computador.
Para isso, são usadas técnicas que podem: sobrecarregar uma rede a tal ponto em que os verdadeiros usuários dela não consigam usá-la; derru bar uma conexão entre dois ou mais computadores; fazer tantas requisições a um site até que este não consiga mais ser acessado; negar acesso a um sistema ou a determinados usuários. [11]
2
O DDoS, sigla para Distributed Denial of Service, é um ataque DoS ampliado, ou seja, que utiliza até milhares de computadores para atacar
uma determinada máquina. Esse é um dos tipos mais eficazes de ataques e já prejudicou sites bem conhecidos. [11]
17
Internet passa pelos balanceadores de carga que distribui os mesmos entre os servidores [1].
Figura 1: Balanceamento de carga simplificado.
Um equipamento de balanceamento de servidores pode prover muitos benefícios para uma organização:
•
Incrementar a eficiência dos servidores da rede;
•
Praticamente reduzir a zero a indisponibilidade dos serviços ao cliente;
•
Aumentar a segurança de servidores e de serviços;
•
Simplificar a topologia da rede em certos cenários;
•
Prover fácil escalabilidade dos serviços oferecidos aumentando o
número de servidores empregados, com isso é possível aumentar o
número de usuários do sistema de forma transparente.
18
O balanceador de carga normalmente ficará alinhado entre o cliente e os
hosts que fornecem os serviços desejados pelos clientes, conforme pode ser observado na representação simplificada de um esquema de balanceamento apresentado
na Figura 1. No balanceamento de carga, isto não é uma regra, mas uma boa prática em uma implementação típica. Considerando que o balanceador de carga já esteja configurado como servidor virtual, que aponta para um cluster formado por dois
pontos de serviço. Nesse cenário de implementação, também é normal que os hosts
tenham uma rota de retorno que aponte de volta para o balanceador, para que o tráfego de retorno seja processado por ele, no caminho de volta para o cliente [4].
A transação básica de balanceamento de carga funciona assim:
1. O cliente tenta conectar ao serviço no balanceador de carga.
2. O balanceador de carga aceita a conexão e, após decidir qual host
deve receber a conexão, muda o IP de destino (e talvez a porta) para
combinar com o serviço do host selecionado (o IP de origem do cliente
não é alterado).
3. O host aceita a conexão e responde ao cliente original pela rota padrão, o balanceador de carga.
4. O balanceador de carga intercepta o pacote de retorno do host e muda
o IP de origem (e provavelmente a porta) para combinar com o IP e a
porta do servidor virtual, que encaminha o pacote de volta para o cliente.
5. O cliente recebe o pacote de retorno, pensando que ele vem do
servidor virtual, e dá continuidade ao processo.
Para o cliente, a comunicação parece ser direta – ele manda pacotes para
o servidor virtual e recebe respostas. O NAT atua na conexão. O balanceador de
carga substitui o endereço IP de destino enviado pelo cliente (o do servidor virtual)
com o IP de destino do host escolhido para balancear a carga do pedido. O IP de
origem do pacote de retorno do host será o IP do host; se esse endereço não for alterado e o pacote for simplesmente encaminhado para o cliente, o cliente iria descar tá-lo, pois estaria recebendo um pacote de alguém a quem não solicitou pacotes.
Em vez disso, o balanceador de carga, lembrando-se da conexão, altera o pacote
19
para que o IP de origem seja aquele do servidor virtual, resolvendo esse problema
[4].
2.1
A DECISÃO DO BALANCEAMENTO DE CARGA
Normalmente, é nesse ponto que surgem duas questões: como o balanceador de carga decide para qual host encaminhar a conexão, e o que acontece se
o host selecionado não estiver funcionando?
Bom, a resposta para a primeira pergunta é que a maioria dos balanceadores de carga acompanha o estado dos hosts, e dependendo do estado de disponibilidade host, ele decide se deve ou não estabelecer uma conexão com um host.
A resposta mais simples para a segunda pergunta é que ele não responderá ao pedido do cliente e o tempo da conexão se esgotará, fazendo que ela falhe
[4]. Sendo essa uma situação não ideal, pois não garante uma alta disponibilidade. É
por isso que a maioria das tecnologias de balanceamento de carga possui algum
tipo de "monitoramento de estado" que determina se um host está ou não disponível
antes de tentar estabelecer conexões com ele.
Há vários níveis de monitoramento de estado, cada um deles com granularidade e foco crescentes. Um monitor básico irá apenas executar um PING e
aguardar a resposta do host. Caso o host não responda ao PING, considera-se que
os serviços definidos no host provavelmente não estão ativos e devem ser removidos do cluster de serviços disponíveis [4].
2.2
HARDWARE DE BALANCEAMENTO DE CARGA BASEADO EM REDE
“A segunda geração do balanceamento de carga de finalidade específica
que se seguiu aos sistemas baseados em aplicativos surgiu na forma de dispositivos
20
baseados em redes” [4, p.1]. Como esses dispositivos eram neutros em relação a
aplicativos e residiam fora do serviço de aplicativos, eles podiam fornecer o balanceamento de carga usando técnicas diretas de rede. Esses dispositivos ofereciam um
endereço de servidor virtual para mundo exterior e quando os usuários tentavam se
conectar, ele encaminhava a conexão para ao servidor verdadeiro mais apropriado,
fazendo uma tradução de endereços de rede (NAT) bidirecional.
A distinção entre o servidor físico e os serviços de aplicativos sendo nele
executados permite que o balanceador de carga interaja individualmente com os
aplicativos, em vez de interagir com o hardware subjacente [4]. Um host pode ter
mais de um serviço disponível (HTTP, FTP, DNS e assim por diante). Ao definir cada
aplicativo individualmente (IP: número de porta específico de cada aplicação), o balanceador de carga pode aplicar um balanceamento de carga exclusivo e também o
monitoramento de estado baseando-se no serviço e não no host. Entretanto, ainda
existem momentos em que interagir com o host, como no monitoramento de estado
em baixo nível ou ao desativar um servidor para manutenção, pode ser muito conveniente.
“A maioria das tecnologias de balanceamento de carga usa algum conceito para representar o host, ou servidor físico, e um segundo conceito para representar os serviços nele disponíveis” [4, p.1]. O nó ou servidor é a idéia do servidor físico
que recebe tráfego do balanceador de carga. Isso equivale ao endereço IP do servidor físico e, na falta de um balanceador, seria o endereço IP para o qual o nome do
servidor seria atribuído. O segundo conceito é o membro. Normalmente um membro
é mais bem definido do que um servidor ou nó, visto que inclui a porta TCP do apli cativo que recebe o tráfego. Por exemplo, um servidor chamado www.exemplo.com
pode ser atribuído para o endereço 125.16.1.10, que representa o servidor/nó, e
pode ter um aplicativo (um servidor Web) sendo executado na porta TCP 80, formando o endereço do membro 125.16.1.10:80. Um membro inclui a definição da
porta do aplicativo, além do endereço IP do servidor físico.
21
2.2.1 DISTRIBUIÇÃO DE TRÁFEGO
O balanceamento de carga permite que o tráfego de entrada seja distribuído entre vários destinos. É necessário, portanto, adotar o conceito da coleção de
destinos de segundo plano. Os clusters, como são chamados, são coleções de serviços similares disponíveis em um número qualquer de hosts. Por exemplo, todos os
serviços que oferecem a página Web da companhia seriam reunidos em um cluster
chamado “página Web da companhia” e todos os serviços que oferecem comércio
eletrônico seriam reunidos ou colecionados em um cluster chamado “e-commerce”.
“O ponto principal é que todo sistema tem um objetivo coletivo, que se refere a todos os serviços similares. Isso torna mais fácil trabalhar com eles como uma
única entidade. Esse objetivo coletivo é quase sempre composto de serviços e não
de hosts” [4, p.2].
Reunir todos esses conceitos é a idéia principal do balanceamento de carga. O balanceador de carga oferece servidores virtuais para o mundo externo. Cada
servidor virtual aponta para um cluster de serviços que reside em um ou mais hosts
físicos [4].
2.3
BALANCEAMENTO DE CARGA EM SERVIDORES WEB
O constante crescimento da Internet vem causando diversos problemas
de desempenho, incluindo baixos tempos de resposta, congestionamento da rede e
interrupção de serviços. Existem diversas abordagens de como esses problemas podem ser solucionados.
Uma abordagem ainda muito usada é a de espelhamento ou replicação
de sites em diversos locais que podem ser acessados manualmente pelos usuários
através de uma listagem com as URLs correspondentes [4]. Esse tipo de solução
22
trás muitas desvantagens. Duas delas são a não transparência do usuário e a ausência de controle na distribuição de requisições.
Outra abordagem consiste em manter cópias (caches) de objetos Web
acessados perto dos usuários. Isso pode ser controlado por servidores que colocam
objetos Web populares em outros servidores cooperativos. Podem, também, ser disparados por requisições individuais de usuários que passam por um servidor Proxy.
Outra técnica consiste em pré-carregar os objetos freqüentemente acessados de forma a mascarar a latência da rede.
Uma abordagem complementar é fazer o servidor Web mais poderoso
através do uso de uma arquitetura em cluster, na qual um conjunto de máquinas funciona como um único servidor.
Para balancear a carga nos servidores, o sistema distribui as requisições
para diferentes nós que componham o cluster de servidores, com o objetivo de aperfeiçoar o desempenho do sistema. Os resultados são alta disponibilidade, escalabilidade e administração facilitada da aplicação.
Alta disponibilidade pode ser entendida como redundância de componentes. Se um servidor falhar ou não puder atender uma requisição, então outro servidor
assumirá, da forma mais transparente possível, o processamento da requisição. Isso
tende a eliminar os pontos de falha de uma aplicação [5].
Escalabilidade é a habilidade que uma aplicação tem de suportar um
crescente número de usuários. É 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 [5].
A administração do sistema é facilitada no sentido de que o cluster aparece como um único sistema para os usuários, facilitando o acesso e a administração
do sistema e dos recursos de rede [5].
As entidades que podem realizar o balanceamento de carga podem se dividir em quatro: baseada no cliente, baseada no DNS, baseada em um despachante
e baseada no servidor.
Existem duas abordagens de como colocar o mecanismo de seleção de
servidores no lado do cliente satisfazendo o requisito de transparência:
•
Através dos próprios clientes (browsers);
23
•
Por meio de servidores Proxy (que também é visto como um cliente).
Em ambos os casos são necessários o conhecimento sobre a estrutura
que está sendo balanceada.
As arquiteturas distribuídas de servidores Web que utilizam mecanismos
de roteamento no lado do cluster não sofrem as limitações das soluções baseadas
no lado do cliente. Normalmente a transparência da arquitetura é obtida através de
uma única interface virtual direcionada ao mundo externo, pelo menos ao nível da
URL.
Em uma primeira solução desenvolvida no lado do cluster, a responsabilidade de distribuir as requisições entre os servidores é atribuída ao DNS do cluster,
ou melhor, ao servidor de DNS autoritário pelo domínio dos nós do cluster. Através
de um processo de tradução entre os nomes simbólicos (URL) e endereços IP, o
DNS do cluster pode selecionar qualquer nó que compõe o cluster [5].
2.4
TECNOLOGIAS ALTERNATIVAS
Existem alternativas, que evoluíram, para tratar uma alta demanda de acessos e
de problemas administrativos em sites modernos. As ações do balanceamento de
carga em servidores se concentram na interceptação e manipulação de pacotes de
redes que são destinados aos servidores. Não sendo o balanceamento de carga em
servidores a única alternativa, pois existem maneiras diferentes de abordar os mesmos aspectos, porém usando outras tecnologias.
2.4.1 BALANCEAMENTO DE CARGA FIREWALL
Segundo Tony Bourke em [2], o balanceamento de carga firewall (FWLB)
foi desenvolvido para superar algumas das limitações das tecnologias de firewall. A
maioria dos firewalls é baseada na CPU. A velocidade do processador, tamanho do
24
pacote, configuração e diversas outras métricas são fatores determinantes para o
que um firewall pode fazer.
O firewall é um programa que executa no roteador de acesso (gateway)
da rede de uma determinada organização e tem o objetivo de isolar a rede interna
da rede pública (Internet). Em geral, o objetivo deste isolamento é proteger a rede interna da organização de ataques provindos da Internet. O firewall funciona como um
filtro de pacotes, inspecionando cada pacote que deseja entrar ou sair da rede prote gida. Utilizando um conjunto de regras definidas pela política de acesso da empresa,
o firewall permite (ou não) que determinados pacotes sejam encaminhados de uma
rede para a outra. As decisões de filtragem são normalmente baseadas em:
•
Endereço IP de origem e endereço IP de destino;
•
Porta TCP ou porta UDP de origem e destino;
•
Tipo de mensagem ICMP;
•
Pacotes de inicialização de conexão usando bits TCP SYN ou ACK;
O balanceamento de carga firewall possibilita a implementação de diversos firewalls que dividem a carga, assim como no balanceamento de carga em servidores. A configuração e a tecnologia são diferentes devido à natureza do tráfego.
2.4.2 BALANCEAMENTO DE CARGA GLOBAL EM SERVIDORES (GLSB)
O GSLB possui o mesmo conceito básico que o balanceamento de carga
em servidores, segundo [2]. O diferencial é que o GSLB distribui a carga para vários
locais em vez de um único local. O balanceamento de carga em servidores trabalha
em redes locais, enquanto o GSLB trabalha em redes globais (WAN). Existem várias
maneiras de implementar o GSLB, tais como o Baseado no DNS e o Baseado em
BGP. Existem dois tipos importantes para implementar GSLB. Para ilustrá-los, será
mostrado um exemplo de GSLB em ação.
25
Podemos tomar como exemplo um site que tem presença em dois centros
de dados diferentes. um em San Jose, Califórnia e um em New York City.
1. GSLB traz mais conteúdo para os usuários. Com cross country de latência em
torno de 60 milisegundos ou mais.
2. Fornece redundância no caso de qualquer falha no site. Existem muitas razões
pelas quais a instalação de um centro de dados inteiro pode ficar offline, como
um corte de fibra, um a falha no equipamento. Sites, que optarem por não
colocar todo o seu conteúdo em um servidor, podem usar a tecnologia do GSLB
para desviar o tráfego para os sites restantes em caso de falhas do site.
Figura 2: Diagrama de balanceamento de carga global em servidores. [7]
Como o GSLB é uma tecnologia, um trabalho ainda em andamento, existem limitações para o DNS e para os métodos baseados em BGP. Apesar de não totalmente eficazes, o GSLB ainda é uma importante tecnologia e é empregada por
26
muitos sites em grande escala. A Figura 2 [7] mostra resumidamente o que foi explicado sobre GSLB.
2.4.3 CLUSTERING - AGRUPAMENTO
Clustering oferece uma solução para os mesmos problemas que o
balanceamento
de
carga
em servidores,
ou
seja, alta
disponibilidade
e
escalabilidade, contudo, clustering trata disso de forma diferente. Clustering é um
protocolo de software altamente complexo, executando em vários servidores que se
concentram no recolhimento e partilha da carga. Mais do que “sentar na frente” de
vários servidores e manipular os pacotes de rede, clustering envolve um grupo de
servidores que aceitam dividir o tráfego e tarefas entre si. Trata-se de uma
integração forte do software do servidor. Isso normalmente é chamado de
balanceamento de carga, e embora a nomenclatura seja tecnicamente correta, é
preferível o uso do termo clustering, uma vez que é baseada em aplicativo. A figura
3 mostra um cenário de clustering.
27
Figura 3: Um cenário de clustering.
Com o cluster, há uma integração bastante forte entre os servidores (do
cluster), decidindo quais os servidores que lidam com tarefas e algoritmos de
determinação da carga de trabalho e qual o servidor que executa uma determinada
tarefa.
O balanceamento de carga em servidores é diferente na medida em que,
normalmente, não há interação entre os servidores, e sim a concentração no balanceamento da carga.
2.4.4 BALANCEAMENTO DE CARGA VERSUS CLUSTERING
Embora existam vantagens em ter servidores trabalhando juntos, existem
várias desvantagens no uso de clustering. Uma vez que há integração entre os
servidores, um software especial é necessário e, como resultado, um vendedor
28
provavelmente apoiará um número limitado de plataformas. Além disso, um número
limitado de protocolos é suportado com esse regime; nada muito diferente do que
HTTP.
Balanceamento de carga em servidores é uma plataforma OS e neutra,
de modo que funciona enquanto houver uma pilha de rede. Essa é uma das grandes
forças do balanceamento de carga em servidores tático. Balanceamento de carga
em servidores também suporta qualquer protocolo de rede. O balanceamento de
carga em servidores é extremamente flexível a esse respeito. Um projeto de
balanceamento de carga em servidores (se projetado corretamente) pode ser muito
simples e elegante, bem como poderoso e funcional, como explica Tony Bourke em
[2].
29
3 ARQUITETURA DO BALANCEAMENTO DE CARGA EM
SERVIDORES
Neste capítulo vamos abordar os caminhos que são tomados pelos pacotes e mostrar como estes são manipulados para tornar melhor o entendimento do
funcionamento do balanceamento de carga em servidores.
A Figura 4 ilustra o tráfego se movimentando do usuário para o balanceador de carga, para o servidor real e, em seguida de volta para o usuário.
Figura 4: Uma implementação típica de balanceamento de carga em servidores.
30
3.1
UM DIA NA VIDA DE UM PACOTE
O balanceamento de carga em servidores manipula um pacote antes e depois de chegar a um servidor real. Essa manipulação é feita na fonte ou destino dos
endereços IP de um pacote IP da camada de rede. Esse processo recebe o nome
de NAT (Network Address Translation).
Figura 5: O cabeçalho do pacote IP.
Na Figura 5, apresentamos um exemplo de um cabeçalho de um pacote
IP enviado de um endereço de origem 208.185.43.202 destinados a 192.168.0.200.
Este exemplo foi utilizado por Bourke em [2] e vamos usá-lo para descrever como
seria acompanhar a viagem de um pacote IP.
Este cabeçalho IP pode ser comparado a uma carta. O endereço IP fonte
é como o “Para:” de uma carta e o “De:” é como o endereço IP de destino. Assim
como os carteiros, os roteadores utilizam essas informações para seguir com o pacote ao longo do caminho até chegar ao destino do mesmo.
Quando você envia um pacote com um endereço de origem e destino, espera-se que o pacote retorne com o endereço de origem correspondendo ao anteriormente de destino, e o de destino correspondendo ao anteriormente de origem. Se
o pacote não chega com o endereço IP de destino igual ao anteriormente de origem,
o pacote é descartado. O que não incomoda em nada pacotes UDP, pois o UDP é
um protocolo sem conexão. Porém, a maior parte das implementações de balancea-
31
mento de carga em servidores que envolvem serviços Web, baseia-se no TCP, que
é um protocolo com conexão.
O
exemplo
da
Figura
6
utiliza
um
endereço
IP
do
cliente
(208.185.43.202), um VIP (192.168.0.200) e um endereço IP real do servidor
(192.168.0.100). Este tipo de configuração pode ser chamado de arquitetura “flat-based SLB”, desde que o VIP e o servidor real estejam na mesma subnet.
Para chegar ao local, um usuário insere uma URL, o que traduz o endereço da VIP (192.168.0.200). O pacote segue pela Internet com um endereço IP de origem igual a 208.185.43.202 e um endereço de destino igual a 192.168.0.200.
A Figura 6 resume o que foi descrito, o dia de um pacote, o trajeto que ele
percorre. E a Tabela 1 demonstra a manipulação do tráfego SLB.
Figura 6: Um dia na vida de um pacote.
32
Etapas
Endereço IP origem
Endereço IP destino
1
208.185.43.202
192.168.0.200
2
208.185.43.202
192.168.0.100
3
192.168.0.100
208.185.43.202
4
192.168.0.200
208.185.43.202
Tabela 1: Manipulação do tráfego SLB
3.2
SERVIDOR DE RETORNO DIRETO
“O Servidor de retorno Direto (DSR) é um método para burlar o balanceador de carga na conexão de saída” [2]. O servidor de retorno direto aumenta a performance do balanceador de carga.
O DSR engana o servidor real para enviar um pacote com o endereço de
origem já re-escrito para o endereço do VIP. O DSR faz isso com o intuito de coor denar pacotes e executar no SLB. Existe um processo que faz isso e que recebeu o
nome de Translação de endereço MAC (MAC Address Translation - MAT). Caso
haja o interesse em entender o processo citado e seu funcionamento, orientamos a
leitura de [2].
Para implementar SLB sem passar pelo balanceador de carga na saída, o
servidor de retorno direto utiliza o MAT e configurações do servidor real. Um servidor
real está configurado com um endereço IP e também com o endereço IP da VIP.
Para permitir que duas máquinas em uma rede possuam o mesmo endereço IP, (o que não pode ocorrer porque dois MACs não podem vincular o mesmo
endereço IP) vincula-se o endereço VIP à interface de loopback.
A interface loopback é uma pseudo-interface usada para a comunicação
interna de um servidor, e é geralmente irrelevante para a configuração e utilização
do mesmo. Esta interface possui um endereço IP universal (127.0.0.1).
33
O recurso IP Alias permite que apenas uma Interface de rede responda
por mais de um IP, dando a impressão que a rede possui diversos hosts, mas na
verdade, é apenas uma máquina respondendo por diversos hosts virtuais [6]. Para
usar o recurso do IP Alias é necessário que a opção IP Aliasing Support seja habilitada no kernel. Por ter um endereço VIP configurado na interface de loopback, não
temos o problema de ter mais de uma máquina configurada com o mesmo IP em
uma rede. Se o VIP for o endereço da interface de loopback, não ocorrerá conflito
com outros servidores, porque não está realmente em uma rede Ethernet física.
Normalmente, o serviço do servidor Web ou qualquer outro servidor, está
configurado para vincular-se ao endereço VIP na interface de loopback. O servidor
real que não possui o endereço VIP, mas tem um endereço VIP configurado na inter face de loopback, acaba fazendo com que o servidor aceite o tráfego, quando existir
uma ocorrência de queda do tráfego.
Esse processo possui algumas dificuldades como a inclusão de complexidade na configuração, e o impedimento da aplicação de configurações interessantes
por parte dos servidores reais e o software de servidor que roda neles.
3.3
OUTROS MÉTODOS SLB
Existem muitas alternativas para realizar SLB baseado em rede. Normalmente nomeia-se a forma como é implementado de "half-NAT". Um método conhecido como "full-NAT" (que reescreve os endereços de origem e destino ao mesmo
tempo) também existe.
34
3.3.1 TIPOS DE BALANCEADORES DE CARGA
Os Dispositivos SLB costumam ser implementados em um dos dois tipos
básicos: o balanceador de carga baseado em switch ou o balanceador de carga baseado em servidores. A seguir, estão descrições desses dois tipos que foram encontradas em [2].
3.3.1.1 Balanceador de carga baseado em servidores
Balanceadores de carga baseados em servidores geralmente são unidades com base em PC executando uma operação padrão do sistema.
As funções são realizadas através do código do software em execução no
topo da pilha de rede do sistema operacional do servidor. Geralmente, o sistema
operacional é uma versão de um sistema operacional comercial ou como sistemas
operacionais de código livre.
Em um balanceador de carga, todo o sistema operacional é escrito pelo
fabricante. Balanceadores de carga com base no servidor são geralmente fáceis de
desenvolver, porque para a codificação de recursos para o sistema operacional utilizado são fáceis de encontrar. Isso pode ajudar a encurtar o código, mas também
pode ser um obstáculo. Com um código menor, os erros podem se tornar mais prevalentes.
Este ciclo de desenvolvimento rápido significa que balanceadores de carga baseados em servidores geralmente são flexíveis no que eles podem fazer. No vos recursos podem ser implementados rapidamente, e as próprias máquinas podem assumir novas formas criativas de monitoramento de desempenho, bem como
outras tarefas.
35
3.3.1.2 Balanceadores de carga baseados em switches
Balanceadores de carga baseados em comutadores, também conhecido
como balanceadores de carga baseados em hardware, são dispositivos que dependem de Application Specific Integrated Circuit (ASIC) que são chips para executar
funções de reescrita de pacotes.
Um chip ASIC é um processador que remove várias camadas de abstração de uma tarefa. Devido a esta especialização, os chips ASIC freqüentemente
executam tarefas de software mais rápido e de forma mais eficiente do que um processador geral. A desvantagem é que os chips não são muito flexíveis. Se uma nova
tarefa é necessária, então, um novo projeto ASIC pode ter que ser construído.
No entanto, o protocolo IP mantém-se inalterado, assim é possível queimar essas funções em um ASIC. Balanceadores de carga baseados em comutadores normalmente são mais difíceis de desenvolver o código. Eles muitas vezes são
executados em arquiteturas proprietárias, ou pelo menos arquiteturas com o mínimo
de recursos desenvolvimento. Portanto, o código sai mais lento, mas é mais estável.
Os produtos baseados em switch são geralmente mais rápidos. Seus
chips ASIC são mais eficientes que o software sozinho. Normalmente, eles também
têm backbones de largura de banda interna capaz de lidar com um valor na ordem
de Gigabits de tráfego.
36
4 ABORDAGENS PARA O BALANCEAMENTO
Neste capítulo abordamos alternativas para o balanceamento. Para tal,
buscamos as referências neste campo do conhecimento [2] e as apresentaremos em
tópicos. Dentre eles estão o Modelo OSI, explicando suas camadas de forma sucinta, a definição de um dispositivo de balanceamento de carga, e como identificar falhas e verificar o serviço.
4.1
MODELO OSI
Quando o assunto são balanceadores de carga, quase sempre citamos as
camadas OSI. O autor Tony Bourke afirma em [2] que o modelo OSI foi desenvolvido como um quadro para o desenvolvimento de protocolos e aplicações que possam
interagir sem problemas.
Andrew S. Tanenbaun descreveu em [3], de forma básica, os princípios
necessários para chegarmos às sete camadas:
•
Uma camada deve ser originada onde existe a necessidade de outro
grau de abstração.
•
Cada camada executa uma função bem definida.
•
Cada camada tem sua função determinada seguindo a definição de
protocolos padronizados internacionalmente.
•
Para diminuir o fluxo de dados pelas interfaces, devem ser
determinados os limites de camadas.
37
•
A quantidade de camadas deve ser o suficiente para evitar que funções diferentes sejam alocadas em uma mesma camada e que a arquitetura se torne incontrolável.
•
O modelo OSI é dividido em sete camadas. Cada uma delas representa uma camada de abstração separadamente, interagindo somente
com suas camadas adjacentes.
Camada 1 (Camada física): a camada mais baixa, também chamada de “camada
física”, cuida da transmissão de unidades básicas de dados. Nessa camada, as preocupações estão em decidir que voltagem usar na hora de representar os bits, o
tempo que um bit deve durar, se a transmissão é full-duplex, a maneira como a conexão inicial será estabelecida e encerrada e a quantidade e as funções de cada
pino do conector de rede.
Camada 2 (Camada de enlace): esta camada, também chamada de ‘camada de
enlace’, se refere à organização e ao encapsulamento binário da informação para o
transporte ao longo da camada 1. Geralmente os dispositivos de balanceamento de
carga em servidores se baseiam em Ethernet. Um cabeçalho, uma soma de verificação e os dados formam um frame Ethernet. Estes variam de tamanho. Seu tamanho
é chamado de Maximum Transmittable Unit (MTU).
Camada 3 (Camada de rede): esta camada é responsável pelo roteamento e encaminhamento dos pacotes. Ela é formada por roteadores. Os pacotes da ‘camada de
rede’ (como também é chamada esta camada), respeitam o padrão do protocolo IP.
A camada de redes deve superar as dificuldades presentes no caminho para interconectar redes heterogêneas.
Camada 4 (Camada de transporte): a função básica da camada 4 é adquirir os dados da camada acima dela, repassar para a camada abaixo dela e garantir que os
segmentos vão chegar de forma correta no receptor. Ela especifica que serviço vai
ser fornecido para a camada de sessão que está acima dela e aos usuários da rede.
A camada de transporte trabalha com dois protocolos: o TCP e o UDP. Os segmen-
38
tos, que são pacotes IP encapsulados, possuem um cabeçalho que é composto por
um endereço IP de origem, um de destino, uma porta de origem e uma de destino.
Camada 5 (Camada de sessão): possibilita o estabelecimento de sessões entre os
usuários que estão em máquinas distintas. É importante para manter o controle de
quem deve possuir a vez de transmitir dados, evitar que os dois lados executem
operações críticas simultaneamente e ofereça o serviço de sincronização.
Camada 6 (Camada de apresentação): preocupa-se com a sintaxe e a semântica
das informações que estão sendo transmitidas.
Camada 7 (Camada de aplicação): esta camada é formada por muitos protocolos
de aplicação, dentre eles o HTTP. Existem outros que são usados, por exemplo,
para a transferência de arquivos e correio eletrônico.
4.2
BALANCEADORES DE CARGA EM SERVIDORES
Encontramos a seguinte definição de um balanceador de carga em [2]:
“Um balanceador de carga é um dispositivo que distribui a carga entre diversos
servidores. Este tem o efeito de fazer vários servidores aparecerem como um só.”
Alguns dos vários componentes de dispositivos de balanceamento de carga
em servidores são os VIPs3, os servidores, que executam um serviço que
compartilha a carga entre outros serviços (O termo servidor, normalmente é uma
citação a um servidor HTTP. Um endereço IP e uma porta TCP ou UDP são
associados ao servidor.), e os grupos, que são servidores que tem a sua carga
balanceada.
3
Virtual IP (VIP) é uma instância de balanceamento de carga.
39
4.2.1 NÍVEIS DE ACESSO AO USUÁRIO
O controle sobre as ações dos usuários registrados em um balanceador
de carga é o aspecto abordado pelos níveis de acesso ao usuário. Estão descritos
abaixo alguns níveis de acesso de acordo com o que foi apresentado por Bourke em
[2].
Read-only: Neste nível de acesso nenhuma alteração é permitida. Só é permitida a
visualização de configurações. Quase sempre, consideramos esse nível como o primeiro de um usuário conectado, antes que ele tenha permissão para mudar para um
nível que permita maior acesso.
Super usuário: Garante ao usuário liberdade total para efetuar qualquer ação sobre
o sistema, ou seja, o usuário tem permissão para criar contas, alterar qualquer configuração e apagar arquivos.
Outros níveis: Existem níveis intermediários que são oferecidos por alguns
produtos que permitem ao usuário alterar apenas configurações do balanceamento
de carga nos servidores, protegendo as configurações do sistema. Outros autorizam
apenas a configuração de definições da porta Ethernet.
40
4.2.2 REDUNDÂNCIA
Redundância possui um conceito simples. Segundo [2], se um dispositivo
falhar, outro tomará a sua função, com pouco ou nenhum impacto sobre as
operações como um todo.
Existem muitas formas de se alcançar essa funcionalidade, mas
normalmente dois dispositivos são implementados. O estado do “parceiro” é
verificado por um dispositivo através de um protocolo. Algumas vezes um dispositivo
aguarda para ser usado no caso de ocorrência de falhas enquanto o outro
dispositivo é usado, em outras, os dois dispositivos ficam ativos.
4.2.2.1
Redundância de funções
Em redundância, freqüentemente ocorre uma relação ativa de espera.
Existe um dispositivo ativo que é responsável por alguma ou todas as funções, e um
“reserva” que espera ser chamado para assumir as funções do dispositivo ativo.
Esta relação é muitas vezes denominada de relação master / slave. Existe também o
cenário em que as unidades podem ser masters de algumas funções e slaves de
outras para distribuir a carga. E ainda existe a situação em que ambas as unidades
são masters de todas as funções, ou seja, dividem as funcionalidades. A esta
situação dá-se o nome de redundância ativa-ativa.
41
4.2.2.2
Cenário Active-Standby
Este cenário é considerado o mais fácil, em questão de compreensão e
implementação. O que ocorre neste caso é que um dispositivo está ativo, leva o
tráfego, é o responsável pelas funcionalidades, enquanto o outro aguarda ser
requisitado em caso de falha.
Se ocorrer alguma falha no segundo dispositivo, o outro reconheceria a
falha e passaria a ser o dispositivo “titular”, tomando assim, o tráfego para si. As
Figuras 7 e 8 ilustram exatamente o que foi explicado anteriormente.
Figura 7: Um cenário de redundância ativa de espera.
42
Figura 8: Um cenário de insuficiência de espera ativa.
4.2.2.3 Cenário ativo-ativo
Apesar de existirem muitas variações deste cenário, em todas as
situações os dois dispositivos aceitam o tráfego. Quando ocorre uma falha em um
dos dispositivos, o outro assume as funções da unidade que apresentou a falha.
Algumas variações desse cenário foram descritas por Bourke e vamos
citar
uma
delas.
Para
obter
mais
informações
sobre
essas
variações,
recomendamos a leitura de [2]. Em uma dessas variações, ocorre uma distribuição
de VIPs entre os balanceadores de carga, com a finalidade de compartilhar o tráfego
de entrada.
43
Se um balanceador de carga falha, o VIP permanece responsável pelo
restante das alterações, e o outro dispositivo, passa a assumir as funções que
chegarem. A Figura 9 ilustra esse cenário.
4.2.2.4 VRRP
Segundo este protocolo de redundância, dois dispositivos trocam pacotes
esperando uma resposta. Se não chegar, o outro dispositivo assume as funções,
pois considera que o outro não está funcionando.
Figura 9: Um cenário ativo-ativo de recuperação de falhas.
Para conhecer mais e se aprofundar nos detalhes de funcionamento des te protocolo indicamos a leitura de [2]. A figura acima demonstra o cenário onde
esse protocolo atua.
44
O VRRP pede que os dispositivos possam se comunicar, que fiquem
isolados e que cada um deles assuma o outro que apresentou falha, assumindo,
então um estado “master”. Pode não ser tão vantajoso, pois ocorrem conflitos de IPs
e também porque os dispositivos acreditam que são os dispositivos ativos quando
existe um cenário de espera ativa.
Esse protocolo tem muitas versões que normalmente possuem um nome
terminado em “RP”.
4.2.3 CABO DE FAIL-OVER
O cabo de fail-over é um método usado para a identificação de falhas
entre dispositivos. Tony Bourke descreveu em [2] o funcionamento desse método de
um modo simples de entender: “Este método usa um “batimento cardíaco” (próprio
do protocolo de verificação) que corre sobre uma linha entre um par de
balanceadores de carga. Se este cabo for desconectado, ele faz com que ambas as
unidades acreditem que ele é a única unidade disponível, e cada um assume o
status de ‘master’.”
Para evitar redundância, um protocolo da camada de enlace, o SpanningTree Protocol (STP), que determina prioridades para as portas, fazendo com que
apenas aquela que possui a maior prioridade fique ativa no caso de múltiplos
caminhos, desligando as portas restantes, é utilizado.
4.2.4 PERSISTÊNCIA
Persistência é o ato de manter um usuário específico em um tráfego que
vai para o mesmo servidor que inicialmente foi atingido quando o site foi contatado.
Este foi o conceito de persistência apresentado por Bourke. Ele explica também em
45
[2] que quando o dispositivo de balanceamento de carga tem várias máquinas para
escolher, ele mantém sempre o tráfego de um determinado usuário indo para o
mesmo servidor. Isto é muito importante em aplicações Web-store.
Nestas
aplicações, o usuário monta um carrinho de compras e este carrinho é guardado em
uma máquina especial.
4.2.5 VERIFICAÇÃO DO SERVIÇO
O serviço de verificação do estado de um servidor ou serviço é feito pelo
dispositivo de balanceamento de carga, respeitando o intervalo de tempo definido
pelo usuário. Ele deve identificar se o servidor ou o serviço está em declive de
atividade e tomar a atitude de colocá-los fora de uso. A verificação de um serviço é
simples de ser implementada. Pode ser usada, por exemplo, para essa verificação,
uma seleção de porta para verificar a porta está respondendo.
4.2.6 ALGORITMOS DE BALANCEAMENTO DE CARGA
A escolha de um algoritmo de balanceamento de carga vai depender das
necessidades que devem ser supridas. Os algoritmos determinam os métodos de
escalonamento, isto é, têm a função de regular a forma como a carga é distribuída
entre os nós que compõem o sistema. A seguir serão apresentados alguns desses
algoritmos de forma resumida e um exemplo para cada um deles.
Seleção por menos conexões (Least Connection): Este método redireciona as requisições para o servidor baseando-se no menor número de requisições. Exemplo:
Se o servidor A está controlando, atualmente, 30 requisições ou conexões, e um servidor B controla 10, a próxima requisição será automaticamente direcionada para B.
46
Isso acontece porque no momento, B tem um número menor de requisições ou conexões ativas [16].
47
Seleção circular (Round Robin): Neste método é utilizada a técnica de sempre direcionar as requisições para o próximo servidor disponível de forma circular. Exemplo: As conexões de entrada são direcionadas para o servidor A, depois para B e em
seguida para C. Por fim, retorna para o servidor [16].
Seleção por menos carga (Weighted Fair): Esta técnica direciona as requisições
para os servidores baseados na carga de requisições de cada um e performance de les. Exemplo: Se o servidor A é quatro vezes mais rápido que o B no atendimento às
requisições, então o administrador atribui ao servidor A, um peso maior de trabalho
[16].
4.3
PROVEDOR DE INFRAESTRUTURA
Os componentes de rede conectam os servidores Web com a Internet,
Extranet ou Intranet para que os usuários possam usufruir seus serviços. Eles
compõem a infraestrutura de rede e fazem essa conexão em um local manipulado
pelo site. Essa conexão também pode ser feita em um local que é mantido por um
provedor de hospedagem de empresas de infraestrutura. Este facilita a hospedagem
de seu site.
A Figura 10 [10] mostra uma infraestrutura comum. No switch Web à
esquerda do firewall são implementados o gerenciamento de banda, filtro de
pacotes, balanceamento de carga, detecção de falhas. No switch Web à direita do
firewall são implementados o redirecionamento do cache, o balanceamento de
carga, a detecção de falhas.
48
Figura 10: Demonstração de uma infraestrutura comum para Web hosting
4.3.1 DATA CENTER – CENTRO DE DADOS
O data center é uma espécie de ambiente protetor, onde os equipamentos
possuem alta segurança, temperatura ambiente adequada, geralmente são ambientes com ar condicionado, proteção contra incêndios e quedas de energia com sistemas de backup de energia, entre outros equipamentos de proteção para os equipamentos. Logicamente, isso possui um custo alto. A Figura 11 [9] mostra como é um
data center.
49
Figura 11: Foto de um data center
4.3.2 LINHA DEDICADA
A vantagem do uso de linhas dedicadas é o controle absoluto e o total
acesso que você tem sobre o seu equipamento. Neste caso, o cenário é de um site
alojado internamente com conexões de linhas alugadas por fornecedores.
50
Figura 12: Um cenário de linhas alugadas.
Na Figura 12 temos a descrição de um cenário de linhas alugadas, onde o
servidor está conectado à Internet através de dois DS-3s (45 Mbps) de fornecedores
diferentes.
Provavelmente o protocolo executado nas duas linhas é o BGP. O BGP é
um protocolo utilizado para a troca de informações sobre roteamento da Internet e
que, no caso de uma dessas linhas cair, permite redundância.
51
5 MÉTRICAS DE DESEMPENHO
As métricas têm como objetivo avaliar o desempenho dos servidores de
carga. E são críticas, pois avaliam o limite da execução de um site. Neste capítulo
descreveremos os dispositivos SLB, os perfis de tráfego, Web stores, redundância
stateful, entre outros conceitos importantes para o monitoramento do desempenho
de um dispositivo balanceador de carga.
5.1
DISPOSITIVOS SLB
Existem muitas formas de medir o desempenho em dispositivos SLB, e
cada uma tem um nível de importância dependendo das necessidades específicas
de um site. Os parâmetros utilizados para essa avaliação são:
• Conexões por segundo.
• Total de conexões simultâneas.
• Taxa de transferência (em bits por segundo).
52
5.1.1 CONEXÕES POR SEGUNDO
Talvez essa seja a medida de desempenho mais significativa, principalmente no caso de conexões HTTP.
Esta métrica se refere ao número de conexões de entrada, transações ou
sessões que podem ser aceitas em um dispositivo SLB em um determinado segundo. É comumente o fator limitante em qualquer dispositivo, a primeira de qualquer
uma das métricas que deve ser utilizada para atingir um desempenho limite.
A razão dessa métrica é crítica, porque abrir ou fechar conexões HTTP é
muito oneroso para um processador de rede. As medidas necessárias para transferir
um arquivo via HTTP são, basicamente, estas:
1. A caixa de cliente inicia uma conexão HTTP através do envio de um
pacote TCP SYN destinado à porta 80 para o servidor Web.
2. O servidor Web envia um pacote ACK de volta ao cliente junto com um
pacote SYN adicional.
3. O cliente envia um pacote ACK em resposta ao SYN enviado pelo servidor.
4. O início de uma conexão é conhecido como o "three-way handshake".
Após o aperto de mão, ocorre uma “negociação” e os dados podem
passar. No caso do HTTP, esta é normalmente uma página Web.
Criar e encerrar conexões são recursos custosos e é por isso que a taxa
na qual um dispositivo pode fazer isso é tão crítica. É muito importante levar em con ta essa medida quando queremos comprar um dispositivo SLB e estamos lidando
com um site que possui uma quantidade grande de tráfego HTTP.
53
5.1.2 TOTAL DE CONEXÕES SIMULTÂNEAS
Esta métrica determina o número de sessões TCP abertas por um usuário
um dispositivo SLB suporta. Normalmente, isso é limitado por fatores como a memória disponível no kernel de um dispositivo SLB ou processador de rede e o número
variar de acordo com cada produto.
Para o tráfego UDP, conexões simultâneas não constituem um problema,
pois o UDP é um protocolo não orientado para conexão. O tráfego UDP é tipicamen te associado a um streaming de mídia ou tráfego de DNS, embora existam vários
outros protocolos que são executados em UDP. A maioria dos balanceadores de
carga é capaz de lidar com os protocolos UDP para SLB.
5.1.3 THROUGHPUT
Throughput é uma outra métrica importante que normalmente é medida
em bits por segundo. Seu rendimento é a taxa à qual um dispositivo SLB é capaz de
transmitir o tráfego através de sua infraestrutura interna.
Tony Bourke em [2] ressaltou que todos os dispositivos têm fatores limitantes internos baseados de acordo com a arquitetura, por isso é necessário que se
saiba a taxa de transferência. Por exemplo, alguns SLB só suportam Fast Ethernet,
limitando-os a 100 Mbps (Megabits por segundo). Além disso, alguns produtos baseados em servidor não têm processadores rápidos o suficiente para lidar com códigos
de taxas de transferência de mais de 80 Mbps. O rendimento é medido em bits por
segundo e é uma combinação de duas variáveis: tamanho do pacote e quantidade
de pacotes por segundo.
Pacotes Ethernet variam de comprimento, com um MTU (Unidade Máxima de Transmissão) de cerca de 1,5 KB. Se uma parte específica de dados é maior
do que 1,5 KB, então esta é cortada em pedaços de 1,5 KB para o transporte. Sendo
54
o fator mais importante de um balanceador de carga ou de qualquer dispositivo de
rede usado o número de pacotes por segundo. Por exemplo, uma requisição HTTP
GET em um arquivo de texto de 100 bytes, vai caber em um pacote muito facilmen te. Já um HTTP GET em um diretório de imagem de 32 KB, resultará em um arquivo
que está sendo cortado em cerca de 21 pacotes de Ethernet, ou seja, 21 MTUs,
cada um com uma carga completa de 1,5 KB.
Quanto maior a carga, mais eficiente é a utilização dos recursos. Por isso
que nessa métrica é importante conhecer o número de conexões por segundo, não
só porque essas conexões por segundo causam um pouco de sobrecarga no início
do estabelecimento de uma conexão, mas também porque os locais que apresentam
taxas elevadas de conexões por segundo geralmente têm pequenas cargas. O rendimento pode ser calculado da seguinte forma:
Throughput = Taxa de transferência de transmissão de pacotes x o tamanho
da carga.
5.2
A BARREIRA DE 100 MBPS
Muitos modelos SLB estão equipados com interfaces Ethernet, limitando
assim a capacidade total para 100 Mbps. Existem técnicas capazes de solucionar
esse problema, como é o caso da técnica que envolve Fast EtherChannel, que liga
dois ou mais links Fast Ethernet em um link, combinando a largura de banda disponível. Esta não é a solução mais simples, e não há limites para o Fast EtherChannel
distribuir o tráfego. Quando uma parte do link é inundada, outra ligação é utilizada.
Uma solução que também é possível é o retorno do servidor direto (DSR).
O DSR não envolve o tráfego de saída que passa pelo dispositivo SLB, normalmente
a maior parte do tráfego de um site.
Um dispositivo de SLB tem menos requisitos de transferência. Nesse ponto, o fator limitante seria tornar a conectividade geral no site. A solução mais simples
para esse problema é usar o Gigabit Ethernet (GigE) sobre a carga dos balanceadores. Os custos de GigE estão cada vez mais acessíveis, e é uma ótima maneira de
55
agregar grandes quantidades de tráfego para os servidores Fast Ethernet conectados.
5.3
PERFIS DE TRÁFEGO
De acordo com Tony Bourke em [2], as características de cada local de
trânsito são diferentes. Mas existem alguns padrões e semelhanças que muitos sites
compartilham. Existem três padrões de tráfego típicos que são identificados: HTTP,
FTP / Streaming e Web stores.
A tabela a seguir relaciona esses padrões e suas métricas. O padrão de
tráfego pode variar dependendo do site em questão, logo, para um determinado site
pode ser diferente do que está sendo apresentado na Tabela 2.
É fundamental identificar o tipo ou tipos de tráfego do seu site para contribuir para um melhor design, para torná-lo mais seguro, e ajustar o seu desempenho.
Tabela 2 : Padrões e suas métricas
Padrão de tráfego
A métrica mais
importante
HTTP
Conexões por segundo
FTP / Streaming
Throughput
Loja na Web
Total de conexões
sustentadas
A segunda métrica mais A métrica menos
importante
importante
Throughput
Total de conexões
sustentadas
Conexões por segundo
Total de conexões
sustentadas
Conexões por
segundo
Throughput
56
5.3.1
HTTP
O tráfego HTTP é, geralmente, de grande largura de banda e cria uma
grande quantidade de conexões por segundo.
Com o a versão 1.0 do protocolo HTTP, uma conexão TCP é aberta para
todos os objetos, seja ele um arquivo HTML, de imagem (GIF ou JPEG) ou de texto.
Uma página Web com 15 objetos sobre ela exigiria 15 conexões TCP separadas.
Já a versão 1.1 padrão é mais eficiente. Uma conexão é gerada para recuperar vários objetos durante uma determinada sessão. Os 15 objetos na página
de exemplo poderiam ser baixados em uma conexão TCP contínua. Isso reduziria o
trabalho do balanceador de carga e do servidor Web.
O HTTP ainda é muito ineficiente, porque páginas da Web e os seus objetos são normalmente mantidos pequenos para manter os tempos de download de
pequeno porte, por exemplo, com um modem de 56KB do usuário. Essa medida é
adotada para evitar que o usuário deixe a sua página por causa da demora da conclusão dos downloads.
Assim, as páginas Web geralmente não têm muito mais do que 70 ou 80
KB de dados. Essa quantidade varia, mas pouco.
5.3.2 FTP / STREAMING
O FTP e o tráfego de streaming são muito semelhantes, em seus efeitos
sobre as redes. Ambos envolvem uma ligação inicial e uma grande quantidade de
dados transferidos.
A taxa de conexões FTP / streaming inicial permanecerá sempre relativamente pequena comparada à quantidade de dados transferidos.
Uma conexão de FTP pode facilmente envolver um download de um megabyte ou mais no valor de dados. Isso pode saturar as redes.
57
5.3.3 WEB STORES (LOJA NA WEB)
Nas Web Stores a velocidade é um fator importante, pois os usuários estão menos propensos a gastar dinheiro em sites que são muito lentos para eles.
Normalmente esse tipo de tráfego geral não envolve uma grande quantidade de largura banda. Sustentar as conexões é importante, levando-se em conta
que um site quer atender o maior número de requisições possível.
5.4
REDUNDÂNCIA STATEFUL
Segundo [2], uma característica fundamental para este tipo de perfil, é a
redundância de informações mantidas entre os balanceadores de carga. Isso é conhecido como Stateful Redundancy.
Cookies, informações da tabela ou sessões TCP precisam ser espelhados
para fazer isso. As lojas da Web costumam exigir esse nível de redundância.
5.5
O MURO
De acordo com Tony Bourke, quando estamos lidando com o desempenho em qualquer dispositivo de balanceamento de carga, nos referimos á um conceito chamado “muro”.
Bourke definiu o conceito de muro da seguinte forma: “O muro é um ponto
onde a quantidade de tráfego que está sendo processada é alta o suficiente para
causar graves degradações de desempenho.”
Conforme aumenta o tráfego até que o muro seja alcançado, o tempo de
resposta e o desempenho permanecem relativamente constantes. Porém, quando
isso acontece, o efeito é trágico. Na maior parte dos casos, atingir o muro significa
menor tempo de resposta HTTP e um nivelamento de tráfego. Nos casos extremos,
58
com uma quantidade incrivelmente alta de tráfego, não pode ser previsível e pode
ter comportamento estranho.
Isso pode incluir reinicializações, travamentos (que não permitem que a
unidade redundante se torne a mestre), e o kernel “surta”.
O Gráfico 1 encontrado em [2] mostra a curva acentuada que ocorre
quando o muro de desempenho é atingido. No eixo das abscissas, temos o tráfego.
E no eixo das ordenadas, temos a latência correspondente ao tráfego.
Gráfico 1: A barreira de desempenho.
Ao adicionar funcionalidades e capacidades a um balanceador de carga,
é provável que seu desempenho seja prejudicado. Isso vai depender de como vai
ser concebido o balanceador de carga e das configurações que serão aplicadas a
ele.
Balanceadores de carga geralmente não ficam mais lentos quando você
adiciona funcionalidades. No entanto, adicionar recursos, provavelmente, vai causar
alguma degradação do desempenho.
59
Um exemplo citado por Bourke que pode explicar melhor o que foi explicado será apresentado abaixo.
Se um balanceador de carga pode empurrar 90 Mbps, não só com latência de execução da camada de transporte, pode ser capaz também de empurrar
apenas 45 Mbps de análise de URL.
A razão é que nas camadas de sessão, de apresentação e de aplicação,
o pacote deve ser inspecionado. Isso pode significar um uso intensivo da CPU. Analisar a URL ou a leitura do cookie no pacote é muito mais do que apenas reescrever
as informações do cabeçalho IP.
5.6
DEGRADAÇÃO DO DESEMPENHO
A degradação de desempenho que foi observada com a adição de funcionalidades depende da engenharia do balanceador de carga.
Balanceadores de carga baseados em servidor, possuem uma degradação muito linear à medida que são adicionadas funcionalidades. Quanto mais coisas
o processador tem de fazer, menor a quantidade de tráfego de carga o balanceador
pode processar com velocidade aceitável.
Balanceadores de carga baseados em switch, não apresentam a mesma
performance. Chips ASIC são empregados para lidar com o processamento de rede.
Alguns fabricantes desenvolveram chips ASIC para manipular as funções da camada de sessão de processamento. Isso resulta em uma arquitetura mais distribuída.
As características de desempenho de cada um desses componentes podem variar de acordo com a codificação e projeção de balanceador de carga e os re cursos usados por ele. Essas características mudam de fornecedor para fornecedor
e, geralmente, de modelo para modelo. É importante saber o tipo de tráfego que per correm o balanceador de carga para entender o plano de desempenho, necessidades e o potencial de crescimento.
60
6 IMPLEMENTAÇÃO
Neste capítulo serão abordadas, resumidamente, as formas de implementação, o que deve ser levado em consideração ao implementar o balanceamento de
carga e os detalhes da arquitetura. Outras informações importantes para a implementação também são comentadas neste capítulo.
6.1
DEFININDO IMPLEMENTAÇÃO
O balanceamento de carga entre servidores é mais que um simples redirecionamento de tráfego dos clientes para múltiplos servidores. Para implementá-lo
corretamente, é necessário que o equipamento que fará o balanceamento possua
características como checagem permanente da comunicação e dos servidores e capacidade de redundância. Para que seja possível fornecer um suporte ao crescente
volume de tráfego das redes sem vir a se tornar um gargalo ou um ponto único de
falha, são necessários estes itens citados [15].
Quando nos referimos à implementação de balanceamento de carga ou
qualquer outra implementação de rede, devemos considerar alguns aspectos. São
eles [2]:
•
Simplicidade;
•
Funcionalidade; e
•
Elegância;
Simplicidade é relevante, pois quanto mais simples, mais fácil é para implementar um projeto. Funcionalidade também é importante porque ninguém quer
um produto incompetente, ineficiente e sem funcionalidades. E a elegância é importante em alguns casos porque podem ser necessárias futuras alterações, e uma implementação elegante, bem feita, ajuda na hora de efetuar essas possíveis mudanças.
61
Tudo isso contribui para a diminuição da complexidade, dos custos, do
uso de equipamentos desnecessários e de outros fatores que devemos evitar. Principalmente porque em qualquer projeto o que se procura é a solução mais adequada, a melhor, a mais eficiente e a que possui a melhor relação custo benefício.
6.2
DETALHES DA ARQUITETURA
Segundo Tony Bourke em [2], profissionais da área afirmam que a parte
mais conflitante é entender a implementação do balanceamento de carga e não os
seus conceitos ou funcionamento. E o mais complexo é saber a forma como adequar um balanceador de carga a infraestrutura.
Existem muitas formas de se implementar e configurar o balanceamento
de carga, em [2] encontramos uma definição que diz que por maiores possibilidades
que se tenha com relação à implementação ou configuração, existe uma matriz para
facilitar todo esse processo de compreensão, de entendimento. A Figura 13, encontrada em [2], ilustra essa matriz que ajuda a compreender a implementação do balanceamento de carga.
Figura 13: Descrição da matriz que facilita a implementação do balanceamento de carga
62
Na Figura 13, a primeira coluna se refere à forma de representar a topologia IP. Para balanceamento de carga baseado em Flat, os VIPs e servidores reais
estão na mesma sub-rede, e os balanceamentos de carga baseados em NAT, tem
os VIPs e os servidores reais em sub-redes distintas. A segunda coluna se refere a
maneira pela qual tráfego será direcionado aos balanceadores na rota que o servidor
toma até a Internet. O Bridge-Path (ou caminho em ponte) tem a idéia de fazer com
que o balanceador desempenhe a mesma função de uma ponte na camada de enla ce. No Route-Path o balanceador desempenha a mesma função que um roteador. E
finalmente, o DSR (Servidor de Retorno Direto), que é quando os servidores são
configurados para ultrapassarem o balanceador de carga por completo.
6.2.1 CONFIGURAÇÃO DOS IPs
Tanto balanceamentos de carga em servidores baseados em Flat como
em NAT possuem vantagens e desvantagens. O que determina suas funcionalidades é o objetivo que se deseja alcançar com seu uso.
Nas arquiteturas baseadas em Flat, os VIPs e os nós estão na mesma
sub-rede e pode ser feito por dois métodos o Bridge e o Route-Path.
Nas arquiteturas baseadas em NAT, o balanceador de carga fica em duas
sub-redes separadas e diferentes, geralmente em duas VLANs 4 diferentes. O balanceador de carga desempenhará a função de gateway padrão dos servidores reais, e
empregará o método Route-Path, pois o método de Bridge-Path não trabalha com
balanceamento de carga em servidores baseados na arquitetura NAT.
4
Uma VLAN (Virtual Local Area Network ou Rede Local Virtual) é uma rede local que agrupa um conjunto de máquinas de for-
ma lógica e não física. Em uma rede local, a comunicação entre as diferentes máquinas é governada pela arquitetura física.
Usando as VLANs, é possível livrar-se das limitações da arquitetura física, como restrições de endereçamento, definindo-se
uma segmentação lógica (software) baseada num agrupamento de máquinas graças a critérios como endereços MAC, números de porta, protocolo e etc. [12]
63
6.2.2 CONTROLE DO RETURN PATH
Para explicar melhor o Return Path, vamos fazer um confronto entre os
métodos Bridge e Route-Path e DSR.
Segundo [13], o Route-path é mais utilizado que o Bridge-Path, por inúmeras razões, e a mais importante delas é a sua simplicidade quanto a sua imple mentação, pois o roteador atuará apenas no encaminhamento apropriado dos pacotes.
O gateway padrão para os servidores é definido para um endereço IP no
balanceador de carga.
O balanceador de carga atua como um roteador, encaminhando os pacotes de forma apropriada. O endereço IP do gateway é configurado e conhecido como
o gateway IP [13].
Em conjunto com one-armed ou two-armed na conectividade física,
qualquer topologia, com relação a redundância, é muito mais fácil de resolver.
O Bridge-Path funciona com uma implementação Flat, enquanto o RoutePath funciona com Flat ou NAT. O método Bridge-Path tem limitações em sua
implementação, pois trabalha na camada 2. Se houver mais de um par de
redundância, há mais de um caminho de camada de enlace, levando a falta de um
loop de ponte ou de dispositivos da camada de enlace na rede. Nesse caso, o
balanceador de carga atua como ponte para os pacotes da comunicação entre duas
LANs separadas.
O DSR (Servidor de Retorno Direto) é freqüentemente usado para obter
um desempenho melhor no servidor ou para evitar o NAT em determinados tipos de
aplicações [13].
64
6.2.3 CONECTIVIDADE FÍSICA: ONE E TWO-ARMED
Segundo [2], o One-armed só é usado nos balanceamentos de carga em
servidores baseados em Flat. E o Two-armed, só é usado nos balanceamentos de
carga em servidores baseados em NAT.
O método One-armed utiliza o método do caminho de rotas. Nos balanceamentos de carga em servidores baseados em NAT, a segurança é assegurada por
duas VLANs separadas, uma para as redes externas e outra para as redes internas.
Figura 14: Configuração One-armed
Com uma configuração One-armed, só existe uma conexão do balanceador de carga na infraestrutura da rede. A Figura 14 ilustra a configuração One-armed. Isto se adéqua melhor a arquitetura Flat. Com o balanceamento de carga em
servidores NAT-based, é possível ter redes externas e internas na mesma ligação.
Mas isso gera um risco de segurança. Logo, deve ser evitado.
O Two-armed é usado para topologias Bridge-Path, uma vez que os balanceadores de carga servem como ponte entre LANs separadas. E é isso que foi
ilustrado na Figura 15, a configuração Two- armed.
65
Figura 15: Configuração Two-armed
6.3
INFRAESTRUTURA E CONECTIVIDADE À INTERNET
O foco da infraestrutura é fornecer conectividade da rede local com o
mundo exterior e a Internet. Então, ela aborda a forma como os balanceadores de
carga e os outros componentes se ligam à Internet e tenta fornecer uma medida de
redundância no caso de falhas em dispositivos ou ligações de rede.
Para que uma infraestrutura de rede funcione é necessária a conectividade com dois componentes básicos:
•
Um roteador, que fornece a conectividade IP com a Internet; e
•
E um switch, que agrega esse tráfego IP usando Ethernet para conectar os servidores, balanceadores de carga, roteadores e etc.
Existem muitas formas de projetar uma infraestrutura de conectividade à
Internet. A seguir serão apresentadas algumas dessas formas que são encontradas
quando se lida com balanceamento de carga em servidores. Segundo Tony Bourke
em [2], conhecer a forma como uma infraestrutura é projetada é relevante por que
66
afeta como um balanceador de carga é conectado a uma rede e a implementação do
esquema de redundância.
6.3.1 FOUR PACK E SIX PACK
O four pack é uma configuração simples que utiliza quatro dispositivos de
rede em uma configuração redundante, sendo dois switches e dois roteadores. Normalmente é usado quando um site tem seus próprios switches e roteadores dedicados.
Para fornecer redundância, cada switch é conectado a um roteador. Um
protocolo de redundância da camada de rede é executado entre os roteadores e sobre o canal que liga os dois switches.
Pode ocorrer de um dos componentes falharem e com um protocolo de
redundância da camada de rede (o VRRP, por exemplo) rodando, se o switch ligado
a um roteador ativo falhar, então o segundo roteador não conseguiria mais se comunicar com o roteador, que até então estava ativo, pois os pacotes de verificação de
“saúde” não seriam mais respondidos. O segundo roteador passa a ser então o ativo, assim sendo, o tráfego passa a fluir pelo switch ligado a ele.
67
Figura 16: Design do four pack
O design do cenário que foi descrito pode ser visto na Figura 16.
Um erro muito comum na fase de planejamento da arquitetura de uma
rede é o de querer interconectar muitos dispositivos, quantos forem possíveis. Associando ao cenário apresentado na Figura 16, r1 teria um link para s1 e s2, e r2 teria
um link para s1 e s2, de modo a adicionar redundância. É uma boa idéia, mas antes
se deve verificar se o roteador possui múltiplas interfaces para camada de enlace.
Se uma rede está instalada em um data center, provavelmente estar-se
conectado em uma infraestrutura switch-roteador. Nesse caso, deve-se ter seus próprios switches, já que o roteador a empresa provavelmente irá lhe proporcionar. Muitos provedores usam switches para distribuir o tráfego do roteador, pois é mais lucrativo colocar vários clientes conectados em uma porta do roteador do que usar
uma porta para cada cliente.
O Six Pack é uma configuração que utiliza dois roteadores, dois switches
provedores de colocação e dois switches do cliente, onde o switch do cliente é ligado diretamente com o switch provedor. A redundância nos roteadores fica por conta
68
de protocolos como o VRRP. Para obter maiores informações sobre essa configuração, sugerimos a leitura de [2]. A Figura 17 ilustra o design do six pack.
Figura 17: Design do six Pack
Para evitar loops de transição (ilustrados na Figura 18), indica-se o bloqueio de uma das portas de alguma forma, de modo a prevenir que os múltiplos ca minhos existentes estejam disponíveis para os switches. O STP é um protocolo que
resolve isso automaticamente. Usando este protocolo, cada porta tem um custo associado, sendo o menor custo o preferido. Se o STP detecta vários caminhos, ele
desliga todos exceto o que possui a maior prioridade, que no caso é o que está associado à porta de menor custo [2]. A Figura 19 mostra o STP em ação.
69
Figura 18: Loop de transição no six pack
70
Figura 19: Six pack usando STP
6.4
COMPONENTES
Esta seção apresenta os componentes que estão presentes na arquitetura, na infraestrutura do balanceamento de carga.
6.4.1 BALANCEADORES DE CARGA DOS SERVIDORES
Serão necessários dois aparelhos balanceadores de carga para incorporar as funções de alta disponibilidade.
71
6.4.2 REDES
Como os balanceadores de carga se baseiam em rede, necessita-se dela
para configurá-los. É usado um espaço de endereços IP privados que são definidos
no RFC 19185. Os seguintes endereços não devem ser utilizados:
•
10.0.0.0 – 10.255.255.255
•
172.16.0.0 – 172.16.255.255
•
192.168.0.0 – 192.168.255.255
Na terminologia IP, uma rede que interconecta interfaces de hospedeiros
e uma interface de roteador forma uma sub-rede [RFC 950]. O endereçamento IP
designa um endereço a essa sub-rede e uma máscara de rede, que nesse caso é de
24 bits [8].
A rede interna 10.0.0.0/24 representa um intervalo de endereços IP nonrouted usado para algumas topologias de rede. Os endereços IP nonrouted são vantajosos porque eles fornecem uma camada extra de segurança, tornando os servidores mais protegidos, pois dificultam o acesso a eles a partir da Internet. Se um
hacker é incapaz de atingir os seus servidores, ele é incapaz de “hackea-los”.
6.4.3 SERVIDORES WEB
O balanceamento de carga em servidores pode ser usado com FTP,
SMTP, POP3, media streaming, e muitos outros protocolos baseados em rede. Os
servidores Web são necessários para implementar o balanceamento de carga em
servidores.
5
O RFC (Request for Comments) 1918 determina que certos endereços não sejam utilizados na Internet. Isto significa que ro-
tas para estes endereços não devem ser anunciadas e eles não devem ser usados como endereços de origem em pacotes IP
[14].
72
Atribui-se a eles endereços IP a partir de qualquer rede interna ou externa. Isso vai depender da topologia da rede. Quando é necessário, os servidores
Web têm uma tabela de configuração de rede que informa como configurar o IP de
cada dispositivo. Inclusive, a rota padrão para o servidor Web, o que é muito importante para o funcionamento do balanceamento de carga, porque controla o fluxo de
saída.
6.4.4 ROTEADORES
Entre origem e destino, os pacotes percorrem enlaces de comunicação e
comutadores de pacotes. E os roteadores são comutadores de pacote [2]. Eles são
compostos por quatro componentes:
•
Portas de entrada;
•
Elemento de comutação (O elemento de comutação conecta as portas
de entrada do roteador às suas portas de saída. Ele está integralmente
contido no interior do roteador. Como uma rede dentro de um roteador.);
•
Portas de saída; e
•
Processador de roteamento (Roda os protocolos de roteamento, mantêm as informações de roteamento e tabelas de repasse e executa funções de gerenciamento de rede);
Dois roteadores redundantes fornecem conectividade com o mundo exterior. O VRRP é executado entre os roteadores para oferecer alta disponibilidade em
caso de falha.
Cada roteador tem um endereço IP individual e compartilha um endereço
VRRP. Um IP fica ativo em apenas um roteador em um dado momento, tendo a
mesma essência do cenário de espera ativa que se deve encontrar no balancea mento de carga em servidor. Se um roteador falhar, o IP é escolhido pela unidade de
espera.
73
6.4.5 SWITCHES
Em todos os cenários de rede, dois switches são utilizados. São dispositivos de rede que interligam todos os equipamentos para agregar o tráfego. Os switches são comutadores de pacotes da camada de enlace.
Usa-se o protocolo STP para fornecer redundância na camada de enlace.
Os switches podem ser configurados com IPs na rede, mas isso é desnecessário,
pois a maioria das opções dá apenas suporte Telnet. O que não acontece em um
protocolo criptografado (SSH, por exemplo) [2].
6.5
IMPLEMENTAÇÃO DA SEGURANÇA NAS ARQUITETURAS
A segurança é um tópico muito importante na implementação de qualquer
arquitetura na rede. Por isso, agora serão discutidas algumas formas de implementar segurança nas arquiteturas do balanceamento de carga.
6.5.1 SEGURANÇA NA ARQUITETURA FLAT-BASED
As medidas de segurança são muito importantes para a implementação
do balanceamento de carga, pois o balanceador de carga, normalmente não tem
controle direto sobre o tráfego destinado aos servidores. Sem um firewall ou outro
sistema de filtragem de pacotes, servidores e balanceadores de carga estão expostos a ataques maldosos [2].
Uma forma de proteger os servidores Web individuais é utilizar um firewall
entre roteadores conectados à Internet e os balanceadores de carga. Ele faria a fil-
74
tragem de pacotes, a inspeção de estado, detecção de intrusos e outras medidas importantes para proteger adequadamente a rede. A desvantagem da maior parte dos
firewalls é que eles geralmente têm um limite de tráfego [2]. E este vai depender tan to do firewall quanto do tipo de tráfego gerado. Se o limite não for do produto, então
pode ser do enlace Ethernet. Isso cria um gargalo em uma arquitetura que poderia
suportar um tráfego muito maior.
Outra opção seriam as listas de acesso em um roteador que conecta a
rede ao balanceador de carga. O problema dessa opção é que muitas vezes é im possível implementar essa listas de acesso em um equipamento provedor. Além disso, elas não podem cumprir todas as exigências de segurança do site [2].
O balanceamento de carga firewall também é uma solução. Ele envolve a
distribuição de carga da rede entre um grupo de firewalls, e muitas vezes faz isso de
forma semelhante à distribuição de carga entre servidores feita pelo balanceamento
de carga. Essa solução também possui um inconveniente. A instalação dela é muito
complicada. Ela exige vários switches/VLANs e quatro balanceadores de carga para
a redundância [2].
6.5.2 SEGURANÇA NA ARQUITETURA NAT-BASED
A segurança é, talvez, a maior vantagem deste tipo de infraestrutura. A
unidade de balanceamento de carga pode funcionar como um firewall, mesmo isso
não sendo recomendado como uma solução de segurança total. “Isso permite apenas o tráfego destinado para os serviços desejados” [2, p.70]. Nesta arquitetura, não
existe um contato direto dos servidores com Internet. Isso só aumenta a sua segurança.
É vantajoso ter um dispositivo desenvolvido para segurança, como um firewall, por exemplo. Porém, às vezes estes não estão disponíveis devido às restrições de orçamento. Neste caso, um balanceador de carga com esta configuração,
NAT-based, pode adicionar mais segurança [2].
75
Para os serviços Web, os usos mais comuns do firewall são:
•
Filtragem de pacotes, que bloqueia o tráfego através de IPs e portas; e
•
Inspeção de estado, que mantém o controle de conexões TCP relacionadas e de várias regras;
A maior parte dos dispositivos de balanceamento de carga, só permite o
tráfego para determinado IPs e portas e estão atentos aos estados das conexões [2].
A menos que exista uma necessidade específica de funções do firewall, o que não é
prudente em níveis de alto tráfego, devido à incerteza diante da capacidade do firewall em lidar com o tráfego, o dispositivo balanceador de carga poderia ser utilizado, poderia servir como um firewall [2].
É importante lembrar que, somente os responsáveis pelo site em questão
estão qualificados, aptos a tomar decisões com relação à segurança. Portanto, os
balanceadores de carga não foram construídos com a intenção de fornecer segurança, porém, oferecem recursos de segurança. E quando utilizados em conjunto com
um firewall, podem fornecer medidas, serviços adicionais de segurança.
76
CONCLUSÕES E TRABALHOS FUTUROS
No desenvolvimento deste trabalho conhecemos mais sobre o funcionamento e as finalidades do uso do balanceamento de carga. Descobrimos que este
assunto é relativamente novo, mas já possui uma grande importância. Muitas empresas levam em consideração atualmente à capacidade de implementar o balanceamento de carga, pois este traz muitos benefícios para o trabalho diário da empresa.
Concluindo o trabalho, percebemos que foi muito gratificante conhecer
mais sobre esse assunto, que despertou o nosso interesse por causa dos benefícios
colhidos com o seu uso. Conhecemos os dispositivos, as formas de implementação,
superficialmente, e sua arquitetura. Além do mais, aumentamos o nosso conhecimento na área que pretendemos seguir daqui para frente.
Pretendemos seguir ampliando os nossos horizontes na área de Redes de
Computadores. O próximo passo, no nosso cronograma, seria cursar mestrado em
Redes de Computadores ou em Engenharia de Telecomunicações. É, dentre todas
as áreas abordadas no nosso curso, a que mais nos interessou, a que mais nos chamou a atenção pelo fato de abordar a comunicação entre hosts tão distantes, uma
coisa que não era possível para a geração de nossos pais, que com a nossa idade
nem sonhavam em se comunicar através de máquinas tão eficientes como os computadores com os seus amigos e parentes que estavam distantes, em outros estados ou, até mesmo, em outros países. Outras características nos chamaram a atenção também, mas essa facilidade de comunicação entre pessoas que estão tão distantes fisicamente, os equipamentos envolvidos e a evolução das tecnologias relacionadas às Redes de Computadores, às Telecomunicações, é o que mais nos fascina e estimula a continuar neste caminho.
Estes são os projetos que temos em mente. Trabalhar com o que mais
gostamos atualmente. É nesse tema que queremos aplicar os nossos conhecimentos.
77
REFERÊNCIAS BIBLIOGRÁFICAS
1. QoS <balanceamento_Servidores.asp.html> Acesso em 22 de maio de 2010.
2. BOURKE, Tony. Server Load Balancing, 2001. Editora O’Reilly & Associates, United States of America.
3. TANENBAUM, Andrew S. Redes de Computadores, Editora Campus, 4º Edição, p.45-47.
4. JR., Ken Salchow. Balanceamento de carga: Conceitos básicos<http://www.f5networks.com.br/pdf/white-papers/balanceamento-de-carga-conceitos-basicos-wp.pdf > Acesso em 22 de maio de 2010.
5. TERUSZKIN, Rafael. Balanceamento de Carga em Servidores Web.
<http://www.gta.ufrj.br/seminarios/semin2002_1/Rafael/ > Acesso em 18 de
junho 2010.
6. RODRIGUES, Maykon. IP Alias <http://maykoninfo.blogspot.com/2007/01/ipalias.html> Acesso em 05 de outubro de 2010.
7. TENEREILLO, Pete. (Figura 2) Why DNS Based Global Server Load
Balancing (GSLB) Doesn't Work <http://www.tenereillo.com/GSLBPageOfShame.htm> Acesso em 06 de outubro de 2010.
8. KUROSE, James F., ROSS, Keith W.. Redes de Computadores e a Internet
– Uma abordagem top-down, São Paulo, Editora Pearson Addison Wesley,
2006, 3º Edição.
9. RICHARD, Michael Graham. (Figura 11) Tree Hugger, Ottawa, Canadá
<http://www.treehugger.com/files/2008/05/servers-data-centers-energyefficiency-saving-sensors.php> Acesso em 15 de novembro de 2010.
10. efagundes.com - Infraestrutura comum para web hosting (Figura 10)
<http://efagundes.com/artigos/Infraestrutura%20comum%20para
%20provedores%20de%20servicos%20e%20empresas.htm> Acesso em 15
de novembro de 2010.
78
11. Ataques DoS e DdoS < http://www.infowester.com/col091004.php> Acesso
em 16 de novembro de 2010.
12. PILLOU, Jean-François. Kioskea.net – VLAN _Redes virtuais. < http://pt.kioskea.net/contents/internet/vlan.php3 > Acesso em 18 de novembro de 2010.
13. KOPPARAPU, Chandra. Load Balancing Servers, Firewalls and Caches.
2002. Editora Wiley Computer Publishing, United States of America.
14. RFC 1918 <http://iris.sel.eesc.sc.usp.br/sel378/tcp_ip_5/tsld029.htm> Acesso em 18 de novembro de 2010.
15. ALEM, Ricardo. Enterasys Networks do Brasil
<http://www.enterasys.com/br/products/whitepapers/wp-server-loading-balance.html> Acesso em 18 de novembro de 2010.
16. ARTHUR, Luiz. Cluster de Balanceamento de Carga <http://www.slideshare.net/luiz_arthur/tpicos-cluster-de-balanceamento-de-carga> Acesso em 22
de novembro de 2010.
Download

3 arquitetura do balanceamento de carga em servidores