Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.680 ]
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
Otimiza.sh - Atualiza seu Ubuntu/Debian
Resolvendo alguns erros ao executar o apt-get, Ubuntu 16.04
Instalando o SIESTA no Linux automaticamente
Script de monitoracao de servicos
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (7)
Open Suse não abre wi-fi automaticamente (3)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)