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.