como montar um cluster com a versão 14.04?

Iniciado por CristianoRistowIFF, 30 de Novembro de 2014, 21:05

tópico anterior - próximo tópico

CristianoRistowIFF

Boa noite galera tenho um trabalho na faculdade a onde devemos montar um cluster com o Ubuntu 14.04 através do VirtualBox mas como sou novato esta difícil. Devemos apresentar o cluster funcionando ligando 3 maquinas nele..

druidaobelix

#1
Vamos imaginar que seu conhecimento de Linux seja bom, razoavelmente bom, muito melhormente se for muito bom, pois que seria impensável alguém pensar em construir um cluster sem uma base minimamente sólida do abc do Linux, aliás, não acredito que um professor de curso superior desse uma tarefa aos seus discentes que eles não pudessem de fato realizar ou que fosse incompatível com o estágio de desenvolvimento que o curso universitário propõe.

Se me permite a observação, a forma como você aqui propõe a questão é muito ampla para ser respondida no breve escopo de um simples tópico de um fórum. Tópicos de fóruns servem para elucidar dúvidas pontuais, não para apresentarem roteiros completos de execução de tarefas. Isso é feito por tutoriais, não por tópicos de fóruns.

Possivelmente o seu mestre declinou alguma literatura acadêmica, algum material didático base de apoio, como geralmente os mestres acadêmicos bem o fazem, então, a primeira questão é:

1) qual é essa literatura declinada pelo seu professor orientador?

2) qual ponto específico dela você não está entendendo?

Claro que sua primeira fonte de elucidação de qualquer literatura indicada é seu próprio mestre professor - é para isso que eles servem -, na profissão mais nobre do mundo, que é formar pessoas através da educação.

Pontualmente se você trouxer essa literatura aqui e suas dúvidas pontuais, remanescente da sua discussão acadêmica no âmbito da sua faculdade, pode ser que alguém no fórum possa ajudar.

Indo adiante, é de supor que você já tenha estudado algo e muito provavelmente já tenho tentado algo na prática.

3) o quê você tentou e não deu certo?

4) em que ponto específico não deu certo?

Note, estou querendo transmitir a ideia de que se você trouxer dúvidas pontuais bem trabalhadas é eventualmente possível obter ajuda aqui no fórum, desde que, claro, o software base seja o Ubuntu.

Evidentemente que esse cluster pode ser montado com qualquer outra distribuição e considerando que se trata de finalidade acadêmica, talvez seja mesmo mais apropriado partir logo para a original dessa que aqui tratamos, que é a Debian, que é mais clássica, mas, claro, nada impede que o faça a partir do Ubuntu.

Imaginando que você já tenha estudado exaustivamente o imenso cabedal de informações disponíveis na internet, se não o fez sugiro como singelo início dessa que será uma longa caminhada:

1) Um livro, já que a academia deve se basear em livros:

Construindo supercomputadores com Linux / Marcos Pitanga - 3ª edição - Rio de Janeiro; Brasport, 2008. - ISBN: 9788574523729

2) Um tutorial muito bom, recente, de 2013, baseado em Debian, em generosa contribuição do mesmo autor, aliás, autor esse com formação em Sistemas de Informações, pós-graduado em Redes de Computadores e Segurança de Redes e engenheiro de sistemas:


Montagem de Cluster

http://www.vivaolinux.com.br/artigo/Montagem-de-Cluster?pagina=1

