Clusters, o que é?

8
Clusters Mateus Victorio Zagonel 1 , Cristian Cleder Machado 2 1 Aluno do Curso de Ciência da Computação – Universidade Regional Integrada (URI) Caixa Postal 709 – 98.400-000 – Frederico Westphalen – RS – Brasil 2 Professor do Curso de Ciência da Computação – Universidade Regional Integrada (URI) Caixa Postal 709 – 98.400-000 – Frederico Westphalen – RS – Brasil. [email protected],[email protected] Abstract. This article deals with the Cluster architecture, an architecture that is used for plays that require high processing power and large data availability. This architecture was created in order to be a viable alternative to supercomputers, because it has a simpler architecture and better cost x benefit when it comes to processing parallel. Shall explain throughout the article a brief definition of Cluster architecture used, types of Cluster and Applications. Resumo. O presente artigo trata da arquitetura Cluster, que é utilizada para execuções que demandam de grande poder de processamento ou grande disponibilidade de dados. Esta arquitetura foi criada com o objetivo de ser uma alternativa viável em relação aos supercomputadores, pois apresenta uma arquitetura mais simples e melhor custo x beneficio em se tratando de processamento paralelo (simultâneo) e distribuído. Explanarei no decorrer do artigo uma breve definição de Cluster, bem como a arquitetura utilizada e os tipos de Cluster de acordo com a aplicação. 1. Introdução Com a evolução da computação na década de 80 e devido aos supercomputadores terem um preço nada acessível, surgiram os clusters que correspondem a duas ou mais máquinas interconectadas pela rede e coordenadas por um software chamado Middleware, utilizados para execuções que demandam de grande poder de processamento. Os cientistas da época não se conformavam com a ideia de ter que investir em um supercomputador específico (que era absurdamente caro), então pensaram na seguinte questão: Por que não agrupar os computadores disponíveis através de um software e coordenar o processamento? A ideia deu tão certo que hoje a maioria dos quinhentos maiores computadores do mundo utiliza a arquitetura de Cluster. Atualmente os Clusters não são utilizados apenas para grande processamento, mas para outras tarefas como alta disponibilidade de dados e balanceamento de carga que tratarei com mais detalhes no título quatro do presente artigo. 2. Definição De acordo com Pitanga (2003): quanto a uma definição de Cluster: “[...] é um sistema que compreende dois ou mais computadores ou sistemas (denominados nodos) na qual trabalham em conjunto para executar aplicações ou realizar outras tarefas, de tal forma para que os usuários que os utilizam

description

O que é um cluster

Transcript of Clusters, o que é?

Clusters

Mateus Victorio Zagonel1, Cristian Cleder Machado2

1Aluno do Curso de Ciência da Computação – Universidade Regional Integrada (URI)

Caixa Postal 709 – 98.400-000 – Frederico Westphalen – RS – Brasil

2Professor do Curso de Ciência da Computação – Universidade Regional Integrada (URI)

Caixa Postal 709 – 98.400-000 – Frederico Westphalen – RS – Brasil.

[email protected],[email protected]

Abstract. This article deals with the Cluster architecture, an architecture that

is used for plays that require high processing power and large data availability. This architecture was created in order to be a viable alternative to

supercomputers, because it has a simpler architecture and better cost x benefit when it comes to processing parallel. Shall explain throughout the article a brief definition of Cluster architecture used, types of Cluster and Applications.

Resumo. O presente artigo trata da arquitetura Cluster, que é utilizada para execuções que demandam de grande poder de processamento ou grande

disponibilidade de dados. Esta arquitetura foi criada com o objetivo de ser uma alternativa viável em relação aos supercomputadores, pois apresenta uma arquitetura mais simples e melhor custo x beneficio em se tratando de

processamento paralelo (simultâneo) e distribuído. Explanarei no decorrer do artigo uma breve definição de Cluster, bem como a arquitetura utilizada e os

tipos de Cluster de acordo com a aplicação.

1. Introdução

Com a evolução da computação na década de 80 e devido aos supercomputadores terem um preço nada acessível, surgiram os clusters que correspondem a duas ou mais máquinas

interconectadas pela rede e coordenadas por um software chamado Middleware, utilizados para execuções que demandam de grande poder de processamento.

Os cientistas da época não se conformavam com a ideia de ter que investir em um

supercomputador específico (que era absurdamente caro), então pensaram na seguinte questão: Por que não agrupar os computadores disponíveis através de um software e

coordenar o processamento? A ideia deu tão certo que hoje a maioria dos quinhentos maiores computadores do mundo utiliza a arquitetura de Cluster.

Atualmente os Clusters não são utilizados apenas para grande processamento, mas para

outras tarefas como alta disponibilidade de dados e balanceamento de carga que tratarei com mais detalhes no título quatro do presente artigo.

