b...c

19
Balanceamento de Carga Com foco em DNS Disciplina: Sistemas Distribuidos Autores: Daniel de Castro e Silva 201115567 Danillo dos Santos Neves 201101881 Luiz Ricardo dos Reis 201202034 Ricardo Moura L. da Silva 201201860

description

Documentação...

Transcript of b...c

Balanceamento de Carga

Com foco em DNSDisciplina: Sistemas Distribuidos

Autores:Daniel de Castro e Silva201115567

Danillo dos Santos Neves201101881

Luiz Ricardo dos Reis201202034

Ricardo Moura L. da Silva201201860

2015

Balanceamento de CargaO aumento do uso da Internet vem provocando dezenas de problemas de desempenho, incluindo tempos de resposta demorados, congestionamento da rede e interrupo dosservios, isso causado por sobrecarga normal dosistemaou por ataques cibernticos (DDoS). A soluo mais utilizada para minimizar ou resolver esses problemas o Balanceamento de Carga.

O conceito de Balanceamento de Carga se trata de dividir a quantidade de trabalho que um computador tem para fazer entre dois ou mais computadores para que mais trabalho seja feito na mesma quantidade de tempo e, em geral, todos os utilizadores sejam servidos mais rapidamente. Essa diviso pode ser feita pela virtualizao do trabalho dos servidores que esto sendo utilizados.

Outra definio para Balanceamento de Carga pode ser tambm: O processo de distribuio de solicitaes de servio por um grupo de servidores. Isso resolve uma srie de exigncias que tm se tornado cada vez mais importantes nas redes:

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

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

Alta disponibilidadeerecuperao de desastres: O terceiro benefcio do balanceamento de carga a sua capacidade de melhorar adisponibilidadedas aplicaes. Se uma aplicao ou servidorfalha, o balanceamento de carga pode automaticamente redistribuir as solicitaes de servio do utilizador final para outros servidores dentro de um cluster de servidores ou para servidores em outro local.

A figura ilustra os componentes bsicos do Balanceamento de Carga.

O balanceamento de carga pode ser implementado com hardware, software ou uma combinao de ambos. Um dos principais objetivos do balanceamento de carga fazer com que vrios servidores apaream como um nico servidor, distribuindo de forma transparente os pedidos dos utilizadores entre os servidores. O balanceamento de carga impede que as paralisaes planejadas para manuteno de hardware ou software interrompam o servio para os utilizadores finais e tambm pode fornecer servios de recuperao de desastres, redirecionando as solicitaes de servio para um local de backup quando uma falha catastrfica desativa o site principal.

As duas categorias de implementao de balanceamento de carga no servidor so: Balanceamento de carga por software: No balanceamento por software, o gerenciamento feito por um software instalado em um cluster especfico para balanceamento. O software filtra os pedidos dos clientes para os servidores, baseado em diferentes algoritmos como, Round-Robin ou um algoritmo mais complexo. Balanceamento de carga por hardware: Neste caso, o gerenciamento feito em um Switch ou Roteador especializado e com apoio de um software especfico, como citado acima. Esta soluo integra comutao e balanceamento de carga em um nico dispositivo, o que reduz a quantidade de hardware adicional necessrio para implementar o balanceamento de carga. Os modernos balanceadores de carga por hardware so normalmente conhecidos como ADC (Application Delivery Controllers).Inicialmente uma organizao pode comear com uma arquitetura simples, como a exemplificada na figura seguinte, que pode responder s expectativas de desempenho iniciais. Porm, com o aumento do volume de requisies, a camada de aplicao deve adaptar-se para manter o bom desempenho. Usando como exemplo uma empresa que utilize uma soluo de base de dados como o SQL Server em um ambiente do tipo Web Farm e que tambm tem opo de acesso aos dados em ficheiros, como as tabelas do Visual FoxPro ou Jet(Acess) e as tabelas so mantidas em uma localizao centro e acessvel via LAN, temos a seguinte estrutura:

No exemplo utilizado, a camada de aplicao contm apenas um servidor de aplicao que atende s solicitaes dos clientes. Caso haja sobrecarga deste servidor, o sistema ter perdas considerveis de desempenho ou ficar totalmente fora do ar.

Considerando os conceitos de balanceamento que vimos anteriormente, podemos expandir a camada de aplicao, adicionando novos servidores e utilizando os conceitos de balanceamento, fazendo com que mesmo com problemas em um dos servidores, os outros mantenham o sistema no ar e diminua ao mximo as perdas causadas por algum problema na rede. A mudana de estrutura est descrita na prxima figura, onde so adicionais mais dois servidores camada de aplicao, criando um cluster com balanceamento.

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

Nveis do Balanceamento de Carga

O balanceamento de carga dentro do servidor, pode ser dividido em balanceamento por hardware e balanceamento por software e integrando essas duas solues, podemos separar o processo de balanceamento em 3 camadas.

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

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

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

Comutao do nvel 7

A comutao o nvel 7, tambm conhecida como "comutao de pedidos", "comutao de aplicaes" ou "encaminhamento de contedos, recebeu esse nome com base no modelo OSI, indicando que o dispositivo comuta pedidos com base em dados do nvel 7 (camada de aplicao). Um switch de camada 7 apresenta ao mundo exterior um "servidor virtual", que aceita pedidos em nome de um nmero de servidores e distribui esses pedidos com base em polticas que utilizam dados de aplicao para determinar qual o servidor deve atender o pedido.Isso permite que a infraestrutura de aplicaes possa ser ajustada especificamente para atender a tipos especficos de contedo. Por exemplo, um servidor pode ser ajustado para servir apenas imagens, outro para a execuo de scripting no servidor como PHP e ASP e outro para contedo esttico, como HTML, CSS e JavaScript.

