Aula 5 – Clusters O que são clusters? Cluster pode ser definido como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado Os computadores dividem as tarefas de processamento e trabalham como se fossem um único computador Histórico A idéia inicial que conduz ao cluster foi desenvolvida na década de 1960 pela IBM como uma forma de interligar grandes mainframes Entretanto, o cluster ganhou força até que três tendências convergiram nos anos 80: microprocessadores de alto desempenho, redes de alta velocidade, e ferramentas padronizadas para computação distribuída de alto desempenho Uma quarta tendência possível é a crescente necessidade de poder de processamento para aplicações científicas e comerciais unida ao alto custo e a baixa acessibilidade dos tradicionais dos supercomputadores No final de 1993, Donald Becker e Thomas Sterling iniciaram um esboço de um sistema de processamento distribuído construído a partir de hardware convencional como uma medida de combate aos custos dos supercomputadores No início de 1994, trabalhando no CESDIS, com o patrocínio do projeto HTPCC/ESS, criaram o primeiro cluster desse tipo, o projeto Beowulf Cluster de 16 processadores DX4 interligados Tipos de Cluster Alta Disponibilidade (High Availability (HA) and Failover) Estes modelos de clusters são construídos para prover uma disponibilidade de serviços e recursos de forma ininterruptas através do uso da redundância implícitas ao sistema A idéia geral é que se um nó do cluster vier a falhar (failover), aplicações ou serviços possam estar disponíveis em outro nó Utilizados para base de dados de missões críticas, correio, servidores de arquivos e aplicações Balanceamento de carga (Load Balancing) Este modelo distribui o tráfego entrante ou requisições de recursos provenientes dos nodos que executam os mesmos programas entre as máquinas que compõem o cluster Todos os nodos estão responsáveis em controlar os pedidos. Se um nó falhar, as requisições são redistribuídas entre os nós disponíveis no momento. Este tipo de solução é normalmente utilizado em fazendas de servidores de web (web farms) Exemplo: MOSIX (Multicomputer Operating System for UnIX) Combinação HA & Load Balancing Combina as características dos dois tipos de cluster, aumentando assim a disponibilidade e escalabilidade de serviços e recursos Este tipo de configuração de cluster é bastante utilizado em servidores de web, mail, news ou ftp
Alto Desempenho e Aplicações Este modelo de cluster aumenta a disponibilidade e performance para as aplicações, particularmente as grandes tarefas computacionais Uma grande tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas ao redor das estações (nodos), como se fosse um supercomputador massivamente paralelo Estes clusters são usados para computação cientifica ou análises financeiras, tarefas típicas para exigência de alto poder de processamento
Por que utilizar cluster? Quanto mais computadores na rede mais rápido fica sua estrutura Maior agilidade no processamento Componentes de fácil disponibilidade Fácil manutenção - A manutenção geralmente fica por conta do grupo de usuários, que ganha com experiência e economia de recursos Independência de fornecedores de hardware Custos muito baixos Se um computador do sistema parar não precisa esperar seu conserto para recomeçar seu trabalho Disponibilidade de sistema operacional e ferramentas de apoio gratuitas Uma configuração inicial pode ser facilmente atualizada, sem desperdício do investimento
Cluster OpenMosix openMosix é uma extensão do kernel do Linux, utilizado para a criação de sistemas simples que utilizam clusters Faz com que um cluster de computadores se comporte como um grande e único supercomputador através da utilização de Migração Preemptiva de Processos e Balanceamento Dinâmico de Carga A implementação da Migração Preemptiva de Processos é capaz de migrar qualquer processo do usuário, em qualquer instante e para qualquer nó disponível de maneira transparente Desta forma, se um nó com vários processos (a utilizar um destes dois recursos concorrentemente) detecta que outro nó tem disponibilidade superior, ie., tem menos carga de processador/RAM, então o OpenMosix encarrega-se de transladar/migrar um desses processos para esse nó Vantagens: Escalabilidade: completamente transparente, basta lançar um novo nó na rede sem software ou requisitos adicionais, e será automaticamente adaptado pelo cluster como nó Adaptatividade: a arquitetura de cada nó é completamente indiferente, desde que a versão do OpenMosix seja igual entre nós Não necessita recompilação das aplicações: qualquer aplicação poderá beneficiar deste sistema sem alterações ao código Problemas: Algumas aplicações não podem ser migradas Limitações relacionadas a hardware local Cluster Beowulf Software para gerenciamento (escalonamento, status) Ferramentas para comunicação (PVM, MPI)
Conclusão
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 ou a hospedagem de um site, 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 cluster, mas sem interferir no funcionamento de outras aplicações que estejam relacionadas Empresas especializadas, centros de pesquisas e universidades costumam estudar este assunto a fundo. Como conseqüência, existem clusters com até milhares de nós Alguns benefícios do Clustering: Processamento eficiente, custo baixo, ampla gama de aplicações...e muito ainda a pesquisar