2. Definição

De acordo com Pitanga (2003): quanto a uma definição de Cluster:

“[...] é um sistema que compreende dois ou mais computadores ou sistemas

(denominados nodos) na qual trabalham em conjunto para executar aplicações

ou realizar outras tarefas, de tal forma para que os usuários que os utilizam

tenham a impressão que somente um único sistema responde para eles, criando

assim uma ilusão de um recurso único (computador virtual).”

Não devemos confundir um Cluster com um Supercomputador, pois um cluster pode ser formado com máquinas comuns de diferentes configurações, projetadas para uma

infinidade de tarefas e interconectadas pela rede (fracamente acoplados). Por outro lado um supercomputador é formado por um conjunto de núcleos idênticos, dispostos em um

mesmo circuito (fortemente acoplados) se comunicando por meio de um barramento e memória compartilhada, implementados para uma tarefa especifica que necessite de grande poder de processamento. (Zem e Brito, 2006; Morimoto, 2002);

Os clusters são extremamente mais baratos e apresentam maior custo x beneficio em relação aos supercomputadores, estes por sua vez custam milhares de dólares e para as

tarefas especificas a que foram projetados terão na maioria dos casos um desempenho maior que um cluster. (Zem e Brito, 2006; Morimoto, 2002);

3. Arquitetura de Clusters

A arquitetura de um Cluster é composta por um conjunto de máquinas interligadas por

rede através de troca de mensagens. A comunicação utilizará uma estrutura de rede e seu respectivo conjunto de protocolos.

Um Cluster deve ser transparente ao usuário, ou seja, o usuário não poderá identificar a quantidade de máquinas interconectadas nem mesmo ter ideia da arquitetura utilizada e sim apenas ver o sistema como um todo. Para que ocorra transparência os Clusters

utilizam um software chamado Middleware que coordena as aplicações passando a ideia de que se trata apenas de um computador. (Zem e Brito, 2006);

Outro ponto importante de acordo com Zem e Brito (2006) é com relação à configuração

das máquinas, pois em um cluster podem haver computadores com as mais variadas configurações, porém todas devem conseguir se comunicar pela rede.

Para melhor entendimento utilizarei a figura 1, abaixo, em que há um desenho com uma arquitetura de um cluster, seguida de uma breve descrição de cada componente da mesma.

Figura 1 - Exemplo da Arquitetura de um Cluster

BackBone ou Rede de Comunicação: Corresponde a forma de comunicação empregada,

mais precisamente a arquitetura que a rede irá utilizar, podendo ser uma rede Gigabit Ethernet, Fast Ethernet ou até um barramento externo.

Interface de Rede: Correspondem aos adaptadores de rede que estão fisicamente em cada máquina. Devem ter suporte ao Backbone.

Protocolo de Comunicações: São as regras que serão utilizadas para que ocorra a

comunicação.

Nó ou Máquina: Qualquer máquina que faça parte do Cluster. (Zem e Brito, 2006);

Middleware: Software executado no Sistema Operacional responsável por “esconder” a arquitetura que é utilizada no Cluster e mostrar ao usuário o sistema como se funcionasse com apenas um computador.

Ambiente de Programação Paralela: Ambiente para criação de novas aplicações paralelas que utilizem o poder de processamento de um Cluster.

Aplicativos Paralelos: Programas paralelos com granularidade grossa, que são os programas com instruções que demandam de grande processamento. Os programas paralelos serão executados em cada nó do cluster obtendo o paralelismo.

Aplicativos Sequenciais: Programas sequenciais que não utilizarão o poder de processamento paralelo de um Cluster. São necessários, pois nem todas as aplicações

podem ser paralelizadas e mesmo as aplicações paralelizadas em algum momento serão sequenciais, normalmente no inicio e no final da execução. (Zem e Brito, 2006);

4. Tipos de Clusters

Neste título tratarei de três tipos de cluster, cada um dos três tipos de Cluster é projetado

para atender a uma necessidade específica, variando a arquitetura de acordo com a aplicação. Também serão tratados mais dois exemplo de Cluster muito comuns, que são: o Cluster Beowulf que se encaixa na arquitetura dos Clusters de Alto Desempenho e o

Cluster Mosix que se encaixa no grupo de Clusters de Balanceamento de Carga.

4.1. Cluster de Alto Desempenho

Esse tipo de Cluster é utilizado para tarefas que necessitem de grande processamento, ou seja, programas com granularidade grossa. Os clusters de alto desempenho seguem o principio de dividir uma grande tarefa em inúmeras tarefas menores e são utilizados para

computação cientifica, análises financeiras, pesquisas climáticas e simulações. (Zem e Brito, 2006; Salles ET AL, 2009);