Ao contrrio do balanceamento de carga, a comutao de nvel 7 no exige que todos os servidores no grupo tenham o mesmo contedo. Na verdade, essa comutao espera que os servidores tenham um contedo diferente, a partir disso, h a necessidade de inspecionar os pedidos mais profundamente antes de determinar para onde devem ser direcionados.

Algoritmos de Balanceamento de Carga

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

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

Distribuio Rotativa: A distribuio rotativa utiliza o algoritmo rotativo conhecido como Round-Robin. Neste algoritmo, o trfego enviado para o servidor de destino de forma rotativa, de uma forma que seja possvel atribuir igualmente a carga para cada servidor, independentemente do nmero atual de ligaes ou do tempo de resposta. O primeiro pedido atribudo a um servidor escolhido aleatoriamente a partir do grupo dos servidores de destino, para as solicitaes subsequentes, o algoritmo segue a ordem pela qual so listados os restantes servidores. Quando um servidor recebe um pedido, esse servidor movido para o final da lista e o prximo servidor escolhido para o seguinte pedido, mantendo assim todos os servidores uniformemente carregados. O algoritmo Round-Robin s adequado quando todos servidores no cluster tm igual capacidade de processamento, caso contrrio, alguns servidores podem receber mais pedidos do que ele pode processar, enquanto outros utilizam apenas uma parte dos seus recursos. Distribuio Rotativa Ponderada: Esta uma verso avanada do Round-Robin, que leva em considerao as diferentes capacidades de processamento de cada servidor. possvel atribuir manualmente um fator de desempenho para cada servidor no grupo de destino gerando assim, uma sequncia de programao de acordo com o peso do servidor. Os pedidos so ento direcionados para os diferentes servidores de acordo com uma sequncia de distribuio rotativa. Por exemplo, se o grupo de servidores composto por 2 servidores e um servidor capaz de lidar com o dobro da carga do outro, o servidor mais poderoso recebe duas vezes o fator de desempenho e o balanceador de carga atribui dois pedidos para o servidor potente para cada solicitao atribuda ao mais fraco.

Menos Ligaes: Neste algoritmo o balanceador de carga ir monitorar o nmero de ligaes que os servidores tm e enviar o pedido para o servidor com menos ligaes, ou seja, o que estiver sendo menos requisitado naquele momento.

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

Balanceamento de carga por DNS

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

Geralmente, so estes os passos que ocorrem assim que feita uma consulta DNS:1. Quando um cliente tenta acessar ao site, realizada uma pesquisa no DNS local para determinar qual o endereo IP correspondente;2. O pedido de endereo chega ao servidor de DNS autoritrio do domnio;3. A primeira vez que esta consulta feita, o servidor DNS remoto pode retornar todos os registros de endereos que ele tem para o site;4. O servidor DNS local, em seguida, determina o endereo de registro para retornar ao cliente;5. Se todos os registros so retornados, o cliente utilizar o primeiro que lhe atribudo;6. O servidor responde ao cliente e atende ao pedido;7. A cada pedido, o algoritmo Round Robin roda os endereos, a partir da ordem em que esto;8. Cada consulta DNS resulta em um cliente utilizando um endereo de IP diferente;9. Esta rotao de endereos ir distribuir o pedidos para os servidores.

Apesar deste processo ser eficaz na distribuio, simples e extremamente escalvel, ele possui algumas desvantagens bastante significativas:

O balanceamento pode ser ignorado quando Cliente guardar informaes em cache com o objetivo de melhorar o desempenho, nesse caso as novas consultas realizadas pelo balanceador no podem ser executadas, j que a resoluo do endereo j foi realizada. O resultado final que o mesmo endereo IP ser devolvido para vrios clientes, ou seja, o mecanismo da cache quebra este esquema de balanceamento de carga;

Este mtodo no possui nenhum meio de monitorar o estado dos hosts individuais, ento, caso haja falha no servio de um dos servidores, mas ele ainda est ligado e respondendo ao balanceador, as requisies so enviadas para ele, independente da falha.

H ocasies em que o estado da sesso importante e necessrio amarrar o cliente ao mesmo servidor, o que algo que no pode ser feito usando o Round Robin DNS.

Solues de DNS

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

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

Linux Virtual Server LVS

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

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

Referncias Bibliogrficas

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

[2] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (II). Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/03/balanceamento-de-carga-ii.html. Acessado em: 21 de abril de 2015.[3] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (III). Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-carga-iii.html. Acessado em: 21 de abril de 2015.[4] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (IV). Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-carga-iv.html. Acessado em: 21 de abril de 2015.[5] Tecnologias e Tendncias no Ciberespao. Balanceamento de Carga (V). Disponvel em: http://redes-e-servidores.blogspot.com.br/2011/04/balanceamento-de-carga-v.html. Acessado em: 21 de abril de 2015.[6] Agility Tech Center. Balanceamento de carga baseado no mtodo Round-Robin. Disponvel em: http://techcenter.agilitynetworks.com.br/index.php?option=com_content&view=article&id=174:balanceamento-de-carga-baseado-no-metodo-round-robin&catid=94&Itemid=878. Acessado em: 2 de maio de 2015.

[6] Slideshare. Cluster de Balanceamento de Carga. Por: Luiz Arthur. Disponvel em: http://pt.slideshare.net/luiz_arthur/tpicos-cluster-de-balanceamento-de-carga. Acessado em: 2 de maio de 2015.

13