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.
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.
[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.
[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.
[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....????
[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.
[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.
[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
[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
[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.
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...
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...
[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 :º)
[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.
[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.