Cluster: associando computadores

Compartilhe!

Saiba o que é cluster e suas características

Definição

Quando se necessita de computação de alto desempenho as alternativas são: aquisição de um caro e sofisticado servidor ou a utilização de clusterização de computadores comuns para aumentar o poder de processamento do conjunto.

Cluster é exatamente isso: associação de computadores rodando um mesmo sistema operacional, sem necessariamente terem o mesmo hardware, a fim de se obter um poder de computação maior, resultante do esforço conjunto desses computadores associados na realização de uma tarefa. Cada computador do cluster, chamado de ou node, realiza uma parte da tarefa de forma simultânea. Esses nós são interconectados através de rede ethernet, infiniband ou outra. Tais computadores associados, a rigor, não necessitam ser máquinas sofisticadas, podem ser PC's simples. Eles podem ser dedicados ao cluster ou não dedicados, serem utilizados, também, para outras tarefas. O importante é que a rede utilizada permita a inserção ou remoção de nós no cluster mantendo seu funcionamento.


Computadores interligados em Cluster
Cluster de computadores

Independente do número de nós de um cluster, ele deve ser transparente para o usuário ou para o programa a ser executado, de modo a parecer ser um único computador.

Aplicações


São diversas as aplicações do cluster. Dentre elas podem-se citar sistemas meteorológicos, mapeamento genético, simulações geotérmicas, renderização de imagens 3D, computação em nuvem, aplicações de missão crítica (que necessitam de alta disponibilidade), etc.

Tipos de clusters

Existem vários tipos de cluster, dentre eles estão: o cluster de alto desempenho, o cluster de alta disponibilidade e o cluster de balanceamento de carga.

  • Cluster de Alto Desempenho (High Performance Computing Cluster)

    • São destinados a aplicações que exigem alto poder de processamento, tais como sistemas científicos, que necessitam processar grande quantidade de dados e realizar cálculos complexos. O foco desse tipo de cluster é prover agilidade aos cálculos realizados pelas aplicações. 

  • Cluster de Alta Disponibilidade (High Availability Computing Cluster)

    • Seu foco é manter a aplicação sempre rodando. Se uma parada ocorrer ela deve ser extremamente breve. Há casos em que a disponibilidade exigida de uma aplicação é de 99,999% do tempo a cada ano.
    •  Para atender a tal nível de disponibilidade, esses clusters possuem ferramentas de monitoração de nós defeituosos, redundância de sistemas e nós extras para substituição imediata dos defeituosos, bem como sistema de nobreak para garantir que não haja falta de energia elétrica.

  • Cluster para Balanceamento de Carga (Load Balancing)

    • O foco desse tipo de cluster é manter distribuída entre os diversos nós uma carga equilibrada de trabalho, de modo a não sobrecarregar nenhum deles. Para isso, existe um nó central que recebe as requisições e as distribui de acordo com a carga de trabalho de cada nó. Uma aplicação para esse tipo de cluster são os sites de internet que recebem muitos acessos simultâneos. 
Os diversos tipos de cluster podem ser combinados de acordo com a característica do problema a ser resolvido.

O controle do cluster é feito via software, que funciona como uma interface para o administrador do sistema, provendo configuração, manutenção, otimização, monitoração, etc. Esse software é chamado de middleware e é instalado no nó administrador. Ele lida com as bibliotecas de comunicação entre os nós. Essa comunicação pode ser do tipo MPI (Message Passing Interface) ou do tipo PVM (Parallel Virtual Machine).


Cluster Beowulf


Topologia de um cluster Beowulf
Topologia de um cluster Beowulf

Existem diversos tipos de cluster. O mais famoso padrão de cluster é o Beowulf clustering disponibilizado pela NASA (National Aeronautics and Space ) em 1994 e bastante utilizado.

Esse tipo de cluster possui as seguintes características:

  • Deve haver pelo menos um nó mestre (front-end, master node) entre os nós para o controle dos demais (back-ends, slave nodes).
  • A comunicação entre os nós é feita através de rede ethernet. 
  • Não existe necessidade de hardware especializado para os nós. O sistema operacional utilizado deve ser de código aberto, como o Linux e outras variações do Unix como o MOSIX.
  • Seus nós devem ser dedicados ao cluster.
  • É necessário utilizar-se bibliotacas de comunicação como a PVM (Parallel Virtual Machine) ou a MPI (Message Passing Interface), sendo esta última a mais avançada.

O cluster montado pela NASA era composto por 16 PC's Intel 486 DX4 e sistema operacional Linux, conectados por uma rede Ethernet de 10 Mb/s.

Sistemas operacionais para clustering 


O MOSIX (Multicomputer Operating System for Unix) é uma das boas opções, pois controla não só CPU's como GPU's, nós dedicados e não dedicados, com possibilidade de agendamento de horários para a entrada de nós no sistema. Seu foco é o balanceamento de carga e o alto desempenho. Entretanto, sua versão opensource foi descontinuada em 2008.

O OpenSSI é opensource e focado em ambientes Linux. O nome SSI (Single System Image) baseia-se no fato de que os vários nós devem ser vistos como um único computador. Isso facilita o papel dos softwares que rodam nesse cluster, que funcionam de forma transparente, sem necessidade de alteração de sua implementação.
O OpenSSI lida com alto desempenho e com alta disponibilidade, com recursos para balanceamento de carga.


O Kerrighed é, também, SSI, opensource e voltado para o ambiente Linux. Utiliza o conceito de Distributed Shared Memory (DSM), memória compartilhada distribuída, que faz com que a memória do sistema seja a soma da memória de cada nó. Isso possibilita que parte da memória seja disponibilizada para os clientes da aplicação; sistemas centralizados podem rodar de maneira distribuída dentro da solução, além do cluster poder se comportar como uma máquina com vários processadores.

Conclusão

Os clusters podem oferecer desempenhos até superiores a servidores sofisticados e a um baixo custo. Por isso, não é necessário depender de um único fornecedor para a reposição de peças. É possível aumentar a capacidade de um cluster com a adição de novas máquinas ou remoção das defeituosas para conserto, sem parar o funcionamento do mesmo. Há opções de software livre para sua implementação e customização. Entretanto, sua configuração não é trivial e requer conhecimento especializado de computação. Sua contínua expansão pode gerar complexidade e problemas com espaço físico e refrigeração. Além disso, as máquinas devem estar numa rede local, impedindo que se coloque nós geograficamente muito afastados.

O importante é fazer-se uma análise criteriosa, pesando-se os prós e contras para se descobrir se o cluster seria a solução para um problema específico.
Compartilhe »

Gostou? Comente!


Participe da nossa comunidade de discussões!
Deixe-nos um comentário!

    DISQUS
    Comentários Facebook


0 comentários:


Postar um comentário