Text of 21 Cluster Grid
COMPUTAO EM CLUSTER Por Marcos Pitanga O que um Cluster? Na sua forma mais bsica um cluster um sistema que compreende dois ou mais computadores ou sistemas (denominados nodos) na qual trabalham em conjunto para executar aplicaes ou realizar outras tarefas, de tal forma para que os usurios que os utilizam tenham a impresso que somente um nico sistema responde para eles, criando assim uma iluso de um recurso nico (computador virtual). Este conceito denominado transparncia do sistema. Como caractersticas fundamentais para a construo destas plataformas inclui-se elevao da: confiana, distribuio de carga e performance. Tipos de Clusters Alta Disponibilidade (High Availability (HA) and Failover), estes modelos de clusters so construdos para prover uma disponibilidade de servios e recursos de forma ininterruptas atravs do uso da redundncia implcitas ao sistema. A idia geral que se um n do cluster vier a falhar (failover), aplicaes ou servios possam estar disponveis em outro n. Estes tipos de cluster so utilizados para base de dados de misses crticas, correio, servidores de arquivos e aplicaes. Balanceamento de carga (Load Balancing), este modelo distribui o trfego entrante ou requisies de recursos provenientes dos nodos que executam os mesmos programas entre as mquinas que compem o cluster. Todos os nodos esto responsveis em controlar os pedidos. Se um n falhar, as requisies so redistribudas entre os ns disponveis no momento. Este tipo de soluo normalmente utilizado em fazendas de servidores de web (web farms). Combinao HA & Load Balancing, como o prprio nome diz combina as caractersticas dos dois tipos de cluster, aumentando assim a disponibilidade e escalabilidade de servios e recursos. Este tipo de configurao de cluster bastante utilizado em servidores de web, mail, news ou ftp. Processamento Distribudo ou Processamento Paralelo, este modelo de cluster aumenta a disponibilidade e performance para as aplicaes, particularmente as grandes tarefas computacionais. Uma grande tarefa computacional pode ser dividida em pequenas tarefas que so distribudas ao redor das estaes (nodos), como se fosse um supercomputador massivamente paralelo. comum associar este tipo de cluster ao projeto Beowulf da NASA. Estes clusters so usados para computao cientifica ou anlises financeiras, tarefas tpicas para exigncia de alto poder de processamento. 1/28
Razes para utilizao de um Cluster Clusters ou combinaes de clusters so usados quando os contedos so crticos ou quando os servios tm que estar disponveis e/ou processados o quanto mais rpido possvel. Internet Service Providers (provedores de Internet) ou sites de comrcio eletrnico freqentemente requerem alta disponibilidade e balanceamento de carga de forma escalvel. Os clusters paralelos tm uma importante participao na indstria cinematogrfica para renderizao de grficos de altssima qualidade e animaes, relembrando que o Titanic foi renderizado dentro desta plataforma nos laboratrios da Digital Domain. Os clusters Beowulf so usados na cincia, engenharia e finanas para atuarem em projetos de desdobramento de protenas, dinmica de fludos, redes neurais, analise gentica, estatstica, economia, astrofsica dentre outras. Pesquisadores, organizaes e empresas esto utilizando os clusters porque necessitam de incrementar sua escalabilidade, gerenciamento de recursos, disponibilidade ou processamento a nvel supercomputacional a um preo disponvel. High-Availability (HA) ou Failover Clusters
Figura 1: Cluster de Alta Disponibilidade. Os computadores possuem uma forte tendncia a parar quando menos voc espera, principalmente num momento em que voc mais necessita dele. 2/28
raro no encontrar um administrador que nunca recebeu um telefonema no meio da madrugada com a triste notcia que o sistema de misso critica ficou fora ar, ou seja, no tem jeito voc tem que ir e resolver o problema. A Alta Disponibilidade est ligada diretamente a nossa crescente dependncia aos computadores, pois agora eles possuem um papel crtico principalmente em empresas cuja maior funcionalidade exatamente a oferta de algum servio computacional, como e-business, notcias, sites web, banco de dados, dentre outros. Um cluster de Alta Disponibilidade visa manter a disponibilidade dos servios prestados por um sistema computacional replicando servios e servidores, atravs da redundncia de hardware e reconfigurao de software. Vrios computadores juntos agindo como um s, cada um monitorando os outros e assumindo seus servios caso algum deles venham a falhar. A complexidade do sistema deve estar no software que deve se preocupar em monitorar outras mquinas de uma rede, saber que servios esto sendo executados, quem os est executando, e o que como proceder em caso de uma falha. Perdas na performance ou na capacidade de processamento so normalmente aceitveis; o objetivo principal no parar. Existem algumas excees, como sistemas de tempo real e de misso crtica. A tolerncia a falhas conseguida atravs de hardware, como sistemas raid, fontes e placas redundantes, sistemas rede totalmente ligados para prover caminhos alternativos na quebra de um link. Cluster de Balanceamento de Carga O balanceamento de carga entre servidores faz parte de uma soluo abrangente em uma explosiva e crescente utilizao da rede e da Internet. Provendo um aumento na capacidade da rede, melhorando a performance. Um consistente balanceamento de carga mostra-se hoje, como parte integrante de todo o projeto de Web Hosting e comrcio eletrnico. Mas no se pode ficar com as idias presas de que isso s para provedores, devemos aproveitar as suas caractersticas e trazermos para dentro das empresas esse modo de usar a tecnologia para atendermos os clientes internos das empresas. Os sistemas de cluster baseado em balanceamento de carga integram seus nodos para que todas as requisies provenientes dos clientes sejam distribudas de maneira equilibrada entre os nodos. Os sistemas no trabalham junto em um nico processo, mas redirecionando as requisies de forma independente assim que chegam baseados em um escalonador e um algoritmo prprio. Este tipo de cluster especialmente utilizado em servios de comrcio eletrnico e provedores de internet que necessitam de resolver diferenas de carga provenientes de mltiplas requisies de entrada em tempo real. 3/28
Adicionalmente, para que um cluster seja escalvel, tem que assegurar que cada servidor seja utilizado completamente. Quando no fazemos o balanceamento de carga entre servidores que possuem a mesma capacidade de resposta a um cliente, comeamos a ter problemas, pois um ou mais servidores podem responder a requisio feita e a comunicao fica prejudicada. Por isso devemos colocar o elemento que far o balanceamento entre os servidores e os usurios e configur-lo para isso, entretanto podemos colocar mltiplos servidores de um lado que, para os clientes, eles parecero ser somente um endereo. Um exemplo clssico seria o Linux Virtual Server, ou simplesmente preparar um load balancer de DNS. O elemento de balanceamento ter um endereo, por onde os clientes tentaro fazer contato, chamado de Virtual Server (VS), que redirecionar o trfego para um servidor do pool de servidores. Esse elemento dever ser um software dedicado a fazer todo esse gerenciamento, ou poder ser um equipamento de rede que combine performance do hardware e software para fazer a passagem dos pacotes e o balanceamento de carga em um s equipamento. Devemos salientar alguns pontos principais para que uma implementao em um ambiente de sucesso com balanceamento de carga nos servidores: O algoritmo usado para o balanceamento de carga, levando-se em considerao como feito o balanceamento entre os servidores e quando um cliente fizer uma requisio para o endereo virtual (VS), todo o processo de escolha do servidor e resposta do servidor deve ocorrer de modo transparente e imperceptvel para o usurio como se no existisse o balanceamento. Criar um mtodo usado para checar se os servidores esto vivos e funcionando, vital para que a comunicao no seja redirecionada para um servidor que acabou de ter uma falha (keepalive). Um mtodo usado para se ter certeza que um cliente acessar o mesmo servidor quando quiser. Balanceamento de carga mais que um simples redirecionamento do trfego dos clientes para outros servidores. Para implementao correta, o equipamento que far o balanceamento precisa ter caractersticas como verificao permanente da comunicao, checagem dos servidores e redundncia. Todos esses itens so necessrios para que suporte a escalabilidade do volume de trfego das redes sem vir a se tornar um gargalo ou um ponto nico de falha. Os algoritmos para balanceamento so um dos fatores de maior importncia neste contexto, vamos ento explanar trs mtodos bsicos:
Least Connections Esta tcnica redireciona as requisies para o servidor baseado no menor nmero de requisies/conexes. Por exemplo, se o servidor 1 est controlando atualmente 50 requisies/conexes, e o servidor 2 controla 25 requisies/conexes, a prxima requisio/conexo ser automaticamente direcionado para o servidor 2, desde que atualmente o servidor tenha um nmero menor de requisies/conexes ativas. Round Robin Este mtodo usa a tcnica de sempre direcionar as requisies para o prximo servidor disponvel de uma forma circular. Por exemplo, as conexes de entrada so dirigidas para o servidor 1, depois servidor 2 e finalmente servidor 3 e depois retorna ao servidor 1. Weighted Fair Esta tcnica dirige os pedidos para os servidores baseados na carga de requisies de cada um e na capacidade de resposta dos mesmos (performance) Por exemplo, se o servidor 1 quatro vezes mais rpido no atendimento aos pedidos do que o servidor 2, o administrador coloca um peso maior de trabalho para o servidor 1 do que o servidor 2 Cluster Combinado Alta Disponibilidade e Balanceamento de Carga Esta soluo combinada visa prover uma soluo de alta performance aliada a possibilidade da no existncia de paradas crticas. Este cluster c