Funcionamento de um cluster Linux

Esse artigo é uma introdução ao mundo dos clusters Linux, foi baseado nas minhas experiências de dois anos de trabalho com esse tipo de máquina e pretendo colocá-lo como o primeiro de uma série. Espero que gostem.

[ Hits: 114.514 ]

Por: Daniel Constantino Zacharias em 29/02/2004 | Blog: Http://www.lentzmeioambiente.com.br


Definição




Cluster é um conjunto de máquinas (no caso de cluster Linux, especificamente, PC's) interligadas via rede que trabalham em conjunto trocando informações entre si.

A tecnologia de cluster é mais antiga do que se pensa. Ela começou nas máquinas de alto desempenho (supercomputadores). O desenvolvimento dessa tecnologia em PC's foi motivada devido ao alto preço dos supercomputadores, começando em 1994 com o desenvolvimento do cluster Beowulf pela NASA.

O Cluster Beowulf


Em 1994, a NASA, agência espacial norte-americana, necessitava de um equipamento com poder de processamento da ordem de um gigaflop. Uma máquina de tecnologia RISC com tal nível de desempenho custava em torno de um milhão de dólares. Diante disso, os pesquisadores Thomas Sterling e Donald J. Becker decidiram então interligar 16 computadores pessoais, cada um com um microprocessador 486, usando Linux e uma rede ethernet. Este conjunto atingiu a marca de 70 megaflops. Para a época, era uma velocidade comparável a de pequenos supercomputadores comerciais. O custo total do sistema foi de quarenta mil dólares ou seja, dez por cento do preço de uma máquina equivalente para a época.

Uma característica chave de um cluster Beowulf é o uso do Linux e de bibliotecas para troca de mensagens (vistas no próximo artigo) de livre distribuição, permitindo assim alterações no sistema operacional.

Um cluster pode possuir vários tipos de configurações diferentes, tanto na montagem do hardware quanto na configuração do sistema. Os tipos mais comuns de Clusters linux são:
  • Cluster de processamento paralelo: cada vez que o cluster recebe uma tarefa para executar (por exemplo, a renderização de um filme), já previamente preparada para rodar em processamento paralelo, o cluster divide os pedaços da tarefa para cada uma das máquinas realizar. Dessa forma, com várias máquinas trabalhando ao mesmo tempo em uma única tarefa, o tempo necessário para executá-la torna-se consideravelmente menor. Caso esse cluster possua um sistema de fila de espera, cada tarefa poderá contar com toda a capacidade de processamento do cluster. Se não há sistema de fila, cada vez que chega uma tarefa nova, os processadores dividem a sua capacidade de trabalho entre as tarefas. Um cluster paralelo é ideal para executar poucas tarefas, mas que exigem grande quantidade de processamento.
  • Cluster de disponibilidade: esse tipo de cluster funciona como um gerenciador de tarefas, ou seja, cada máquina trabalha sozinha, porém a distribuição de tarefas é feita de tal forma que os processadores estão sempre trabalhando na capacidade total. Nesse tipo de cluster é vital a implementação de um sistema de filas com vários níveis de prioridades diferentes, onde o servidor de filas irá gerenciar qual processador ficará com qual tarefa e o quanto de sua capacidade será utilizado para cada tarefa. Esse tipo de cluster é ideal para trabalhar com grandes quantidades de tarefas que exigem pequenas ou médias capacidades de processamento.

Atualmente, com a constante redução nos preços e o contínuo aumento na velocidade e capacidade de processamento dos PC's, muitos dos supercomputadores - devido ao seu alto custo - começam a perder viabilidade frente aos clusters Linux.

Esse artigo é o primeiro de uma série que visa detalhar o funcionamento e os conceitos por trás da computação de alto desempenho, mais especificamente o cluster Linux. Espero que gostem e aproveitem as informações.

To be continue...

   

Páginas do artigo
   1. Definição
Outros artigos deste autor

Funcionamento de um cluster Linux: Parte II - A revanche

Leitura recomendada

Criando, monitorando e terminando processos

Conhecendo os programas do Linux

Comandos básicos do Linux

Montando um Debian Etch - Para técnicos

Instalando o Fedore Core 4

  
Comentários
[1] Comentário enviado por ahamadeu em 29/02/2004 - 09:59h

Excelente artigo, parabéns.

[2] Comentário enviado por nemphilis em 29/02/2004 - 15:20h

Poxa....parabéns kra....espero ANCIOSAMENTE os novos artigos.....
Valeuz

[3] Comentário enviado por luizgmendes em 29/02/2004 - 15:26h

Pergunta de leigo, a título de curiosidade: Existe cluster windows também?

[4] Comentário enviado por vieira1975 em 29/02/2004 - 16:34h

Ótimo artigo, parabéns

[5] Comentário enviado por danizach em 29/02/2004 - 17:42h

luizgmendes> Eu nunca trabalhei com cluster windows, mas sei que eh possivel faze-lo ao menos no sistema de disponibilidade.

[6] Comentário enviado por danizach em 29/02/2004 - 17:42h

luizgmendes> Eu nunca trabalhei com cluster windows, mas sei que eh possivel faze-lo ao menos no sistema de disponibilidade.

[7] Comentário enviado por cvs em 29/02/2004 - 22:51h

Hum, e a respeito daqueles lances, beowlf, acho que é assim que escreve, nao sei... qual diferença?

[8] Comentário enviado por coronel em 29/02/2004 - 23:11h

Cara, parabéns, excelente artigo
Abraço

[9] Comentário enviado por y2h4ck em 01/03/2004 - 09:12h

Bom cluster eu diria que e uma coisa interessante de se fazer ...e para por ai ... pq me diga quem vai utilizar uma coisa dessas ?
Bom eu pelo menos nao preciso de um cluster em casa para quebrar o genoma humano em mennos de uma semana ehehe :D
Eu acho que o cluster seria algo interessante quando o processamento paralelo deixasse de ser algo tao manual ... se ele realmente fizesse um escalonamento dos processos independente de vc ter que reescrever os eu codigo fonte ai sim ...
eu sairia comprando p100 por ai ehehe e montaria um cluster :D
valew mas todo caso valew vc colar pra gente esse texto .

[10] Comentário enviado por fabio em 01/03/2004 - 09:20h

Suponha a seguinte situação. Você tem um laboratório de informática numa universidade com 200 computadores ligados em rede, porém somente 50 deles estão sendo usados. Imagina que maravilha seria se estes 50 utilizassem os recursos dos outros 150 que estão ociosos?

O Beowulf não consegue fazer isso porque a aplicação que está sendo executada precisa ter sido compilada de forma a utilizar os recursos de processamento paralelo, mas o MOSIX (http://www.mosix.org/), embora ainda não trate com eficiencia alguns tipos de aplicações, é um software de cluster a nível de kernel, ou seja, seu programa não precisa ter sido compilado com flags especiais, é o próprio kernel que cria uma camada de interligação com as outras máquinas para divisão do processamente.

É meio viagem, quem quiser se aprofundar sobre isso pode acessar o site acima e me dizer se estou entendendo errado ou não. Digo isso porque já participei de testes em um cluster Mosix numa empresa de consultoria Linux que já trabalhei.

[]'s

[11] Comentário enviado por agk em 01/03/2004 - 09:56h

Muito bom o artigo, a algum tempo atrás me interessei em saber como funciona o sistema de cluster em linux, tenho aqui algumas máquinas para fazer isso. Aguardo os novos artigos, assim que eu arrumar tempo vou começar a montar meu próprio cluster.

[ ]'s

[12] Comentário enviado por pbn19 em 01/03/2004 - 10:50h

Gostei muito do artigo. Espero ancioso o próximo artigo.
Parabéns!!

[13] Comentário enviado por gustavo_marcon em 01/03/2004 - 12:25h

Cara, gostei do artigo mas tenho uma dúvida.
Por exemplo um dia entrei num provedor e notei que háviam uns dez micros ligados em rede, será que eles usavam o sistema de cluster, (se é que é necessário usar isso em sistemas de provedores de acesso) ou se cada um deles trabalhava na mesma rede mas de forma independente, exemplo: 1 firewall, 1 servidor web, 1 banco de dados etc....????

[14] Comentário enviado por _simmons_ em 01/03/2004 - 12:53h

Nota 10 o artigo. Parabéns ! Eu também estou querendo "brincar" com clusters e HA, fico no aguardo pelos próximos artigos.

[15] Comentário enviado por danizach em 01/03/2004 - 15:01h

gustavo_marcon> As duas coisas sao possiveis, mas ainda existem poucas pessoas no mercado realmente habilitadas a trabalhar adequadamente com clusters e em geral os que o fazem trabalham para companhias de porte significativo. Por isso o mais provavel eh que sejam maquinas independentes.

[16] Comentário enviado por danizach em 01/03/2004 - 15:02h

gustavo_marcon> As duas coisas sao possiveis, mas ainda existem poucas pessoas no mercado realmente habilitadas a trabalhar adequadamente com clusters e em geral os que o fazem trabalham para companhias de porte significativo. Por isso o mais provavel eh que sejam maquinas independentes.

[17] Comentário enviado por gustavo_marcon em 01/03/2004 - 15:08h

Neste caso como provedores de acesso fazem para não sobrecarregar o servidor principal em horários de pico, vejam por exemplo, 200 usuários acessando o compartilhamento de internet diretamente de um servidor, isso comprometeria significativamente a qualidade do serviço de acesso (não é?) e se for como é feito p/ que isso não aconteça? Existe algum meio de se fazer isso sem que seja preciso usar Cluster?

[18] Comentário enviado por danizach em 01/03/2004 - 17:19h

gustavo_marcon> Minha especializacao nao eh provedores de acesso, e sim modelagem computacional, mas mesmo assim vou tentar te ajudar. Vc poderia descrever melhor a situacao que vc esta imaginando?

[19] Comentário enviado por gustavo_marcon em 01/03/2004 - 18:12h

Eu estive pensando o seguinte, imagine um provedor de acesso.
Ele deve compartilhar o acesso c/ seus usuários mas imagine a seguinte situação, todos ou muitos usuários pendurados ao link ao mesmo tempo, o servidor principal por melhor que seja, vai "arriar", pois mesmo acesso á sites ou qualquer outra requisição vai ter que primeiro passar pelo servidor ligado ao link p/ depois seguir em frente, sobrecarregando assim sua carga, então quando li que cluster é usado p/ situações que exijam alto poder de processamente imaginei que seria essa a solução p/ minha pergunta, mas fui informado que o mesmo é empregado somente em aplicação ainda mais pesadas, então continuo em dúvida, mas caso não seja sua área peço desculpas pelo encomodo, mas caso vc saiba me dar uma solução ficarei grato.

Obrigado.

[20] Comentário enviado por maiquel em 02/03/2004 - 09:39h

achei muito interessante seu assunto sobre clusters
espero ate o proximo artigo
t+

[21] Comentário enviado por danizach em 02/03/2004 - 10:15h

gustavo_marcon> Agora eu entendi. Eu sei que eh possivel utilizar clusters de disponibilidades para esse tipo de aplicacao, ou seja, o sistema vai fazendo balanceamento de carga entre as diversas maquinas do cluster para atender as requisicoes. Quando a quantidade de pedidos supera a capacidade da maquina, eles entram em sistema de fila de espera. Para esse tipo de aplicacao, um cluster de 2 ou 3 maquinas Xeon com 2G de RAM em cada e placas de rede Giganet, raramente ira se sobrecarregar a massa critica tem que ser muito grande. Uma maquina dessas pode ser, por exemplo, servidor de mails de uma universidade do porte da USP ou da Unicamp com tranquilidade.

[22] Comentário enviado por kvillaca em 04/03/2004 - 09:54h

Muito bom o artigo, estou na espera da continuacao

[23] Comentário enviado por pitanga em 19/03/2004 - 16:52h

O Conceito não é bem esse,
Um sistema em cluster consiste em duas ou mais máquinas que trabalham em conjunto na qual fazem uso de um sistema de visão única, ou seja, passam a agir como se fosse uma só unidade.

Na sua primeira introdução não dá para diferenciarmos uma rede de computadores de um cluster, pois são conceitos totalmente diferentes.

O conceito de Cluster nasceu em 1962 com o Projeto SAGE para o NORAD visando a defesa area norte-americana.

Os conceitos estão muitos vagos e errados.. nos modelos de cluster paralelo e alta disponibilidade.

Procure estudar mais um pouco...

Não fique chateado, é somente uma crítica construtiva

[]´s

Marcos Pitanga
Linux Clusters Specialist

[24] Comentário enviado por danizach em 21/03/2004 - 01:19h

pitanga> Os conceitos nao estao errados e nem vagos, eles estao apenas simplificados. Ate compreendo que vc os ache simplificados demais. Acredito que isso seja por que vc nao entendeu o espirito do artigo que eh proporcionar a informacoes basicas em linguagem acessivel e nao ficar usando jargoes tecnicos e me aprofundando demais em um assunto que, infelizmente, ainda nao eh muito difundido. Seria interessante vc contribuir com um artigo de sua autoria sobre esse assunto, temos poucos artigos abordando clusters linux na pagina.

Daniel Zacharias
Mestrando em Modelagem Computacional
Universidade de Sao Paulo - USP

[25] Comentário enviado por pitanga em 21/03/2004 - 18:59h

www.gabrieltorres.com.br/super.html
www.gabrieltorres.com.br/super2.tml
www.gabrieltorres.com.br/cluster.hml

Além disso têm meus livros

Construindo Supercomputadores com Linux 2a Edição
Computação em Cluster.

E tb têm um artigo meu aqui no viva o linux, só dá um search em cluster.

[]´s
Marcos Pitanga
M.Sc Informática
CCNA / CCNP / CCAI - CISCO
Linux LPIC1/2 Certified
Linux Clusters Specialist
www.multipinguim.underlinux.com.br

[26] Comentário enviado por danizach em 31/03/2004 - 09:24h

Pitanga>Obrigado pela contribuicao e ficam ai os links para quem quiser saber um pouco mais sobre clusters.

Daniel

[27] Comentário enviado por thiagoabb em 17/01/2005 - 13:26h

Muito bom artigo...

tem alguma coisa aqui no VOL de como montar um CLUSTER?

vlw

[28] Comentário enviado por mctbrasil em 21/05/2005 - 09:17h

E ae Galera, blz?

Gostaria de saber mais a respeito de clusters, principalmente especificações técnicas para montar um cluster, e se possível algum dado estatístico de qual o cluster é mais rápido e para que tipo de tarefa.

Muito obrigado


Fabiano
Fatec - TQ

[29] Comentário enviado por tgonzalez em 09/06/2005 - 17:56h

Gostei muito da "briga" entre Marcos Pitanga e Daniel autor do artigo, acredito que tais divergências colaborem :)

http://www.tldp.org/HOWTO/openMosix-HOWTO/

Vou seguir este caminho, minha idéia é montar processamento centralizado para ter algo como Citrix metaframe rodando, mas para Linux com boot remoto... voltemos a era do grande computador e terminais ligados a seriais mas com terminais graficos...

Alguma orientação dos mestres Jedis :)