3) Um outro artigo, se o idioma inglês não for um obstáculo intransponível, também boa indicação do professor Tota, aqui do Fórum ( tópico http://ubuntuforum-br.org/index.php/topic,101758.0.html ), baseado no Ubuntu :

Building your own supercomputer using Ubuntu and Kerrighed

http://www.stevekellylab.com/resources/cluster

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

CristianoRistowIFF

O  que o professor nos passou foi isso so que na primeira parte /etc/hosts não consigo fazer esse
comando funcionar mesmo depois de ter mudado para root.


Configurando nosso primeiro cluster Instale o Gnu/Linux
em todas as máquinas e defina os seguintes parâmetros:

IP da rede local: 192.168.0.0
Máscara de subrede: 255.255.255.0
Nome do servidor: mestre.pinguim.br
Nomes dos nós: escravo1.pinguim.br,
escravo2.pinguim.br,
escravo3.pinguim.br ...

Em todos os computadores, adicione as
seguintes linhas ao arquivo /etc/hosts/:

127.0.0.1 localhost localhost.localdomain
192.168.0.1 mestre mestre.pinguim.br
192.168.0.2 escravo1 escravo1.pinguim.br
192.168.0.3 escravo2 escravo2.pinguim.br
192.168.0.4 escravo3 escravo3.pinguim.br

O próximo passo será configurar o arquivo /etc/hosts.equiv,
que define a relação de confiança entre os hosts através de
equivalência, sem a necessidade de autenticação por senha.
Isto representa um grande risco de segurança, mas é requerido
pelo protocolo de acesso remoto RSH (Remote Shell) para
que seja possível acessar todas as máquinas do cluster.
Este arquivo deve estar presente em todas as máquinas que
farão parte do seu sistema. O formato é o seguinte:

mestre
escravo1
escravo2
escravo3

O arquivo .rhosts

Este arquivo deverá constar em cada diretório de trabalho de cada usuário,
como /home e /root. Observe a existência do ponto (.) na frente do arquivo,
isto o torna "invisível" ao comando ls. Este arquivo também será usado pelo
protocolo RSH para execução de comandos remotos e por algumas aplicações
de monitoramento. Seu conteúdo é o seguinte:

escravo1
escravo2
escravo3

Observação: os arquivos hosts, hosts.equiv e .rhosts devem
ser replicados em todas as máquinas que formam seu supercomputador.
Configurando o Servidor do Sistema de Arquivos (NFS)

O servidor NFS tem a função de permitir o acesso transparente
a discos remotos, centralizando assim a administração, pois é
possível ter todos os diretórios de trabalho em uma única máquina
e compartilhá-lo com diversos clientes conectados por uma rede local.
No computador mestre, edite o arquivo /etc/exports e acrescente as seguintes linhas:

/home *(rw,no_root, root_squash)
/usr/local *(rw,no_root, root_squash)

Salve o arquivo e inicie o serviço NFS. Para configurar os clientes,
em cada nó escravo editamos o arquivo /etc/fstab para montar
automaticamente nosso sistema de arquivos remoto. Adicione as
seguintes linhas ao final do arquivo:

192.168.0.1:/home /home nfs exec,dev,suid,rw 1 1
192.168.0.1:/usr /usr nfs exec,dev,suid,rw 1 1

Habilite os serviços de rsh, rlogin, ssh e rexec com o comando ntsysv.
Acrescente as seguintes linhas ao final do arquivo /etc/securetty/:

rsh
rlogin

Se tudo correu bem, estamos com 50% de caminho percorrido.
Passamos então para próxima etapa, que consiste em entender e
configurar a biblioteca de passagem de mensagens, MPI

O que é o MPI?

É uma biblioteca de passagem de mensagens, desenvolvida para ser padrão
de comunicação entre processos em ambientes de memória distribuída. Vá ao
site www-unix.mcs.anl.gov/mpi/mpic e baixe o arquivo mpich.tar. Descompacte-o no
diretório /user/local com o comando:

# tar -zxvf mpich.tar

Entre no diretório /mpich-1.2.4 recém-criado e execute a seqüência de comandos abaixo:
./configure —prefix=/usr/local
make
make install

Abra com seu editor predileto o arquivo machines.LINUX, localizado no diretório /usr/local/mpich-1.2.4/util/machines/,
e acrescente os nomes dos computadores que farão parte do cluster.

mestre
escravo1
escravo2
escravo3

Vá ao diretório /root e edite o arquivo .bash_profile,
acrescentando as seguintes linhas:

PATH:$PATH=/usr/local/mpich-1.2.4/bin
export MPIR_HOME = /usr/local/mpich-1.2.4

Muitos aplicativos de testes acompanham o pacote MPICH,
entre os quais um programa para cálculo de PI paralelizado,
denominado CPI, que será utilizado para o nosso primeiro
teste básico de passagem de mensagens. Cada computador
calcula o valor de pi e compara-o com o valor 3.14159265358979.
O programa CPI pode ser encontrado em /usr/local/mpich/1.2.4/examples.

Compile o programa com o comando abaixo:
mpicc cpi.c -o cpi

E execute-o com quatro processos (ou seja, um para cada máquina do nosso cluster)
mpirun -np 4 cpi

Você verá algo similar ao mostrado abaixo:

Process 0 on mestre.pinguim.br
Process 1 on escravo1.pinguim.br
Process 2 on escravo2.pinguim.br
Process 3 on escravo3.pinguim.br

pi is approximately 3.1416009869231249, Error is 0.0000083333333318
wall clock time =0.003784

Com isso, podemos ter certeza de que o nosso primeiro supercomputador
está funcionando corretamente.

druidaobelix

so que na primeira parte /etc/hosts não consigo fazer esse comando funcionar mesmo depois de ter mudado para root.

Desculpe, não entendi, que comando especificamente você não consegue fazer funcionar?
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.


druidaobelix

#5
Citar
Citarso que na primeira parte /etc/hosts não consigo fazer esse comando funcionar mesmo depois de ter mudado para root.
CitarDesculpe, não entendi, que comando especificamente você não consegue fazer funcionar?
Citar/etc/hosts

Eita, /CristianoRistowIFF /, agora pegou, era o que eu temia. :-)

