Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.595 ]
Homepage: programacaocomputador.blogspot.com.br
Download clusterbeowulf.sh (versão 2)
Download 1450234273.clusterbeowulf.sh (versão 3)
Olá pessoal, eu resolvi automatizar o processo de instalação de um cluster usando o shell do GNU/Linux. Aí vou mandando o script para que vocês possam implementar, melhorar. Este foi criado para rodar programas de forma paralela (no caso usei MPI).
Este cluster foi testado no Ubuntu 12.04 e Debian 7!!
Adaptem como queiram!!!
Versão 2 - Enviado por maxshu em 23/10/2014
Changelog: Eu debuguei o programa por inteiro. O programa está muito bom e mais legível!!!
Versão 3 - Enviado por maxshu em 16/12/2015
Changelog: Nesta nova versão foi melhorada a aparência da interface, além da reescritura de alguns comandos. Na versão 3.0 criarei uma interface gráfica para o mesmo, onde irei testar em outras distribuições, mas falta tempo para isso. Quem se interessar em me ajudar, ficarei muito satisfeito.
Download 1450234273.clusterbeowulf.sh
#!/bin/bash # =================================================================== # = Autor: Francisco Iago Lira Passos = # = Email: iagolirapassos@gmail.com = # = Data: Criado em 26 de outubro de 2013 = # = Autorização: Livre para melhorias = # =================================================================== clear echo "======O número de computadores deve ser um, pois as configurações são de pc-em-pc!=======" echo "======O script foi configurado com o nome Master para o computador Mestre!======" echo "======Quando for inserir o nome do usuário 'mestre' use 'Master'======" echo "======Esse script foi criado baseado nos compuatadores que possuem o mesmo nome de usuário e computador!====" echo "========Passo 1========" echo "Entre com números inteiros" echo "======Os usuários possuem o mesmo nome? sim(1) ou não(0)======" read mesmo if [ $mesmo -eq 0 ]; then echo "Pois configure os pc's para que todos tenham usuários com nomes iguais!" else echo "======Ok! Passando pro próximo passo!=======" fi echo "=======Quantos computadores serão configurados na rede?=======" read numrede IP=($numrede) echo "======As configurações de /etc/hosts ja foram feitas? sim(1) ou não(0)======" read name if [ $name -eq 1 ]; then echo "======Ok!Passando para o proximo passo!======" else echo "======Aqui serão adicionados os Ip's e os usuarios no arquivo /etc/hosts=======" for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 do if [ ${i} -gt $numrede ]; then break fi echo "$cont" echo "Entre com o IP do usuário (ex: 10.38.14.1)" read IP[cont] echo "Entre com o nome de usuário (ex: Master, slave1,...)" read user[cont] echo "Qual a senha do usuário" read senha[cont] echo "${IP[cont]} ${user[cont]} ${senha[cont]}" echo "${IP[cont]} ${user[cont]}" | sudo tee -a /etc/hosts done fi clear echo "========Passo 2========" echo "===Instalando o NFS====" echo "======A maquina é slave(1) ou master(0)?=======" read ms # ============Configuração do(s) slave(s)====================== if [ $ms -eq 1 ]; then echo "======O cifs-utils já está instalado? sim(1) ou não(0)======" read sif if [ $sif -eq 0 ]; then sudo apt-get install cifs-utils else echo "======Ok! Passando para o proximo passo!======" fi echo "=======O nfs-client já está instalado? sim(1) ou não(0)=======" read nfs if [ $nfs -eq 0 ]; then sudo apt-get install nfs-client else echo "=======Ok! Passando para o proximo passo!=======" fi echo "======Digite o nome da pasta que deseja compartilhar(ex: /home/user/nomefile)======" read path1 # criando o ponto de montagem sudo mkdir $path1 echo "Master:$path1 $path1 nfs" | sudo tee -a /etc/fstab sudo mount Master:$path1 $path1 # Agora vamos verificar se as pastas foram montadas corretamente sudo mount -a clear # =============Passo 3===================== echo "Instalando o GCC" echo "=======O build-essencial já está instalado? sim(1) ou não(0)======" read build if [ $build -eq 0 ]; then sudo apt-get install build-essencial else echo "======Ok! Passando para o proximo passo!=======" fi clear echo "======O mpich2 já está instalado? sim(1) ou não(0)======" read mpich if [ $mpich -eq 0 ]; then wget http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz cp mpich-3.0.4.tar.gz $path1 cd $path1/mpich-3.0.4 tar -vzxf mpich-3.0.4.tar.gz sudo ./configure sudo make sudo make install cd $path1 else echo "======Ok! Passando para o proximo passo!======" fi echo "=======O hydra já está instalado? sim(1) ou não(0)=======" read hydra if [ $hydra -eq 0 ]; then wget http://www.mpich.org/static/downloads/3.0.4/hydra-3.0.4.tar.gz cp hydra-3.0.4.tar.gz $path1 cd $path1/hydra-3.0.4 tar -vzxf hydra-3.0.4.tar.gz cd $path1/hydra-3.0.4 sudo ./configure sudo make sudo make install cd $path1 else echo "======Ok! Passando para o proximo passo!=======" fi echo "======Testando o mpiexec e o mpirun=======" which mpiexec which mpirun clear export PATH=$path1/mpich-3.0.4:$PATH echo "======Cluster concluído com sucesso!======" fi clear # ============Configuração do Master============================== sudo mount -a if [ $ms -eq 0 ]; then echo "======Criando ponto de montagem(Pasta compartilhada)======" echo "======O cifs-utils já está instalado? sim(1) ou não(0)======" read sif if [ $sif -eq 0 ]; then sudo apt-get install cifs-utils else echo "======Ok! Passando para o proximo passo!======" fi echo "======O nfs-server já está instalado? sim(1) ou não(0)======" read nfs if [ $nfs -eq 0 ]; then sudo apt-get install nfs-server else echo "======Ok! Passando para o proximo passo!======" fi echo "======Digite o nome da pasta que deseja compartilhar(ex: /home/user/nomefile)======" read path1 # criando o ponto de montagem sudo mkdir $path1 echo "$path1 *(rw,sync)" | sudo tee -a /etc/exports sudo service nfs-kernel-server restart for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 do if [ ${i} -gt $numrede ]; then break fi if [ $user = "Master" ]; then echo "=====Comando em observação! Caso surja algum bug substitua 'cifs-utils' por 'smbfs' digitando 'nano /etc/fstab'!======" echo "//${user}@slave:$path1 $path1 cifs-utils username=${user},password=${senha} 0 0" | sudo tee -a /etc/fstab fi # sudo mount Master:$path1 ${user}:$path1 done # echo "Master:$path1 $path1 nfs" | sudo tee -a /etc/fstab # fi # Agora vamos editar o arquivo /etc/exports echo "$path1" | sudo tee -a /etc/exports # configurando a senha de comunicação automotica ssh echo "======Sua senha para acesso ssh já está configurada? sim(1) ou não(0)======" read passewd if [ $passewd -eq 0 ]; then ssh-keygen -t rsa cat Master:$path1/id_pub.dsa >> $path1/authorized_keys else echo "=======Ok! Passando pro próximo passo!=======" fi echo "======Testando sua conexão com o(s) slave(s)=======" for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 do if [ ${i} -gt $numrede ]; then break fi if [ $user = "Master" ]; then echo "Master" else ssh ${user} hostname fi done clear echo "======O build-essencial já está instalado? sim(1) ou não(0)======" read build if [ $build -eq 0 ]; then sudo apt-get install build-essencial else echo "======Ok! Passando para o proximo passo!======" fi clear echo "======O mpich2 já está instalado? sim(1) ou não(0)======" read mpich if [ $mpich -eq 0 ]; then wget http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz cp mpich-3.0.4.tar.gz $path1 cd $path1/mpich-3.0.4 tar -vzxf mpich-3.0.4.tar.gz sudo ./configure sudo make sudo make install cd $path1 else echo "======Ok! Passando para o proximo passo!======" fi echo "=======O hydra já está instalado? sim(1) ou não(0)=======" read hydra if [ $hydra -eq 0 ]; then wget http://www.mpich.org/static/downloads/3.0.4/hydra-3.0.4.tar.gz cp hydra-3.0.4.tar.gz $path1 cd $path1/hydra-3.0.4 tar -vzxf hydra-3.0.4.tar.gz cd $path1/hydra-3.0.4 sudo ./configure sudo make sudo make install cd $path1 else echo "======Ok! Passando para o proximo passo!=======" fi echo "======Testando o mpiexec e o mpirun======" which mpiexec which mpirun clear export PATH=$path1/mpich-3.0.4:$PATH cd $path1 echo "======Cluster concluído com sucesso======!" fi
Instalação e configuração do celular Nokia 6670 no Ubuntu 8.10
zsh: Validar IPv4 utilizando PCRE
Go Script - Inicia sessões ssh
Conversor de logs do svn para rss
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)