Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.923 ]
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
Firewall para Compartilhamento de Conexão 3G
Reconexão automática para internet ADSL
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Queda no serviços da Cloudflare, alguns sites estão fora do ar. (1)
Perfil criado no samba ad dc não loga no Windows 10 e 11 (11)









