Mosix - Instalação e configuração de um cluster de balanceamento de carga

Artigo que demonstra alguns conceitos sobre clusters, os procedimentos e resultados obtidos na instalação, configuração e testes de um cluster do tipo balanceamento de carga utilizando o Mosix. Também relaciona com este cluster os conceitos de sistemas distribuídos (feito para meu TCC em 2008).

[ Hits: 85.752 ]

Por: Rodrigo Mendes Pasini em 30/07/2009


Introdução



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:
Linux: Instalação e configuração de um Cluster de Balanceamento de Carga utilizando Mosix
    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação do Mosix
   3. Configuração do Mosix
   4. Conteúdo dos principais arquivos de configuração do Mosix
   5. Testes computacionais
   6. Conclusão
Outros artigos deste autor

Virtualização - Montando uma rede virtual para testes e estudos de serviços e servidores

Como ver as informações de rede no Linux

Ovos de Páscoa no GNU/Linux

Virtualização - VirtualBox em modo texto e acesso remoto

Convertendo sistemas físicos em máquinas virtuais

Leitura recomendada

AIXGL + Beryl no Kubuntu 6.10 com uma Intel i810

Load balance e alta disponibilidade com Bonding

Modificando o TimeZone: 2 métodos

Ambiente de desenvolvimento Java com Ubuntu 7.10 e Net Beans 6

Instalação do Asterisk - Distribuição Trixbox

  
Comentários
[1] Comentário enviado por Andre_A_Ferreira em 31/07/2009 - 10:18h

Sr. Rodrigo!

Que dizer do seu artigo?
Expetacular é a definição mais próxima.

Grande abraço!

André A. Ferreira

[2] Comentário enviado por cesarmoura em 31/07/2009 - 13:07h

Amigo, excelente o seu artigo.
Parabéns!

[3] Comentário enviado por manoserpa em 31/07/2009 - 16:42h

Muito bom artigo.

Parabéns!

[4] Comentário enviado por ranzes em 31/07/2009 - 19:54h

Muito Bom.

Pena que o projeto foi extinto.


Att,


Ranzes Tamar

[5] Comentário enviado por rodrigo8819 em 01/08/2009 - 12:32h

Não, esse projeto não foi extinto. O projeto que foi extinto é o open Mosix, esse ainda está em desenvolvimento. acesse www.mosix.org e veja :D

E muito Obrigado pelos elogios!

[6] Comentário enviado por sermart em 02/08/2009 - 09:57h

Já experimentei no fedora e funcionou de primeira muito bom.

[7] Comentário enviado por marcioyshimoda em 05/08/2009 - 09:20h

Ah sim, o openMosix foi o projeto da qual estive estudando há um tempo atrás.
Para fins de comparação quanto ao tempo de compilação do kernel, qual foi a configuração do cluster citado no artigo?

De resto o artigo está de parabéns!

[8] Comentário enviado por rodrigo8819 em 05/08/2009 - 10:40h

Você acha essas informações no artigo na parte Nodos e Rede

Mas vai ai!

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.

Obrigado e Abraço!

[9] Comentário enviado por thiago_dias em 18/08/2009 - 14:43h

Existe algum nodo central onde só ele migra os processos ou todos os nodos da rede podem migrar? pois no meu teste a maquina 1 migra para a 2 , mais a 2 não migra pra 1. é normal isso? tem como eu definir para a maquina 2 migrar para a 1 também?

Abraços

[10] Comentário enviado por rodrigo8819 em 20/08/2009 - 18:56h

Todos os nodos são iguais, qualquer um migra pra qualquer um. Deve ter algum erro na conf da máquina 2. Neste tipo de cluster não existe nodo controlador, o gerenciamento não é centralizado.

[11] Comentário enviado por magnolinux em 18/09/2009 - 08:15h

meus parabens...

muito bom o artigo!

[12] Comentário enviado por cmagnum em 01/10/2009 - 13:21h

muito bom seu comentario!!!!

o que eu acho ruim no mosix é que está desatualizado .

[13] Comentário enviado por thiago_dias em 01/10/2009 - 14:18h

cmagnum, o mosix não está desatualizado.
o projeto que esta desatualizado, pois foi descontinuado é o openmosix.
o mosix tem patch para as versões mais recentes do kernel.
dê uma conferida no site do projeto:
www.mosix.com

[14] Comentário enviado por removido em 17/10/2009 - 22:41h

Fiquei Conhecendo Agora o Misix.

[15] Comentário enviado por reinaldoef em 23/01/2010 - 02:40h

Rodrigo, gostaria de saber como fica o processamento de uma renderização do Blender com este cluster, pois preciso montar um cluster para renderizar animações em blender.

[16] Comentário enviado por baranzelli em 24/03/2010 - 08:27h

Valeu mesmo...
Muito bom o artigo...

[17] Comentário enviado por hudyfx em 17/06/2010 - 22:00h

opress, nota 10 no artigo parabéms

[18] Comentário enviado por rodrigocontrib em 27/06/2010 - 19:08h

Quanto da um Cluster de 100 K-62 500 500Mhz
50Ghz -> Isso é processamento a dar com pau...
Acredito que o unico problema de usar tal tecnologia é a quantidade de energia,espaço e mão de obra gasta...mas devemos pensar nisso como uma alternativa de reciclagem.

Cluster para o Google de Pcs reciclaveis, tem que ter muito alcool isopropilico.

[19] Comentário enviado por joelpolese em 05/07/2010 - 14:38h

OOpa!!

sou iniciante em Linux e meu TC vai ser em cima do gerenciamento e monitoramento de cluster linux Debian...

Não encontrei algum "tutorialzinho" sobre implementação de cluster de alto desempenho (vou rodar uma aplicação paralela e testar)
Se alguem puder ajudar, agradeço!

Obrigado

Abraço!!

[20] Comentário enviado por vinicius.almeida em 31/08/2010 - 20:05h

Interessante.. gostei.

:)

[21] Comentário enviado por hvazsampaio em 08/09/2010 - 12:14h

No comando seguinte deu erro, alguem sabe o porque?

# fakeroot make-kpkg --initrd --append-to-version=-MOSIX kernel_image kernel_headers

Error: The extended version may only contain
lowercase alphanumerics and the characters - + .
The current value is: -MOSIX
Aborting.

[22] Comentário enviado por renato_pacheco em 05/01/2011 - 13:27h

Rodrigo, eu não entendi: o mosix deve ser instalado em todas as 3 máquinas com a msm versão do Debian Etch (q foi usado no seu TCC)? Todos ficam com o msm IP? Esse assunto é muito novo pra mim...

[23] Comentário enviado por rodrigo8819 em 05/01/2011 - 13:39h

Você não precisa ficar preso a versão do linux nem a distros, basta fazer os passos de acordo com cada distro que for utilizar. Para isso terá de ver os métodos disponíveis para a distro que escolher, por exemplo a criação do pacote .deb do kernel compilado com o mosix não se aplica a derivados de red hat que utilizarão pacotes rpm.
Quando a rede, os nodos do cluster utilizarão a mesma rede (ou classe de IP) mas não o mesmo IP.

Aconselho que utilize versões parecidas do artigo, levando em conta que você relatou que é novo no assunto, assim quando já estiver mais familiarizado com o assunto faça em alguma outra distro de sua preferência.

[24] Comentário enviado por andregyn em 02/07/2012 - 17:06h

Otimp artigo, vou testar em casa, tenho um dualcore parado, vou reutiliza-lo. Valeu


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts