16 de junho de 2012

Como Montar seu Cluster Beowulf em Casa

Introdução

      Aqui vai um rápido tutorial para auxiliar na montagem de um cluster caseiro. Este tutorial foi montado após a instalação do Cluster Beowulf do GEMPP.
      Um cluster é definido como um agregado, conjunto de máquinas para computação paralela distribuída. Cluster é um termo bastante utilizado para definir a utilização de dois ou mais computadores independentes, interligados via rede, que trabalham em conjunto trocando informações entre si em torno de uma única tarefa.
      Os cluster são divididos em:
  • Alta Disponibilidade: Mantém um serviço de forma estável pelo maior tempo possível.
  • Alta Performance: O cluster é designado para prover grande poder computacional.
   Cluster Beowulf são clusters de desempenho escaláveis, baseados numa infraestrutura de hardware comum, rede privada e software 'open source' (Linux).  Para Clusters Beowulf, existe um servidor responsável ("frontend") por controlar todo o cluster, principalmente quanto à distribuição de tarefas e processamento. 

Equipamentos necessários

      Para  montagem do cluster, você precisará ter em mãos:
  • 2 ou mais computadores.
  • CD/DVD de distribuição Linux.
  • Switch.
  • Computadores interligados através do switch.
  • Cabo UTP conectorizado. (De preferência homologado).

Instalação

    Demonstraremos a instalação do cluster, utilizando três computadores (1 frontend, 2 slaves). A instalação do cluster pode ser dividida em duas etapas: a instalação e configuração do servidor; e a instalação e configuração dos nodos "slaves". Primeiro será descrita a configuração necessária para ambos, e depois as configurações separadas.
  • Instalação do Sistema Operacional (em nosso caso, Debian Squeeze, 6.0.5). A instalação deve contemplar somente o sistema básico. (SSH, Servidor Web, ambiente gráfico...) devem ser instalados em separado ao finalizar a instalação.
  • Após a instalação do SO, se faz necessário instalar os pacotes que serão essenciais: 
         SSH: Necessário para acessar os nodos:
                       # apt-get install openssh-server && apt-get install ssh
       GCC e G++: Utilizado para compilação dos códigos fonte:
                      # apt-get install gcc && apt-get install g++
       NFS: Network File System, utilizado para configuração do sistema de arquivos:
                       # apt-get install nfs-kernel-server      


Configuração da Rede:

# vim /etc/network/interfaces 
  •  No servidor:                  auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.2
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1
  • no01:                                 auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.3
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1
     
       
  •  no02:                               auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.4
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1

Configuração do Hostname:

  • Editar o arquivo /etc/hostname inserindo o nome do "nó" caso não possua.

Configuração Hosts:

  • Editar o arquivo /etc/hosts inserindo o nome e ip dos nodos do cluster, por exemplo:
    frontend 172.0.0.2
    no01         172.0.0.3
    no02         172.0.0.4
  • Reiniciar o Serviço: /etc/init.d/networking restart

Configuração NFS:

  •  No Servidor: Editar o arquivo /etc/exports inserindo as seguintes linhas:
    /usr *(rw,sync,no_root_squash)
                                  /lib *(rw,sync,no_root_squash)
                                  /home *(rw,sync,no_root_squash)
  • No Cliente:
    • Montar o NFS: 
      • # mount  frontend:/usr  /usr -t nfs
      • # mount  frontend:/lib  /lib -t nfs
      • # mount  frontend:/home  /home -t nfs
    • Editar o arquivo /etc/fstab inserindo as seguintes linhas: 
    frontend:/usr  /usr  nfs defaults 0 0
    frontend:/lib  /lib  nfs defaults 0 0
    frontend:/home  /home  nfs defaults 0 0
     

SSH sem senha:

  • Repetir o procedimento abaixo para todos os nós.
  •  Gerar chave pública:  # ssh-keygen -t rsa
    • Ao ser perguntado o arquivo onde será salvo, definir:
      • /home/"usuario"/.ssh/id_rsa_"nomedonó" 
  • Copiar todas as chaves geradas de forma concatenada para o authorized_keys.
    •  cat /home/"usuario"/.ssh/id_rsa_"nomedonó" >> /home/"usuario"/.ss/authorized_keys

Instalação MPI no Servidor

  • O MPI deve ser instalado somente no Servidor.
    • # apt-get install libopenmpi-dev
    • # apt-get install mpi-default-bin
  •  O MPI também pode ser instalado manualmente. Para isto, basta baixar o tar.gz do site do openmpi e instalar.                    

Sites e documentos interessantes e que foram utilizados no desenvolvimento deste tutorial:

Referências

NFS -> http://nfs.sourceforge.net/nfs-howto/
OpenMPI -> http://www.open-mpi.org/
Debian -> http://www.debian.org/
Cluster Beowulf -> http://www.infowester.com/cluster.php



A partir de então, é só partir para brincadeira =)
Dúvidas podem ser tiradas através do e-mail af.lorenzon@gmail.com.
                        

2 comentários:

  1. Olá, preciso de ajuda tenho 9 PCs em uma lan todos novos com placas mãe gigabyte e processadores da terceira geração intel G2030 com 4gb ddr3 conectados em rede por um Switch gostaria de montar um cluster e saber o seu poder através de algum programa. Alguém pode ajudar ? escobar_mecanico@hotmail.com ou https://www.facebook.com/escobarinfogames

    ResponderExcluir