O texto que você passou está dizendo assim:

"Em todos os computadores, adicione as seguintes linhas ao arquivo /etc/hosts/:"

Primeiro há um erro no texto original colocando uma / (barra) após a palavra hosts, o que indicaria que hosts seria um diretório, quando na verdade é um arquivo e não um diretório, ainda que no Linux tudo seja arquivo, o fato é que existem arquivos do tipo arquivo-arquivo e arquivos do tipo diretório e esse, no caso, é um arquivo-arquivo mesmo, um arquivo de texto e não um diretório.

Então, por simples questão de literalidade do texto, está claro que /etc/hosts é um arquivo e não um comando.

Na verdade é o arquivo de nome hosts dentro da pasta (diretório) etc, só isso.

Até vou lhe explicar como se faz esse passo, mas depois penso que precisamos discutir algo muito mais essencial.

Vamos lá:

Se você precisa adicionar tais e quais linhas ao arquivo hosts que se encontra dentro do diretório /etc, então você primeiro precisa 'abrir' aquele arquivo para que possa escrever dentro dele.

Para abrir e escrever dentro de um arquivo, em linguagem humana (não binária, não em linguagem de computador), é necessário usar um editor de textos, na verdade um editor que trabalha em modo texto simples, isto é, não serve um editor de texto do tipo 'Libre Office Writter" (que é o equivalente Linux do Office no ambiente Windows), que usa formatação, é apenas, vamos dizer assim, um editor de texto puro.

Existem vários editores de textos no ambiente Linux, variando conforme a distribuição.
No Ubuntu o editor de texto padrão, digamos assim, mais amigável, em ambiente gráfico, é o "gedit". No Kubuntu é o "kate", existem outros como o kedit e ainda aqueles mais "puros" ainda como o "nano", o "vim", o "pico" e especialmente o "vi", esse último é de verdade um filho Unix da mais pura estirpe, embora seja muito pouco amigável.

Leia, por favor, o seguinte artigo, mas dele leia especialmente as 3 primeiras páginas que é o que serve ao nosso propósito mais imediato:

Editores e processadores de texto para GNU/Linux

http://www.vivaolinux.com.br/artigo/Editores-e-processadores-de-texto-para-GNU-Linux?pagina=1

