Clusters, o que é?

886 visualizações

Publicada em

O que é um cluster

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
886
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
18
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Clusters, o que é?

  1. 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. 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. 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. 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. 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. 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. 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. 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.

×