Sua arquitetura é a mesma usada por um cluster Beowulf, conforme nos mostra a Figura 2 abaixo, pois utilizam um nó controlador que envia as tarefas para os demais nós Back-End de forma que a execução seja paralelizada.(Salles ET AL, 2009);

Figura 2 - Exemplo de um Cluster de Alto Desempenho

4.1.1. Cluster BeoWulf

O Cluster Beowulf é assim chamado devido a um herói inglês que tinha que derrotar um monstro, em se tratando de computação o seu adversário é o alto processamento. O

Cluster Beowulf está inserido dentro do grupo dos Clusters de Alto desempenho. (Alecrim 2004; Salles ET AL, 2009);

A arquitetura do Beowulf conforme nos mostra a Figura 3 abaixo, é composta por um nó controlador ou front-end, que possui a função de controlar o cluster distribuindo as tarefas de acordo com a ociosidade dos demais nós escravos ou Back-end’s. Os nós escravos por

sua vez são responsáveis por executar as tarefas paralelamente e responder ao nó controlador. Eles não necessitam de teclados e monitores e podem ser acessados por

acesso remoto (telnet ou ssh). (Salles ET AL, 2009);

Figura 3 - Exemplo da Arquitetura de um Cluster Beowulf

O nó controlador também funcionará como um gateway, pois permite que se necessário

os nós escravos se comuniquem com uma rede externa. (Salles ET AL, 2009);

Os Clusters Beowulf geralmente são projetados com hardware desktop, utilizam a tecnologia ethernet para comunicação e o sistema operacional Linux. Outro detalhe

importante é que esse tipo de cluster é centralizado, pois o nó controlador vai gerenciar o cluster e os demais nós apenas irão processar de maneira passiva o que nó controlador

determinar. (Zem e Brito, 2006);

Quanto às aplicações, os cluster Beowulf não são utilizados para aplicações em tempo real, mas sim para processar informações que necessitam de grande processamento como

renderização de imagens e efeitos especiais para filmes, podendo alcançar altos valores de gigaflops. (Salles ET AL, 2009);

4.2. Cluster de Alta Disponibilidade

Os Clusters de Alta Disponibilidade tem a função de garantir que um serviço esteja ativo em mais de uma máquina. Para que isso seja possível, utilizam replicações dos dados ou

serviços. (Pitanga, 2003);

Conforme nos mostra a figura 4 abaixo, imagine, por exemplo, um usuário acessando um banco de dados por meio da rede pública, sua requisição é enviada para o servidor ttisrv1,

porém esse servidor está em manutenção. Para que o usuário tenha sua solicitação atendida à mesma é redirecionada para o servidor ttisrv2 que possui exatamente as

mesmas informações que o servidor ttisrv1 e atenderá a requisição. Mas como o servidor ttisrv2 sabe que o servidor ttisrv1 está em manutenção? Existe uma técnica denominada heartbeat, em que através de uma rede privada, os integrantes do cluster trocam

mensagens sinalizando que estão ativos. (Zem e Brito, 2006);

Poderiam ser usados inúmeros servidores e não apenas dois, o número de servidores

depende da necessidade/importância do serviço.

Figura 4 - Exemplo de Cluster de Alta Disponibilidade

4.3. Cluster de Balanceamento de Carga

Tem por função distribuir as solicitações entre os nós do Cluster. Diferentemente dos Clusters de alta disponibilidade, os cluster de balanceamento de carga são apenas responsáveis por distribuir as requisições, portanto não possuem “cópias” dos dados em

todos os servidores, pois funcionam como redirecionadores de solicitações. (Prado e Silva 2010 apud Batista 2007);

São utilizados em serviços de Comércio Eletrônico, Provedores de Internet e sistemas que possuem grandes quantidades de acessos/requisições e necessitam de processamento em tempo real. (Pitanga, 2003);

Na figura 5, abaixo, em vermelho temos a estrutura de balanceamento de carga com três servidores integrando o cluster. O usuário envia uma requisição e está passa pelo cluster,

então um dos nós do Cluster assume a mesma e por meio de algoritmos de escalonamento a envia para o servidor de dados.

Figura 5 - Exemplo de um Cluster de Balanceamento de Carga

Os algoritmos de escalonamento mais comuns são:

*Least Connections: Servidor com menos requisições assume a solicitação.

*Round Robin: Envia a requisição para o próximo servidor seguindo uma ordem circular.

*Weighted Fair: Envia requisição para o servidor que possui melhor desempenho. (Pitanga, 2003);

Os Clusters de Balanceamento de Carga solucionaram problemas de requisições serem

atendidas por dois servidores ao mesmo tempo, pois com o processamento distribuído não há sobrecarga e é definido qual integrante do Cluster irá atender a requisição .

(Pitanga, 2003);

Os integrantes do Cluster de Balanceamento de Carga, assim como nos Clusters de Alta disponibilidade, devem possuir comunicação para que uma requisição não seja enviada