Evidentemente estou supondo que você está usando ou pretende usar o Ubuntu, posto que aqui é um fórum do Ubuntu (embora, como já disse, para esse especial propósito acadêmico ache que você deveria usar a distribuição mãe (ou pai) Debian.

Nas vamos em frente.

Então, para poder editar e adicionar as tais linhas ao arquivo, tendo abrido um terminal, você deverá digitar:

sudo gedit /etc/hosts

Para abrir um terminal como uma 'janela' do seu ambiente gráfico, use as teclas Ctrl Alt T acionando-as simultaneamente.

Você não precisa exatamente digitar o código acima, você pode simplesmente marcá-lo com o seu mouse, copiar e a seguir colar na janela do terminal usando o botão direito do mouse, dando um [enter] a seguir, o que evita erros de retranscrição, especialmente para códigos mais longos.

O 'sudo' da linha de código acima é porque o arquivo hosts pertence ao root (o dono) do sistema e não ao usuário, ou seja, está numa área reservada do sistema, então apenas com a autorização administrativa (que é o sudo) é que será possível de fato editá-lo.

Assim, com o arquivo aberto, copie as tais linhas de que o seu texto fala e as cole no corpo do arquivo, fazendo salvar e sair a seguir e, pronto, está feita a alteração proposta.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#6
Bem, /CristianoRistowIFF/, vamos aos fatos, vamos discutir uma questão mais essencial.

Desculpe a franqueza mais me parece que você não está minimamente preparado para seguir adiante com a tarefa de montar um cluster em Linux, que era o que eu temia, exatamente pela generalidade inicial da narrativa do seu tópico.

Veja, se você tem dificuldade de entender uma coisa tão simples como ter que abrir e editar um arquivo, confundindo isso com um comando, esse é um fortíssimo indicativo de que lhe falta muito a aprender antes de partir para empreitadas mais ambiciosas.

Não quero e mesmo não posso discutir a metodologia de ensino que o seu professor adotou e ele certamente tem fundadas razões para dispor um conteúdo de tal e qual forma e também não sei se você estudou com afinco toda a matéria dada até o momento, mas a mim parece, como se diz popularmente, que se está colocando o carro na frente dos bois.

O que você precisa, no momento, é de Linux básico, é o abc do aprendizado em Linux, é o feijão com arroz, que é essencial para que se possa ir adiante.

Faça um esforço concentrado e dramático de ler apostilas básicas que fornecem os conceitos gerais do Linux, das distribuições, dos comandos e modo de uso, isto é que é o essencial para você agora.

Não leva a mal, não é uma crítica, encare apenas como uma simples e modesta orientação no sentido do seu melhor aprendizado, no sentido da maior produtividade do seu processo de adquirir conhecimento.

Existe uma escalabilidade do conhecimento, uma curva de aprendizagem, em que o bom senso diz que se deve partir das coisas mais simples para as mais complexas e não obviamente o contrário.

Uma criança não começa entrando numa faculdade para depois ir cursar o primário, não é mesmo? É exatamente o contrário, ela faz o maternal, depois o primário, depois o secundário, depois o ensino médio, as vezes ainda faz um cursinho e só depois a faculdade e, as vezes, depois vai para uma pós-graduação ou um mba e quiçá, uns poucos, fazem um doutorado e quase ninguém faz um pós-doutorado, mas como se vê, a ordem de estudos é crescente conforme o nível de dificuldade, sempre do simples para o complexo e desse para o mais complexo.

Por que deveríamos agir diferente disso? Não devemos, o bom senso indica ser esse o caminho, partir do simples para o complexo.

Repito, procure material básico de Linux e se dedique firmemente a aprender o que há de essencial, o arroz-com-feijão, o seu ganho de produtividade será enorme.

Tenha uma boa sorte, espero ter contribuído um pouco.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

CristianoRistowIFF

Valeu mesmo pelas dicas vou começar a estudar o basico
do linux o professor nos passou alguns comandos basicos mas são muitos limitados
seguirei a risca a sua metodologia agradeço muito por ter tirado esse tempo para me auxiliar :)

jkmsjq

Complementando as exposições, algumas referências de leitura para o seu trabalho:

Montagem de Cluster

Montando um Cluster Ubuntu Server 10.04 LTS - Parte 1 - Cenário , Projeto, Definição dos papeis, Estrutura e Instalando o Linux - Um pouco antigo, mas para uma leitura inicial é válido!
LinuxUser: 548942 / Dando um tópico como resolvido
"A verdade só é agressiva a quem vive de mentiras". Autor desconhecido.
Twitter: @jeisonkertesz

Rockwave

Acho que antes de tudo, precisamos saber que tipo de cluster você quer construir? Para que ele será utilizado? Um cluster usado para computação cientifica é muito diferente de um cluster de banco de dados.

druidaobelix

Então, /Rockwave/,

É uma coisa simplisinha, um simples esquema escolar, veja o roteiro no post #2, é apenas o que está lá que o /CristianoRistowIFF/ tem que montar como trabalho acadêmico, não há nenhuma dificuldade.

O que existe no roteiro é apenas que certas especificações de nome de diretório/arquivo não correspondem exatamente ao que existe no Ubuntu, mas então é só adaptar para a realidade estrutural concreta da distribuição e acrescentar aquelas simples linhas, nada além.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.