quinta-feira, janeiro 25, 2018

Funcionamento básico dos clusters

Para que um cluster seja constituído, é necessário fazer uso de alguns elementos básicos. O primeiro deles você já conhece: os equipamentos a serem utilizados como nós.

Para isso, pode-se usar máquinas construídas especificamente para funcionar como nós. Neste caso, os computadores teriam apenas dispositivos de hardware imprescindíveis ao cluster.

Cluster avançado construído com equipamentos específicos

Mas, também é possível utilizar computadores "convencionais", como desktops para fins domésticos ou para uso em escritório. Assim, uma universidade ou uma empresa, por exemplo, pode utilizar máquinas que foram substituídas por modelos mais recentes para criar um cluster e, eventualmente, economizar com a aquisição de servidores.

Os nós podem ainda ser não dedicados ou dedicados. No primeiro caso, cada computador que faz parte do cluster não trabalha exclusivamente nele. No segundo, o nó é utilizado somente para este fim, fazendo com que dispositivos como teclados e monitores sejam dispensáveis - se, por algum motivo, for necessário acessar uma máquina em particular, pode-se fazê-lo via terminal, a partir do nó principal, por exemplo.

Outro elemento importante é o sistema operacional. Como já informado, os nós não precisam ser exatamente iguais no que diz respeito ao hardware, mas é essencial que todas os computadores utilizem o mesmo sistema operacional.

Esta homogeneidade é importante para diminuir a complexidade de configuração e manutenção do sistema, e garantir que os procedimentos rotineiros ao cluster, como monitorização, distribuição de tarefas e controle de recursos sejam executados de maneira uniforme. Para reforçar estes aspectos, pode-se até mesmo adotar sistemas operacionais preparados especialmente para clustering.

Do ponto de vista do software, o cluster conta ainda com o elemento que faz o papel de middleware: trata-se de um sistema que permite o controle do cluster em si e, portanto, está intimamente ligado ao sistema operacional. É o middleware que lida, por exemplo, com as bibliotecas que fazem toda a comunicação do cluster - uma delas é o padrão MPI (Message Passing Interface).

Além de trabalhar com o gerenciamento do cluster, o middleware oferece uma interface para que um administrador possa configurar o cluster, ferramentas para manutenção e otimização, recursos de monitoramento e assim por diante.

Por padrão, o middleware é instalado em uma máquina chamada de nó controlador (ou nó mestre). O nome deixa claro: trata-se do já mencionado nó principal, que efetivamente controla o cluster a partir da distribuição de tarefas, do monitoramento e de procedimentos relacionados.

A comunicação entre os nós - que é onde está a delimitação do que constitui o cluster em si - é feita a partir de uma tecnologia de rede local. Os padrões Ethernet (Gigabit Ethernet, Fast Ethernet, etc) são bastante utilizados justamente por serem mais comuns e, portanto, melhor suportados e menos custosos. Mas há outras opções viáveis, entre elas, o Myrinet e o InfiniBand, ambos com características bastante apropriadas para clustering.



Cluster Beowulf

O Beowulf não é, necessariamente, um middleware, como muitas pensam. Na verdade, este nome faz referência a um padrão de clustering disponibilizado pela NASA (National Aeronautics and Space ) em 1994 e amplamente adotado desde então.

Originalmente, Beowulf é o nome de um poema extenso e bastante antigo, cujo manuscrito foi encontrado no século XI. A obra descreve os atos de um herói de mesmo nome que se destaca por sua força descomunal e que, portanto, enfrenta um perigoso monstro para salvar um reino. 

A história serviu de inspiração para que os pesquisadores Thomas Sterling e Donald Becker, da NASA, batizassem o projeto de cluster no qual trabalhavam de Beowulf.

Um cluster Beowulf se define, basicamente, pela ênfase nas seguintes características:

- entre os nós, deve haver pelo menos um que atue como mestre para exercer o controle dos demais. As máquinas mestres são chamadas de front-end; as demais, de back-end. Há a possibilidade de existir mais de um nó no front-end para que cada um realize tarefas específicas, como monitoramento, por exemplo;

Esquema básico de um cluster Beowulf

- a comunicação entre os nós pode ser feita por redes do tipo Ethernet, mais comuns e mais baratas, como você já sabe;

- não é necessário o uso de hardware exigente, nem específico. A ideia é a de se aproveitar componentes que possam ser encontrados facilmente. Até mesmo PCs considerados obsoletos podem ser utilizá-los;

- o sistema operacional deve ser de código aberto, razão pela qual o Linux e outras variações do Unix são bastante utilizados em cluster Beowulf. O MOSIX, a ser abordado no próximo tópico, é uma opção bastante usada para este fim;

- os nós devem se dedicar exclusivamente ao cluster;

- deve-se fazer uso de uma biblioteca de comunicação apropriada, como a PVM(Parallel Virtual Machine) ou a MPI (Message Passing Interface). Ambas são direcionadas à troca de mensagens entre os nós, mas o MPI pode ser considerado mais avançado que o PVM, uma vez que consegue trabalhar com comunicação para todos os computadores ou para apenas um determinado grupo.

Perceba que, com estas características, pode-se construir um cluster "poderoso" e, ao mesmo tempo, poupar gastos com equipamentos, licenças de software e manutenção. O cluster montado por Thomas Sterling e Donald Becker para a NASA, por exemplo, era composto por 16 PCs com processador Intel 486 DX4 e sistema operacional Linux conectados por uma rede Ethernet de 10 Mb/s. Como se vê, esta foi uma solução consideravelmente mais barata e, possivelmente, menos complexa que um supercomputador.

É possível saber mais sobre o Beowulf em www.beowulf.org.



Algumas soluções de clusters

Há uma quantidade razoável de soluções para clusters, mas algumas se sobressaem, especialmente aquelas que se relacionam com Linux e outros sistemas baseados em Unix. Vejamos rapidamente opções do tipo que se destacam bastante.


MOSIX

O MOSIX (Multicomputer Operating System for Unix) é uma das opções mais tradicionais quando o assunto é clustering. Trata-se, resumidamente, de um conjunto de softwares que permite a implementação de clusters em sistemas baseados no Unix, tendo forte ênfase em balanceamento de carga e alto desempenho.

Entre as suas principais características estão: possibilidade de trabalhar com nós dedicados e não dedicados; suporte não apenas a CPUs, mas também a GPUs (a partir da versão 2); migração dinâmica de processos (um nó mais potente pode assumir determinada tarefa para evitar sobrecarga em outro); e possibilidade de remoção e inclusão de nós sem interromper o cluster.

Como o MOSIX também trabalha com nós não dedicados, é possível inclusive fazer com que as máquinas de um escritório passem a trabalhar no cluster após o horário do expediente, por exemplo. Mas, mesmo se houver usuários utilizando os nós, é possível manter o cluster em funcionamento, já que as atividades do MOSIX são totalmente "transparentes", ou seja, seu trabalho no computador não é perceptível.

O MOSIX não é uma solução gratuita. Houve uma versão sua de código abertochamada OpenMosix que, infelizmente, foi descontinuada em março de 2008.


OpenSSI

O OpenSSI é uma solução aberta para clusters focada em ambientes Linux. O nome tem como base o conceito de SSI (Single System Image), ou seja, um sistema que considera vários nós, mas se parece, no ponto de vista do usuário, apenas como um único computador.

A "visão" de apenas uma única máquina também é válida para os softwares: este não precisam ser alterados para "enxergar" cada nó e assim rodar no cluster, facilitando a implementação da solução.

O OpenSSI pode lidar tanto com alto desempenho quanto com alta disponibilidade, além de possuir recursos para balanceamento de carga.

Kerrighed

O Kerrighed é outra opção SSI aberta para clusters que tem como base o Linux. Esta solução se destaca principalmente por fazer uso do conceito de Distributed Shared Memory (DSM) - algo como "Memória Compartilhada Distribuída" -, onde a memória de cada nó se "soma" a dos demais, como se formassem um volume único à disposição de todo o cluster.

Esta abordagem oferece vários benefícios: parte da memória pode ser disponibilizada para todos os clientes da aplicação; sistemas desenvolvidos para rodar de maneira centralizada podem ser executados de maneira distribuída dentro da solução; o cluster pode se comportar como se fosse uma máquina com múltiplos processadores; entre outros.



Vantagens e desvantagens dos clusters

Neste ponto do texto, você certamente já compreendeu as vantagens de um cluster. Eis as principais:

- pode-se obter resultados tão bons quanto ou até superiores que um servidor sofisticado a partir de máquinas mais simples e mais baratas (ótima relação custo-benefício);

- não é necessário depender de um único fornecedor ou prestador de serviço para reposição de componentes;

Switch Ethernet: tecnologias amplamente disponíveis é comum em clusters

- a configuração de um cluster não costuma ser trivial, mas fazer um supercomputador funcionar poder ser muito mais trabalhoso e exigir pessoal especializado;

- é possível aumentar a capacidade de um cluster com a adição de nós ou remover máquinas para reparos sem interromper a aplicação;

- há opções de softwares para cluster disponíveis livremente, o que facilita o uso de uma solução do tipo em universidades, por exemplo;

- relativa facilidade de customização para o perfeito atendimento da aplicação;

- um cluster pode ser implementado tanto para uma aplicação sofisticada quanto para um sistema doméstico criado para fins de estudos, por exemplo.

Mas, apesar destes benefícios, os clusters não são a solução perfeita para todo e qualquer problema computacional. Há aplicações onde o uso de outra tecnologia se mostra mais adequado. Entre as razões para isso estão:



- a facilidade de expansão do cluster pode ser uma "faca de dois gumes": a quantidade de máquinas pode aumentar tanto que a manutenção se torna mais trabalhosa, o espaço físico pode ficar impróprio, etc;


- a tecnologia de comunicação utilizada pode não oferecer a velocidade de transferência de dados ou o tempo de resposta necessário, dependendo da aplicação;

- um cluster tem como base uma rede local, logo, não se pode acrescentar máquinas que estejam muito distantes geograficamente.


Por estes aspectos, fica evidente que as necessidades e os requisitos de uma aplicação devem ser bem avaliados para que se possa decidir entre a implementação de um cluster ou outra tecnologia. Se o clustering for a opção escolhida, deve-se seguir com a avaliação, desta vez para se decidir sobre as soluções e recursos disponíveis.



Finalizando

A origem da denominação "cluster" não é clara, mas sabe-se que as primeiras soluções de processamento paralelo remontam à década de 1960, havendo, a partir daí, alguns princípios que hoje formam a base da ideia de clustering.

O fato é que o passar do tempo não torna o conceito ultrapassado. Há um motivo especial para isso: os clusters se relacionam intimamente à otimização de recursos, uma necessidade constante em praticamente qualquer cenário computacional. E este aspecto pode se tornar ainda mais atraente quando a ideia de cluster é associada a conceitos mais recentes, como cloud computing e virtualização.

Nenhum comentário:

Postagem em destaque

O que faz um Analista de Sistemas?

  Os analistas de sistemas fazem análise de requisitos de software, hardware para especificar um novo sistema ou como um sistema atual pode ...