Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.968 ]
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
Alta disponibilidade de Links com CentOS 6
ORACLE 10.2g - Fazendo Restore
Script para iniciar programas instalados no wine
Configurando um Domínio no BIND9 com Debian 3.1
Script para fazer levantamento de hardware e software no Gentoo
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (15)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









