Montando um Cluster utilizando OpenMosix + Slackware

Neste tutorial demonstrarei como aplicar um cluster linux utilizando o OpenMosix e o amado Slackware !!! =)

Farei um breve resumo de cluster antes de começarmos:

Cluster ou computação distribuída, é a utilização de recursos de processamento, memória e armazenamento de computadores distintos aplicados na execução de um objetivo.

Os cluster são utilizados em implementações críticas, por exemplo: renderização de animações 3D complexas, sistemas de modelagem e simulação em aplicações científicas. Nesses casos que requerem uma quantidade de processamento de memória bem altos.

Bom, existem basicamente três tipos de cluster: os de alta disponibilidade, os de balanceamento de carga e os voltados para computação de alto desempenho.

Clusters de alta disponibilidade: Consistem de um conjunto de duas ou mais máquinas com serviços “redundantes” e interligadas entre si.

Esse tipo de cluster funciona com a frequente monitoração dos serviços fornecidos pela máquina mestre, se uma das máquinas escravas detectar que o serviço executado pela máquina mestre está parado ou inoperante por algum motivo, imediatamente as máquina escravas assumem o controle do serviço no lugar da máquina mestre.

Clusters de balanceamento de carga: Esse tipo de cluster tem como finalidade distribuir requisições de serviços originadas de máquinas clientes entre um conjunto de servidores idênticos da melhor forma possível, por exemplo: a medida que a demanda de acesso ao serviço aumenta, basta ser adicionado novos nós ao cluster.

Clusters voltados para computação de alto desempenho: A finalidade desse tipo de cluster é distribuir processos entre as máquinas “nó”, nesse cluster máquinas ociosas que estejam executando processos considerados simples são candidatas a receberem processos remotos de outros nós do cluster.

O cluster que iremos implementar se encaixa nesse ultimo tipo, voltado para computação de alto desempenho

Agora chega de conversa e vamos ao que interessa! =)

..::Instalação::..

A implementação do nosso cluster é bem simples, iremos apenas aplicar um patch no kernel. Vamos iniciar os downloads dos arquivos necessários:

Bom nos nossos testes utilizamos o slackware 11 e precisamos resolver um problema de compatibilidade do gcc com o OpenMosix para isso baixamos o arquivo:

Após esse ultimo download , instale o gcc que baixamos:

# removepkg gcc-3.4.6-i486-1.tgz
# installpkg gcc-3.2.3-i486-2.tgz

Feito isso vamos prosseguir. Para que tudo funcione perfeitamente necessitamos do kernel correspondente à versão mais recente do OpenMosix depois iremos aplicaro patch sobre ele, nesse caso o kernel a ser utilizado é o 2.4.26, cujo o download ja foi feito. Mãos à obra:

# cd /usr/src
# cp /root/linux-2.4.26.tar.bz2
# tar -xvjf linux-2.4.26.tar.bz2
# cd linux-2.4.26
# cp /root/openMosix-2.4.26-1.bz2
# bunzip2 openMosix-2.4.26-1.bz2
# patch -Np1
# cp config .config
# make menuconfig
# make dep
# make bzImage
# make modules
# make modules_install

Isso vai demorar um pouco…!!! Depois de muito tempo vamos adicionar a referência ao kernel recém compilado ao lilo:

# cd arch/i386/boot
# cp bzImage /boot/vmlinuz-2.4.26
# vim /etc/lilo.conf

Vamos adicionar uma entrada no boot apontando para /boot/vmlinuz-2.4.26 conforme o exemplo abaixo:

#LILO configuration file
#generated by ‘liloconfig’
#Start LILO global section
boot = /dev/hda
prompt
timeout = 500
#VESA framebuffer console @ 1024x768x256
vga = 773
#Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
#Linux bootable partition config ends
#Entrada referente ao OpenMosix
image = /boot/vmlinuz-2.4.26
root = /dev/hda1
label = openmosix
read-only

Agora basta atualizar o lilo:

# lilo

Se tudo ocorreu bem você vai ver algo do tipo:

Added Linux *
Added openmosix

Agora iremos instalar algumas ferramentas para o gerenciamento do cluster. Inicialmente criaremos um link simbólico para o processo de compilação das ferramentas do nosso cluster:

# ln -s /usr/src/linux-2.4.26 /usr/src/linux-openmosix

Vamos prosseguir instalando as ferramentas:

# cd /root
# tar -xvzf openmosix-tools-0.3.6-2.tar.gz
# cd openmosix-tools-0.3.6-2.tar.gz
# ./configure
# make && checkinstall
# installpkg openmosix-tools-0.3.6-2-i386-1.tgz

Vamos agora editar alguns arquivos ajustando a configuração necessária para o funcionamento do cluster:

# vim /etc/openmosix.map

Adicione o seguinte conteudo no final do arquivo:

1 192.168.20.3 1
2 192.168.20.4 1
3 192.168.20.5 1

