Um
cluster é um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado. Em outras palavras, os computadores dividem as tarefas de processamento e trabalham como se fossem um único grande computador.
Existem vários tipos de clusters, onde podemos citar alguns mais conhecidos:
- Cluster de alto desempenho: seu funcionamento permite que ocorra uma grande carga de processamento com um volume alto de gigaflops em computadores comuns;
- Cluster de alta disponibilidade: seus sistemas conseguem permanecer disponíveis por um longo período de tempo e em plena condição de uso, conseguem detectar erros se protegendo de possíveis falhas;
- Cluster para balanceamento de carga: controla a distribuição equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus mecanismos de redundância, caso ocorra alguma falha haverá uma interrupção no seu funcionamento.
Este artigo trata sobre a instalação e configuração do
Mosix (Multicomputer Operating System for Unix), que é um cluster de balanceamento de carga com finalidade de testes de funcionamento de um cluster deste tipo.
Um pouco sobre Mosix
Mosix é uma extensão para os sistemas operacionais baseados em Unix para implementação de um cluster de computadores, que faz balanceamento de carga através da utilização de Migração Preemptiva de Processos e Balanceamento dinâmico de carga.
A migração Preemptiva de processos consiste em transportar um processo de um nodo escasso de recursos para um que tenha maior disponibilidade.
A migração de processos, que o MOSIX suporta para balançar carga, cria novas potencialidades de escalabilidade de processos paralelos de I/O (entrada e saída) que sejam apropriadas para as aplicações que necessitam processar grandes volumes de dados. O processamento paralelo de MOSIX utiliza biblioteca de I/O "MOPI", que fornece meios para dividir os processos (transparentemente) para diferentes nodos e permite acesso paralelo aos diferentes segmentos de um arquivo. (BARAK, 2002)
Quando um processo é iniciado, o Mosix escolhe qual o melhor nodo que poderá executá-lo, o envia para tal e monitora sua execução. Assim, o usuário não vê nada, o cluster faz tudo transparentemente.
O Mosix pode ser implementado em maquinas ao qual serão usadas em outras tarefas (desktops, por exemplo), pois ele é totalmente imperceptível ao usuário, e em redes heterogêneas, com todo tipo de computadores inclusive com os que possuem processadores de 64bits, ou mesmo os novos processadores multi-core (Vários núcleos de processamento).
Entre as características do Mosix destacam-se as principais:
- Usuários podem fazer login em qualquer nodo do cluster sem a necessidade de saberem da existência do Mosix;
- Não existe nodo controlador;
- Não é necessário modificar ou apontar os aplicativos a bibliotecas especiais;
- Pode-se incluir ou remover algum nodo a qualquer momento sem afetar o funcionamento do sistema;
- Não é necessário copiar arquivos para nodos remotos do cluster;
- Balanceamento de carga usando migração de processos;
- Migração de processos dos nodos escassos de recursos para os mais rápidos;
- Possui algoritmo de monitoramento que identificam, entre outras coisas, a velocidade de cada nó, a carga da CPU, e a memória livre disponível;
- Tem suporte para trabalhos em batch;
- Possui ferramentas de instalação e configuração automáticas.
Aplicações que se beneficiam do Mosix
- Processos CPU-bound: processos com longos tempos de execução e baixo volume de comunicação entre processos, ex: aplicações científicas, engenharia e outras aplicações que demandam alto desempenho de computação;
- Grandes compilações;
- Para processos que misturam longos e rápidos tempos de execução ou com moderadas quantias de comunicação interprocessos, somado ao uso das bibliotecas MPI/PVM;
- Processos I/O bound misturados com processos da CPU quando executados através do servidor de arquivos, usando o sistema de arquivos distribuídos;
- Banco de dados que não usem memória compartilhada;
- Processos que podem ser migrados manualmente.
Algumas desvantagens do Mosix
- Processos com baixa performance, quando aplicativos com alta comunicação interprocessos são executados;
- Aplicações dependentes do hardware que necessitam de acesso a um periférico de um nó em especial não podem ser distribuídas;
- Aplicações com muitas threads não ganham desempenho;
- Não se ganha desempenho quando se roda um único processo, tal como o browser.
Sistema Operacional
O sistema operacional usado foi o
GNU/Linux Debian Etch, onde ele foi instalado com todas as opções padrões do assistente de instalação em modo gráfico.
A escolha do uso desta distribuição foi por sua robustez e estabilidade, e também pela facilidade de trabalhar com pacotes pré-compilados nativos ".deb".
O Mosix pode ser usado em quase todos os sistemas operacionais baseados em UNIX, inclusive heterogeneamente com hardwares diferentes.
Obtendo o Mosix
O Mosix pode ser obtido no site oficial do desenvolvedor (
http://www.mosix.org), onde existe disponível uma versão para estudos com suporte para até seis nodos. Foi escolhida a versão MOSIX-2.24.2.3 para kernel 2.6.27, ao qual foi trabalhado.
Os nodos e rede (modelo de ensaio)
Para a montagem deste cluster foram utilizados três nodos, cada um com memória RAM de 512MB, Hard Disk de 80GB, processador Pentium IV de 3.40GHz e placa ethernet 10/100Mbps.
A rede entre os três nodos foi interligada através de cabeamento UTP (cabo de par trançado) a um 10/100 ethernet switch, da Hard Cam e o protocolo Ipv4 onde foi definida a rede 10.0.0.0/8 em seqüência partindo do primeiro endereço.
Toda a rede foi configurada através do script rc.local (/etc/rc.local - script que é executado em toda inicialização do sistema, muito utilizado para configurações e inicialização de serviços) conforme mostra a Figura 1, alterando apenas o endereço IP de cada nodo: