Família de palavras.ppt com exemplos e exercícios interativos.
Clusters, o que é?
1. 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.
inf16755@uri.edu.br,cristian@cristian.com.br
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 toprocessing 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 objetivode 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
2. tenhama 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
3. 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);
4. 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);
5. 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.
6. 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.
7. 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ância,
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.
8. 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.