O documento descreve os passos para configurar um cluster Beowulf utilizando o sistema operacional Slackware, incluindo a configuração do nó mestre e dos nós escravos, instalação e configuração do LAM-MPI para permitir a computação paralela entre os nós.
1. 1 Cluster Beowulf
Implementação e Configuração no Slackware
O potencial de expandir a força de processamento computacional utilizando
computadores pessoais “comuns” ligados através de software e hardware
ligando-os em paralelo, é uma ótima alternativa aos famosos supercomputadores.
Vendo todo este potência a NASA decidiu implementar tal tecnologia para
resolver suas aplicações de missão crítica. Surgia então o projeto de Clusters
Beowulf, idealizado desta forma, com a finalidade de suprir a crescente e elevada
capacidade de processamento em diversas áreas científicas com o objetivo de
construir sistemas computacionais poderosos e economicamente viáveis.
O projeto Beowulf da NASA na verdade não desenvolveu um software
denominado Beowulf, o qual o usuário possa instalar tal programa e todos os PC's
irão trabalhar de forma paralela. Mas, sim eles proporão entre outros uma
filosofia, que consiste de:
Uso de Hardware comum, disponíveis no mercado;
Processamento dedicado (todo o hardware deve ser utilizado apenas para o
cluster)
Rede de interconexão privada e dedicada;
Nenhum componente feito sob encomenda;
Periféricos escaláveis;
Uso de softwares livres e código fonte aberto;
Uso de ferramentas de computação paralela livres
Retorno à comunidade do projeto e melhorias.
2. 2 Cluster Beowulf
Implementação e Configuração no Slackware
Então o cluster Beowulf não é um software que você baixa de Internet e
simplesmente instala, mas sim, um conjunto de softwares de rede (servidores),
serviços de rede e uma ferramenta para distribuição dos processos entre as
máquinas que compõem o cluster.
Então iremos configurar um cluster Beowulf utilizando Linux com a distribuição
Slackware. Na verdade está instalação irá provavelmente ser a mesma em todas
as outras distribuições (debian, ubuntu, gentoo,e etc), sendo diferente apenas
alguns passos de instalação de alguns serviços.
O Cluster será basicamente composto de uma máquina chamada de mestre
(responsável pelo gerenciamento e acesso ao cluster), e outras máquinas
chamadas de escravas sendo uma ou mais.
Escravo1 Escravo2 Escravo3 Escravo4
Mestre
Switch 100Mbs
3. 3 Cluster Beowulf
Implementação e Configuração no Slackware
A configuração do Cluster Beowulf consiste de básicamente dois passos sendo o
primeiro a configuração do nó meste e o segundo a configuração dos nós
escravos. Sendo necessário no primeiro passo:
1 - Habilitar os serviços rlogin, rexec e rsh. Tais serviços permitem que os
demais nós do cluster executem serviços no nó mestre e assim executem
programas/tarefas em paralelo.
2 - Configurar um serviço de nomes para facilitar a configuração do cluster,
identificando os nós do cluster por nomes e não por IP's, isto é recomendável já
que vários arquivos irão precisar conter os nós do cluster.
3 – Dar permissão de livre acesso aos nós que compõem o cluster. Acesso
baseado em confiança. Ou seja, os demais nós terão permissão de acessar o
servidor mestre sem o uso de senha.
4 – Adicionar um usuário chamado cluster (ou outro nome).
5 – Configurar o servidor NFS de forma que este compartilhe com permissões de
leitura e escrita o diretório pessoal do usuário cluster.
6 – Instalar e configurar o LAM-MPI para que este faça a troca de mensagens
entre os nós.
4. 4 Cluster Beowulf
Implementação e Configuração no Slackware
O segundo passo consiste na configuração dos nós escravos que compõem o
cluster. São eles:
1 - Habilitar os serviços rlogin, rexec e rsh. Tais serviços permitem que os
demais nós do cluster executem serviços no nó mestre e assim executem
programas/tarefas em paralelo.
2 - Configurar um serviço de nomes para facilitar a configuração do cluster,
identificando os nós do cluster por nomes e não por IP's, isto é recomendável já
que vários arquivos irão precisar conter os nós do cluster.
3 – Dar permissão de livre acesso aos nós que compõem o cluster. Acesso
baseado em confiança. Ou seja, os demais nós terão permissão de acessar o
servidor mestre sem o uso de senha.
4 – Adicionar um usuário chamado cluster (ou o nome de sua escolha), este
usuário deve estar presente em todos os nós que compõe o cluster.
5 – Configurar os nós escravos como cliente do servidor NFS do nó mestre, para
que estes compartilhem o diretório pessoal do nó mestre.
6 – Apenas instalar a biblioteca LAN-MPI.
5. 5 Cluster Beowulf
Implementação e Configuração no Slackware
Nesta configuração, iremos utilizar, uma rede classe A 10.0.0.0 e máscara
padrão. Sendo que o nó mestre terá o IP 10.0.0.1 e o seu nome na rede será
mestre. Já, os nós escravos terão o IP 10.0.1.X onde X é o número do nó
exemplo o primeiro nó escravo será o IP 10.0.1.1 com o nome na rede
escravo01, o segundo nó escravo é o 10.0.1.2 com o nome escravo02, assim
por diante.
Configuração do nó Mestre:
1 – Configuração dos serviços rlogin, rexec, rsh.
Tais serviços no Slackware estão associados por padrão ao super servidor inetd.
Sendo necessário para ativá-los apenas descomentar suas respectivas linhas no
arquivo /etc/inetd.conf.
vi /etc/inetd.conf
# Shell, login, exec and talk are BSD protocols
#
shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
# talk dgram udp wait root /usr/sbin/tcpd in.talkd
6. 6 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
Após, editar o arquivo inetd.conf basta apenas reiniciar o serviço para que a
nova configuração seja ativada. Isso é possível com o comando:
#/etc/rc.d/rc.inetd restart
O serviço de rlogind é utilizado para prover um terminal remoto via comando
rlogin. Muito parecido com o telnet.
Exemplo: #rlogin 10.0.0.1
O rshd prove um servidor de shell remoto através do comando rsh. O rsh
permite que um comando seja digitado em um nó local e a saída do mesmo é
repassada para o nó remoto.
O rexecd é um servidor remoto de execução, acessado pelo comando rexec
quando um serviço é requisitado pelo rexec o rexecd inicia alguns protocolos
para a execução remota do mesmo.
7. 7 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
2 – Configurando nomes dos nós do cluster.
Normalmente um cluster não tem muitos hosts, assim é melhor configurar o
arquivo hosts ao invés de configurar um servidor DNS, entretanto se o cluster
tiver muitos nós seria recomendado o uso de um servidor de nomes, já que a
configuração do arquivo hosts tem que ser feita em cada nó, e sempre que
atualizada caso alguma mudança seja feita.
Configurando o arquivo /etc/hosts, edite tal arquivo com um editor de texto, tal
como:
#vi /etc/hosts
127.0.0.1 localhosts localhosts.localdomain
10.0.0.1 mestre mestre.cluster.com
10.0.1.1 escravo01 escravo01.cluster.com
10.0.1.2 escravo02 escravo02.cluster.com
10.0.1.3 escravo03 escravo03.cluster.com
10.0.1.4 escravo04 escravo04.cluster.com
10.0.1.5 escravo05 escravo05.cluster.com
10.0.1.6 escravo06 escravo06.cluster.com
8. 8 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
3 – Este passo consiste em configurar o nó mestre de forma que ele tenha uma
relação de confiança entre os nós escravos. Este serviço permite que os nós
escravos executem comandos remotos através do rlogin, rexec, rsh, ou seja
comando “r” sem senha. É necessário tomar muito cuidado com este arquivo já
que ele prove uma falha de segurança necessária ao cluster que é a de executar
comandos sem senhas, portanto, deve-se ter um bom firewall entre o cluster e a
rede externa (Internet).
Para fornecer tal confiança entre os nós escravos e o mestre basta editar o
arquivo /etc/hosts.equiv. Tal como:
#vi /etc/hosts.equiv
localhost
mestre
escravo01
escravo02
escravo03
escravo04
escravo05
escravo06
9. 9 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
Também, pode ser configurado o arquivo .rhosts para a conexão baseada em
confiança. Este arquivo deve estar presente no diretório pessoal do usuário que
quer permitir o acesso baseado em confiança. Ele segue a mesma sintaxe do
arquivo hosts.equiv. Então apara configurar tal arquivo com o usuário cluster o
comando seria:
#vi /home/cluster/.rhosts
localhost
mestre
escravo01
escravo02
escravo03
escravo04
escravo05
escravo06
É valido lembrar de que qualquer arquivo que inicie com um “.” é um arquivo
oculto no Linux, assim em uma listagem normal este arquivo não irá aparecer.
4 – Lembre-se de adicionar o usuário cluster para executar o comando anterior:
#adduser cluster
10. 10 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
5 – É necessário para um fácil gerenciamento do cluster o uso de um servidor
NFS para compartilhar o diretório, que ira ser utilizado para compartilhar os
arquivos do usuário cluster no nó mestre para todos os nós escravos. Tornando
então o diretório /home/cluster um diretório único para todos os usuários do
cluster.
Caso isto não fosse feito seria necessário, por exemplo, para executar um
programa copiar o executável para todos os nós do cluster. O que iria demandar
muito trabalho.
Para configurar um servidor NFS basta editar o arquivo /etc/export e adicionar
os compartilhamentos e as opções, tal como:
#vi /etc/exports
/home/cluster escravo01 (rw,no_root_squash)
/home/cluster escravo02 (rw,no_root_squash)
/home/cluster escravo03 (rw,no_root_squash)
/home/cluster escravo04 (rw,no_root_squash)
/home/cluster escravo05 (rw,no_root_squash)
/home/cluster escravo06 (rw,no_root_squash)
/home/cluster escravo07 (rw,no_root_squash)
11. 11 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
Na configuração do servidor NFS anteriormente foi configurado um
compartilhamento para cada nó do cluster, é possível fazer tudo isto em uma
única linha, entretanto é mais seguro da forma apresentada. A opção rw diz que o
compartilhamento pode ser usado com permissões de leitura e escrita, por fim, a
opção no_root_squash, não dá permissões de root a quem estiver utilizando o
compartilhamento.
Então depois de alterar o arquivo /etc/exports faz-se necessário reiniciar o
servidor NFS para que os compartilhamento tornem-se válido, então execute o
comando:
#/etc/rc.d/rc.nfsd restart
Inicie também o serviço rcp para que seja feita o mapeamento de portas entre
nós escravos e o nó mestre:
#/etc/rc.d/rc.rpc restart
12. 12 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
5 – Instalando e configurando o LAM-MPI:
O LAM-MPI é um conjunto de programas e bibliotecas que permitem que um
conjunto de máquinas sejam utilizadas de forma paralela, ou seja, é este que
realmente prove a computação paralela. Entretanto para isto os programas tem
de utilizar as funções da biblioteca MPI. O MPI não faz o paralelismo de forma
automática.
Para instalar o MPI é possível baixar o código fonte e compilar o mesmo com o
comando (make e make isntall). No Slackware é possível baixar um pacote pre-
compilada em http://www.linuxpackages.net, o pacote chama-se lam-7.1.1-
i486-1jac.tgz ou uma versão mais recente.
A instalação da-se com o seguinte comando:
#installpkg lam-7.1.1-i486-1jac.tgz
13. 13 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
Depois de instalado o LAM-MPI ira gerar um arquivo de configuração chamado
/etc/lam-bhost.def, neste arquivo deve estar o nome de cada máquina que
compõe o cluster, também é possível indicar quantos processadores cada nó
possui, entre outras opções.
Um exemplo de arquivo lam-bhost.def pode ser visto a seguir:
#vi /etc/lam-bhost.def
mestre
escravo01
escravo02
escravo03
escravo04
escravo05
escravo06
Assim, com a configuração anterior estamos adicionando os nós 1 ao 6.
Para iniciar o cluster basta executar o comando:
#lamboot
E para verificar os nós ativos basta executar o comando:
#lamnodes
14. 14 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
Atenção!!!
O cluster deve ser executado com um usuário não root (o lam-mpi não
deixará o usuário root iniciar o cluster) então utiliza, por exemplo, o usuário
cluster para inciar o LAM-MPI.
15. 15 Cluster Beowulf
Implementação e Configuração no Slackware
Configuração do nó Mestre:
16. 16 Cluster Beowulf
Implementação e Configuração no Slackware
a