[30] Comentário enviado por tgonzalez em 09/06/2005 - 17:57h

Gostei muito da "briga" entre Marcos Pitanga e Daniel autor do artigo, acredito que tais divergências colaborem :)

http://www.tldp.org/HOWTO/openMosix-HOWTO/

Vou seguir este caminho, minha idéia é montar processamento centralizado para ter algo como Citrix metaframe rodando, mas para Linux com boot remoto... voltemos a era do grande computador e terminais ligados a seriais mas com terminais graficos...

Alguma orientação dos mestres Jedis :)

[31] Comentário enviado por pitanga em 13/06/2005 - 10:25h

Gostaria de saber mais a respeito de clusters, principalmente especificações técnicas para montar um cluster, e se possível algum dado estatístico de qual o cluster é mais rápido e para que tipo de tarefa

Fabiano


Fabiano, eu tenho dois livros publicados sobre cluster.

Construindo Supercomputadores com Linux, 2a Ed, 2004.

ë um guia básico para introdućão a tecnologia, aliando parte teórica com parte prática.

Computaćão em Cluster, 2003, Brasport

Um livro escrito para a comunidade academica, que deseja se aprofundar em conceitos avancados em computacao em cluster.


[]'s

Marcos Pitanga
System Engineer
Gplus Energy - High Performance Computing
www.gplus.com.br

