Também chamado de Clustering (quando visto em um contexto mais abrangente), Cluster é o nome dado a um sistema montado com mais de um computador, cujo objetivo é fazer com que todo o processamento da aplicação seja distribuído aos computadores, mas de forma que pareça com que eles sejam um computador só. Com isso, é possível realizar processamentos que até então somente computadores de alta performance seriam capazes de fazer.
Cada computador de um cluster é denominado nó ou nodo. Todos devem ser interconectados, de maneira a formarem uma rede, de qualquer topologia. Essa rede precisa ser criada de uma forma que permita o acréscimo ou a retirada de um nó (em casos de danos, por exemplo), mas sem interromper o funcionamento do cluster. O sistema operacional usado nos computadores deve ser de um mesmo tipo, ou seja, ou somente Windows, ou somente Linux, ou somente BSD, etc. Isso porque existe particularidades em cada sistema operacional que poderiam impedir o funcionamento do cluster.
Independente do sistema operacional usado, é preciso usar um software que permita a montagem do cluster em si. Esse software vai ser responsável, entre outras coisas, pela distribuição do processamento. Esse é um ponto crucial na montagem de um cluster. É preciso que o software trabalhe de forma que erros e defeitos sejam detectados, oferecendo meios de providenciar reparos, mas sem interromper as atividades do cluster. Obviamente, esse tipo de necessidade pode ser controlada através de um equipamento específico, ou seja, não depende apenas do software.
Para que exista, um cluster precisa de pelo menos dois computadores. Evidentemente, quanto mais computadores existir no cluster, maiores serão os custos de implementação e manutenção. Isso não se deve apenas ao preço dos computadores, mas também pelos equipamentos (switches, cabos, hubs, nobreaks, etc). Mas ainda assim, os custos costumam ser menores do que a aquisição/manutenção de computadores poderosos e algumas vezes o processamento é até mais eficiente (rápido).
Aplicações para Clusters
Os clusters podem ser usados para uma infinidade de aplicações. Basicamente, para qualquer uma que exija processamento pesado. Como exemplos de aplicações, temos previsão meteorológica (previsão do tempo e condições climáticas), simulações geotérmicas (ou seja, simulação de eventos no solo), renderização de efeitos especiais (muito usado em filmes), simulações financeiras, distribuição de carga, etc.
Basicamente, qualquer tipo de aplicação crítica, ou seja, aplicações que não podem parar de funcionar ou não podem perder dados (como os sistemas de bancos, por exemplo), podem utilizar as tecnologias de cluster, desde que devidamente configurados para não serem sujeitas a falhas graves. Assim, o cluster deve contar com nobreaks ou geradores que garantam o funcionamento do sistema mesmo nos casos de queda de energia, além de meios de manutenção e detecção de falhas eficientes, como já citado.
Cluster Beowulf
O nome Beowulf vem de um herói muito valente que tinha a missão de derrotar um monstro, num texto inglês antigo. Esse tipo de cluster, voltado à computação paralela, foi fundamentado em 1994, pela NASA, com a finalidade de processar as informações espaciais que a entidade recolhia. Desde então, grandes empresas (como HP e IBM) e universidades (como a brasileira Unesp) vêm construindo clusters deste tipo e como cada vez mais nós!
O que distingue o Cluster Beowulf dos outros tipos são as seguintes características (que são aplicadas de acordo com a finalidade do cluster):
- A conexão dos nós pode ser feita por redes do tipo Ethernet (mais comum);
- Existe um servidor responsável por controlar todo o cluster, principalmente quanto a distribuição de tarefas e processamento (pode haver mais de um servidor, dedicado a tarefas específicas, como monitoração de falhas). Este servidor é chamado de Front-end;
- O sistema operacional é baseado Linux, sendo necessário que ele contenha todos os programas para cluster;
- Pode-se usar computadores comuns, inclusive modelos considerados obsoletos;
- Não é necessário usar equipamentos próprios para clusters. Basta equipamentos comuns à redes e os tradicionais PCs.
De maneira generalizada, o Cluster Beowulf permite a construção de sistemas de processamento que podem alcançar altos valores de gigaflops (um gigaflop equivale a 1 bilhão de instruções de ponto flutuante executadas por segundo). Isso tudo com o uso de computadores comuns e de um sistema operacional com código-fonte livre, ou seja, além de gratuito, pode ser melhorado para a sua finalidade. Tais características fizeram do Cluster Beowulf um tema muito explorado em universidades e claro, aplicado para vários fins.
Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a necessidade de se ter as bibliotecas para Parallel Virtual Machine (PVM) ou para Message Passing Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nós do cluster. O MPI é mais avançado que o PVM, pois pode trabalhar com mensagens para todos os computadores ou para apenas um determinado grupo (por exemplo, quando somente este grupo vai realizar determinada tarefa).
Foto de um Cluster Beowulf com 16 computadores usando sistema operacional Red Hat Linux.
Outros tipos de cluster
Além do Beowulf, existem vários outros tipos de cluster, para os mais diversos fins. Os mais conhecidos são vistos a seguir:
Cluster para Alta Disponibilidade: quando se fala de Disponibilidade, fala-se do tempo em que determinado sistema permanece ativo e em condições de uso. A Alta Disponibilidade se refere a sistemas que praticamente não param de funcionar. Existem clusters deste tipo. Usados em aplicações de missão crítica, eles costumam ter meios eficientes de proteção e de detecção de falhas;
Cluster para Balanceamento de Carga: Balanceamento de Carga se refere à distribuição equilibrada de processamento aos nós do cluster. É muito usado na Internet, em servidores de e-mail, comércio eletrônico e em sistemas de lojas. Neste tipo de cluster, é necessário que haja monitoração constante da comunicação e mecanismos de redundância. Caso contrário, qualquer falha pode interromper o funcionamento do cluster;
Cluster Combo: este tipo combina as características dos clusters De Alta Disponibilidade e de Balanceamento de Carga.
Cluster MOSIX
MOSIX é a sigla para Multicomputer Operating System for UnIX. Trata-se de um conjunto de ferramentas de cluster para Linux, voltado ao tipo Balanceamento de Carga. Uma de suas principais características é a não necessidade de aplicações e recursos de software voltados ao cluster, como acontece com o Beowulf. O MOSIX é eficiente na tarefa de distribuição dinâmica de processamento entre os computadores do cluster. Esse tipo, assim como o Beowulf, é muito utilizado por universidades em pesquisas e projetos. Por ser baseado em Linux, sua implementação é transparente, além de ser relativamente fácil de instalar.
De maneira generalizada, O MOSIX é uma extensão para Linux (ou sistemas baseados em Unix) de um sistema de cluster que trabalha como se fosse um único supercomputador, por meio de conceitos de Distribuição de Processos e Balanceamento de Carga.
Finalizando
As tecnologias de Clustering possibilitam a solução de diversos problemas que envolvem grande volume de processamento. As aplicações que um cluster pode ter são diversas, indo desde a simples melhora no desempenho de um determinado sistema até o processo de pesquisas científicas complexas. O que realmente chama a atenção, é que todo o processamento pode ser feito de maneira que pareça ser um único computador dotado de alta capacidade. Assim, é possível que determinadas aplicações sejam implementadas em custer, mas sem interferir no funcionamento de outras aplicações que estejam relacionadas.
O cluster montado na foto foi criado por mim, e mais alguns colegas aqui da faculdade mesmo, à pedido de uma empresa de BH, especializada em edição de mídia digital, em sua maioria vídeos de alta definição.O custo total do cluster foi algo em torno de R$ 2.600,00 , enquanto um servidor com tal capacidade custaria por volta de R$ 27.000,00.
Um exemplo no Brasil, é um cluster que foi desenvolvido em 2003 por um aluno da Universidade Estadual Paulista (Unesp), de São Paulo. Baseado no tipo Beowulf, este cluster ficou bastante conhecido, por ajudar na pesquisa de medicamentos para o tratamento da tuberculose. O valor gasto neste projeto foi 60 mil reais. Se tivesse sido utilizado um supercomputador de capacidade equivalente, os gastos seriam até 17 vezes maior.
Só por este exemplo, é possível ver os vários benefícios do Clustering. Processamento eficiente, custo baixo, ampla gama de aplicações, enfim. Quem se sujeita a estudar estes conceitos (que são muito mais amplos do que o que foi explicado neste artigo) poderá não só ter sucesso profissional, mas ter um conhecimento grande sobre vários conceitos da computação em si.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário