Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.592 ]
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
Gerar arquivos CSV no postgresql
Rotina para backup diário, semanal e mensal (exemplo para Firebird)
Cadastro de usuarios para proxy autenticado
SCRIPT PARA INSTALAÇÃO DE PROGRAMAS NO LINUX
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta