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?
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.
Ótimo texto, parabéns Augusto Martins por compartilhar o conhecimento adquirido! Aguardo ansioso a novos posts futuros.
ResponderExcluirAlex Santos