para um servidor que está inativo. (Pitanga, 2003);

4.3.1. Cluster Mosix

Um Cluster Mosix (Multicompute Operating system for UNIX) é um exemplo de Cluster de Balanceamento de Carga em que o nó que estiver com menos processamento receberá mais requisições para otimizar o desempenho fazendo com o cluster não fique ocioso.

Esse balanceamento de carga é feito de forma dinâmica através de algoritmos que determinam qual nó atenderá a requisição analisando a memória disponível, o uso da CPU

e a rede.

Nesse tipo de Cluster não existe um nó principal (caso do Cluster Beowulf) o que garante boa escalabilidade, pois pode-se incluir ou retirar um nó do Cluster a qualquer momento.

Sua implementação é baseada em Linux e totalmente transparente ao usuário, quanto as aplicações é utilizado em centros de pesquisa e universidades. (Salles ET AL, 2009);

4.4. Cluster de Alta Disponibilidade e Balanceamento de Carga

Esse tipo de Cluster combina as características dos Clusters de Alta Disponibilidade e de Balanceamento de carga. São utilizados por sistemas que independente da situação

garantem o acesso às informações.

A ideia desse tipo de cluster é redirecionar as solicitação dos nós com falhas para os nós

reservas e garantir os serviços com maior agilidade, pois com o balanceamento de carga o processamento é distribuído de forma que o servidor que estiver com menos

processamento receberá solicitações. (Pitanga, 2003);

Na figura 6, abaixo, temos um exemplo de combinação de Cluster de Alta Disponibilidade e Balanceamento de Carga (em Vermelho na Figura 6). Por exemplo, um usuário acessa

a internet, então a requisição é enviada ao servidor com que é escolhido por meio de escalonamento e este por sua vez envia a solicitação para um servidor de banco de dados

que estiver ativo e disponível.

Figura 6 - Exemplo de Cluster de Alta Disponibilidade e Balanceamento de Carga

5. Conclusão

Os Clusters correspondem a uma alternativa viável para supercomputação e para

formação de sistema distribuídos, pois projetar um cluster não necessita de grande complexidade, em comparação com um supercomputador, devido ao hardware não

necessitar ser idêntico para todos os “integrantes” do cluster e computadores comuns serem uma boa opção.

Atualmente empresas de médio porte e universidades já possuem clusters para

balanceamento de carga e disponibilidade, que são os modelos mais utilizados. Independente da situação, que pode ser, por exemplo, grandes quantidades de acessos em

um vestibular para visualização de uma nota, ou uma pane em um servidor de banco de dados, com esses tipos de cluster pode-se garantir a funcionalidade de um sistema de forma distribuída e segura.

A grande dificuldade na área de clusters não é com relação à arquitetura física, mas sim a criação de softwares que gerenciem um cluster e que utilizem a capacidade máxima de cada nó da estrutura, pois os programas devem ser paralelizados dinamicamente e o

Middleware deve distribuir as tarefas de forma inteligente de acordo com o processamento de cada nó.

A área de computação em Clusters corresponde a uma área de fundamental importânc ia, pois está em expansão principalmente para sistemas de grande porte. As grandes empresas têm duas opções atualmente, ou constroem seu próprio cluster, ou contratam um serviço

de Cloud Computing (Computação em Nuvem) que curiosamente é formada por Clusters.

Cabe aos administradores realizarem um estudo se é mais viável criar uma estrutura de

Cluster e contratar um administrador competente ou contratar um serviço de Cloud Computing, de certa forma “abrindo mão” do gerenciamento de suas informações.

6. Referências

Prado, C. L. e Silva, J. M. A. (2010). Sobre Clusters de Computadores. Em Aplicação de

Cluster Beowulf em Instituições de Ensino, páginas 23-41. Publicado na Internet em Portallivre.

Zem, J. L. e Brito, S. H. B. (2006). Sobre Arquitetura de Clusters. Em Monitoramento Distribuído de Clusters e Grids Computacionais utilizando o Ganglia, páginas 1-6. Publicado na I Jornada Científica da Universidade Brasileira de Tecnologia, Recife

(PE).

Salles, D. ET AL (2009). Sobre Clusters de Alta Performance. Em Cluster HPC – High

Performance Computing, 1-5. Publicado na FCT - Faculdade de Ciências e Tecnologia.

Pitanga, M. (2003) “Computação em Cluster”,

http://www.clubedohardware.com.br/artigos/153, Setembro.

Morimoto, C. E. (2002) “Supercomputadores e Clusters”,

http://www.hardware.com.br/livros/hardware-manual/supercomputadores-clusters.html, Setembro.

Alecrim, E. (2004) “Cluster: Principais Conceitos”,

http://www.infowester.com/cluster.php, Setembro.