Cluster beowulf
Publicado por maxshu (última atualização em 06/01/2016)
[ Hits: 8.658 ]
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
Instalando e configurando o AIDE em 15 minutos
Cria ambiente virtual (VirtualHost no Apache e Virtual Mail no Postfix) para desenvolvimento web
Limitando largura de banda com o CBQ
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Instalar sem formatar, pergunta meio boba. (2)
O que esta havendo com o mercado de ti? (9)
Não consigo cadastrar nenhuma conta online (5)