O que é um cluster?



O que é um cluster?

Segundo N. Sadashiv e S.M. Kumar um cluster pode ser definido como sendo: "uma coleção de computadores paralelos ou distribuídos os quais estão interconectados através de redes de comunicação de alta velocidade".

Basicamente, os cluster foram desenvolvidos com o intuito de fornecer uma plataforma computacional robusta, porém, mais econômica se comparada com as plataformas que consistem de MPPs (Massively Parallel Processors Processadores Maciçamente Paralelos). Graças a evolução nos equipamentos de redes, o interesse nos clusters vem aumentando.

Os clusters implementam conceitos de computação paralela, podendo ser utilizados para diversas soluções, dependendo do seu arranjo físico e lógico. O capitulo "Arquitetura de computadores paralelos", da 5ª edição do livro "Arquitetura de Computadores" do professor Tanenbaum detalha características do paralelismo em diversos níveis, desde o paralelismo lógico implementado no nível do chip, até os sistemas fracamente acoplados, como os clusters e as grades computacionais. Uma segunda opção para o estudo dos clusters é o Redbook da IBM disponível para download abaixo:

http://www.4shared.com/office/TLwXa9FA/10_-_Clustering_Concepts_and_G.html?

Os clusters podem ser divididos em quatro tipos principais:

- Cluster de alto desempenho: esse modelo tem o intuito de unir o poder computacional dos diversos nós do cluster, para isso, é necessário que a aplicação tenha sido implementada utilizando conceitos de programação paralela, e graças a isso, possa ser dividida entre os nós do cluster, e, após o processamento, seja novamente reunida.






- Cluster de Alta disponibilidade: o cluster de alta disponibilidade tem como intuito oferecer seus recursos de forma continua, ou seja, sempre que os recursos forem requisitados, essa plataforma terá condições de responder as solicitações. Para isso, ela se utiliza de diversos nós que oferecem o mesmo serviço, de forma que, se um deles vier a falhar, outro possa responder a solicitação. Esse arranjo é muito utilizado em banco de dados cliente/servidor.




- Cluster de alta confiabilidade: nesse modelo, todos os nós oferecem o mesmo serviço, de forma que quando uma solicitação for enviada, todos os nós a processarão e devolverão a resposta, se uma resposta vier a diferir das outras, está é tida como falsa, assumindo a resposta da maioria como verdadeira, o que da uma alta confiabilidade para os dados gerados.





- Cluster de balanceamento de carga: esse modelo têm sua configuração ajustada para que o nó principal (nó balanceador) selecione uma das máquinas do cluster e envie a solicitação do usuário, para isso, ele se utiliza de alguma política de escalonamento. Um exemplo de algoritmo de escolanamento que pode ser utilizado é o roundrobin, nele, os nós são selecionados de maneira simples, um de cada vez, ciclicamente, de forma que todos recebam uma solicitação por ciclo. Esse modelo implementa conceitos de alto desempenho, graças a poder comportar um número elevado de solicitações, e de alta disponibilidade, graças ao fato de que, se algum nó vier a apresentar problemas e outros nós do cluster oferecerem os serviços que esse oferecia, os serviços podem ser encaminhados para os outros nós. Um exemplo de cluster balanceador de carga é o Google, que coleta a solicitação do usuário e seleciona um nó entre seus milhões para processá-la.







Por fim, uma característica importante dos clusters é a Single System Image (imagem singular do sistema), ou seja, os recursos são acessados da mesma forma que seriam acessados recursos locais, o usuário desconhece a multiplicidade de máquinas.


Um comentário:

  1. Ótimo texto, parabéns Augusto Martins por compartilhar o conhecimento adquirido! Aguardo ansioso a novos posts futuros.
    Alex Santos

    ResponderExcluir