Com isso estamos especificando os nós do cluster onde o lado esquerdo indica o numero do nó, no centro especifica o ip e no final indica quantos nós serão considerados a partir do ip especificado.
O ultimo passo agora é adicionar a instrução responsável pela inicialização do nó do cluster em um script executado após o boot:

#vim /etc/rc.d/rc.local
#Starting openMosix node /usr/local/sbin/setpe -w -f /etc/openmosix.map

Agora que compilamos e instalamos tudo, podemos ter o nosso gcc de volta, vamos remover o que instalamos anteriormente e instalar o “original”:

# removepkg gcc-3.2.3-i486-2.tgz
# installpkg gcc-3.4.6-i486-1.tgz

Por fim, reiniciamos a máquina e damos o boot com o kernel do OpenMosix!!!

..::Adicionando nós ao cluster::..

Esta operação é bem simples, basta repetir os procedimentos anteriores em cada um dos nós e manter o arquivo /etc/openmosix.map com o mesmo conteudo dos outros nós. No nosso caso o cluster é formado de três nós que recebem os ips 192.168.20.3, 192.168.20.4 e 192.168.20.5.

..::Testando o cluster::..

Iremos agora testar o potencial do nosso cluster, executando um pequeno script que é sugerido na documentação do OpenMosix que pode ser baixado no link abaixo:

script_cluster.sh

Dê permissão de execução no arquivo gerado:

# chmod +x script_cluster.sh

Abra um segundo terminal e execute o comando:

# msmon

O msmon é um monitor gráfico que mostra a carga de processamento de cada nó que faz parte do cluster. Vamos agora executar o script que fizemos, execute-o algumas vezes consecutivas com o comando:

# ./script_cluster.sh &

Verifique no msmon que cada um dos nós do cluster recebe uma carga de processamento, isso indica que o cluster está funcionando corretamente.

Palavras finais

Teste o seu cluster, execute o mesmo script em uma máquina isolada para ver o tempo que ela leva para executar o script e compare com o tempo que o cluster gasta. Com isso podemos ver a potencialidade do cluster, ele pode ser aplicado em inumeras soluções!!! =)
Os nós que utilizei nos testes foram:
Notebook Compaq nx9005

Athlon xp 2400 2 Ghz,
512 de Ram,
hd de 80 GB

PC Intel Celeron 2.4 Ghz,
256 de Ram,
hd de 80 GB

PC AMD 750 Mhz,
512 de Ram,
hd de 40 GB

Com essas máquinas simples o cluster funcionou perfeitamente diminuindo o tempo de processamento em alguns aplicativos que testei como emulação de jogos, abertura de programas pesados como a IDE Eclipse para java e outros mais.
Tive um ganho notavel em tempo de execução desses aplicativos.

Vale a pena testar o funcionamento de um cluster e aplicalo em algumas soluções que requerem níveis altos de processamento. Espero que tenham gostado, até a próxima!!!

Referêcias:

Slackuser: Clayton Eduardo dos Santos
http://openmosix.sourceforge.net/
http://openmosix.sourceforge.net/development.html

6 Responses to “Montando um Cluster utilizando OpenMosix + Slackware”


  1. Gravatar Icon 1 marcio araujo jul 16th, 2007 at 12:04 pm

    Parabéns pelo artigo. Sou novo em linux. Estou pesquisando as distribuições linux. Estou começando a gostar do slackware.

  2. Gravatar Icon 2 Derushi ago 29th, 2007 at 11:52 am

    Mario vou presisar de uma ajuda de vc para montar um cluster

  3. Gravatar Icon 3 Clayton Eduardo dos Santos ago 30th, 2007 at 9:52 am

    Acredito que citar a fonte do artigo original no qual o seu foi “baseado” é mais interessante do que citar o meu nome. Segue o link:

    http://www.slackwarezine.com.br/download/slackzine16.pdf

    Atenciosamente,

    Clayton Eduardo dos Santos

  4. Gravatar Icon 4 Evaldo Meca set 18th, 2007 at 1:21 pm

    Muito bom o tutorial…
    Tenho uma dúvida…
    Sou universitário na área de Ciências da Computação, e estou na eminência de entregar um trabalho prático – Cluster, porém tenho que desenvolver No DEBIAN.4…
    Será que este tutorial funciona no Debian também?
    Se a resposta for não, será que você poderá me dar algumas dicas….

    Abraços…
    Meca…

  5. Gravatar Icon 5 js sobrinho jan 23rd, 2008 at 2:41 am

    kara, muito bom.
    Com isso posso implementar usando o vmplayer ja que nao tenho o hardware ? ;)
    Para ter um server leve e seguro o q vc recomendaria? o mesmo vale para os slacks nas maquinas virtuais.
    to com um celeron 2.6 e 1 gb.
    abs

  6. Gravatar Icon 6 neybsi abr 3rd, 2008 at 5:55 pm

    O Artigo realmente é muito bom, to tentando implementa-lo como parte do meu trabalho de conclusao de curso, porem essa versao do gcc3.2.3 esta conrropida. Alguem saberia me dizer outro mirro que eu possa baixar essa mesma versao?


GUS-BR on G+

Categorias


google

couk