[32] Comentário enviado por jeff.jno em 20/03/2006 - 11:54h

Estou implementando um Bproc - Beowlf distributed PROCess space, utilizando o Slackware. Respondendo ao nosso amigo, sim eh possivel implementar um cluster usando windows NT, 2000 Advanced Server, 2000 Data Center Service e windows server 2003 as duas versoes. Cada um com suas limitacoes a comum para todos eles eh a exigencia de hardware de primeira linha, Nics 3com de 1Gb/s ou melhores ou equiparadas, controladoras SCSI trabalhando em RADI 1 (mirror) etc... assim que conseguir quebrar todas a pedras no linux pretendo escrever um tutorial sobre linux & Cluster.
Vc pode achar algo sobre SQL com o nome de Failover e nao cluster, mas nos sistemas operacionais e Cluster mesmo, no Windows2003 bastar clicar em iniciar > programas > ferramentas administrativas > Cluster :º)

[33] Comentário enviado por netshen em 24/10/2007 - 23:28h

cluster eh um sistema muito eficiente para alto processamento, alta disponibilidade.. e por ai vai.. o artigo citou, hehehe

trabalho com cluster a quase dois anos...

flwww galera

[34] Comentário enviado por Osirix em 03/02/2009 - 01:39h

estou cada vez mais me interessando por esse assunto .. cluster linux ..^^


[35] Comentário enviado por banto em 25/12/2009 - 17:52h

"Em 1988, compartilhei 65 mil processadores que conseguiram realizar 3,1 bilhões de cálculos por segundo. Agora a Apple e a IBM estão se valendo da minha criação." é um trecho da entrevista que Philip Emeagwali deu para o jornal Estadão em 2001.

[36] Comentário enviado por rafatmb em 12/11/2010 - 18:34h

Cada vez mais avançamos nestes pontos. Os conceitos persistem, mas a facilidade e a simplifidade aumentam.

Rafael Marangoni
LPIC 1/2/3
http://www.brlink.com.br

[37] Comentário enviado por m4cgbr em 23/10/2012 - 19:09h

Ótimo artigo, eu particularmente cheguei até aqui porque tenho vários computadores parados e preciso de mais poder para renderização de vídeos, ai pensei nisso. Vou tentar implantar e posto o resultado.

Vlw pelo artigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts