710 likes | 817 Views
Roteiro para Construção de um “Supercomputador” com Linux. versão 30-05-09. Configurando o Cluster. Roteiro de Configuração. Configuração dos endereços lógicos (IP) para o controlador mestre e os nós computacionais
E N D
Roteiro para Construção de um “Supercomputador” com Linux versão 30-05-09
Roteiro de Configuração • Configuração dos endereços lógicos (IP) para o controlador mestre e os nós computacionais • Projetar um ambiente de resolução de nomes, podendo ser utilizado arquivo hosts, NIS ou DNS • Criar o relacionamento de confiança entre as máquinas
Roteiro de Configuração • Permitir o uso de comandos remotos para colocar as aplicações em execução nos nós • Distribuir o sistema de arquivos do controlador mestre para os nós escravos via NFS • Instalar uma aplicação que permita o gerenciamento dos nós
Roteiro de Configuração • Instalação das principais bibliotecas de passagem de mensagens; PVM MPI • Instalar sistemas de gerenciamento de recursos para aproveitar nós ociosos no cluster • Instalar bibliotecas de otimização do sistema • Criar um ambiente propicio para um sistema de arquivos de alta performance para processos de I/O • Instalar linguagens, compiladores, depuradores, visualizadores
1º Passo: definir os endereços IP Neste passo vamos configurar os endereços IPs das máquinas que formarão o cluster • Vamos usar o endereço de rede 192.168.7.x • Máscara de rede: 255.255.255.0 • Criar uma interface lógica ifconfig eth0:1 192.168.7.x netmask 255.255.255.0
1º Passo (b) - Estabelecendo o nome dos hosts • Edite o arquivo /etc/sysconfig/network e altere a variável HOSTNAME=mestre.meudominio.com.br • Obs: cada host deverá ter seu próprio nome: mestre, escravo1, escravo2, ...
2º Passo: Definição dos hosts A função do arquivo hosts é resolver o nome da máquina no endereço lógico de rede (IP) • alterar o arquivo /etc/hosts para resolver o nome das máquinas Exemplo: 192.168.7.71 mestre.meudominio.com.br mestre 192.168.7.72 escravo1.meudominio.com.br escravo1 192.168.7.73 escravo2.meudominio.com.br escravo2
3º Passo: Configuração de relacionamento de confiança • Configurar o relacionamento de confiança entre os hosts • Ele define a relação de confiança entre os hosts através da equivalência, sem haver necessidade de autenticação por senha /etc/hosts.equiv mestre escravo1 escravo2
4º Passo: o arquivo .rhosts • Esse arquivo deverá constar em cada diretório de trabalho do usuário como /home e /root • Esse arquivo será usado pelo protocolo RSH para execução de comandos remotos e por algumas aplicações de monitoramento • Ele deverá ser criado nos diretórios: /home e /root .rhosts mestre escravo1 escravo2
5º Passo - habilitação do servidor RSH • Execute o ntsysv e habilite os serviços de rexec,rlogin e rsh
Servidor RSH • Inclui as seguintes funções: • emulador de terminal de comandos (rlogin) • execução remota de comandos (rexec) • copia remota de arquivos (rcp)
6º Passo - Configuração dos dispositivos para conexão O arquivo /etc/securetty permite especificar quais dispositivos tty que o usuário root pode conectar-se • O formato do arquivo /etc/securetty é a lista de dispositivo tty onde a conexão é permitida • Acrescentar as entradas abaixo ao final do arquivo /etc/securetty : rsh rlogin
7º Passo - Habilitar os comando “R” Inicie o xinetd. Ele poderá ser iniciado através do comando: # service xinetd start Outra opção para iniciar o xinetd é ir até diretório /etc/rc.d/init.d e iniciar o xinetd com o comando ./xinetd para que , toda vez que ao iniciar, o supervisor seja carregado automaticamente
8º Passo - Replicação • Os arquivos /etc/hosts, /etc/hosts.equiv, /etc/securettty e /home/.rhosts e /root/.rhosts devem ser replicados em todos os computadores que formam o cluster
6 - Gerenciando os Clusters • Ferramentas: • bWatch - permite o monitoramento remoto dos nós do cluster • Ganglia - é uma ferramenta distribuída que permite monitorar sistemas de alto desempenho de computação • Nagios - Gerencia Servidores e Serviços
bWatch (Beowulf Watch) • Permite o monitoramento remoto dos nós do cluster • monitoramento de carga • uso de memória • Script escrito em Tcl/Tk (linguagem de programação de scripts)
Pré-requisitos para uso do bWatch • assume que na máquina onde ele está sendo executado ele tenha acesso remoto via rsh a todos os computadores do cluster • assume também que o interpretador wish (do Tcl/Tk) esteja em /usr/bin/wish
Instalação do bWatch • O site do bWatch localiza-se em: http://bwatch.sourceforge.net/ • crie o diretório /usr/local/bWatch-1.1.0.a • copie o arquivo bWatch-1.1.0a.tar.gz para o diretório /usr/local/bWatch-1.1.0a onde você instala suas aplicações # cd /usr/local/bWatch-1.1.0a # tar zxvf bWatch-1.1.0a.tar.gz
Instalação do bWatch • Edite o arquivo Makefile • Altere wishx por wish • Digite make bwatch • Inicie a aplicação usando bWatch.tcl (somente após esse passo é que será criado o arquivo ~/.bWatchrc.tcl) • Faça o make install para instalá-lo em /usr/local/bin • Altere a variável listOfHosts localizado no arquivo ~/.bWatchrc.tcl (/root/.bWatchrc.tcl)
Instalação do bWatch • Liste o nome da cada host que será monitorado • Exemplo: set listOfHosts { mestre escravo1 escravo2 escrado3 }
Ganglia • O Ganglia é uma ferramenta distribuída que permite monitorar sistemas de alto desempenho de computação • É um projeto open source hospedado em http://ganglia.sourceforge.net
Ganglia • Ganglia Monitor Daemon (gmond) aplicação principal de monitoramento do Ganglia • Ganglia Meta Daemon (gmetad) executado na máquina central coletando e armazenando as informações de estados dos nós • Ganglia Metad Web Interface
Ganglia Monitor Daemon (gmond) • deve ser instalado em todos os nós do cluster que desejamos monitorar • principais características:
Ganglia Meta Daemon (gmetad) • Deve ser instalado e executado no webfrontend • funções: • reunir todos os dados de cada gmond dos nós • armazenar as informações em um banco de dados • fazer o resumo de todos as informações para ser apresentado pelo nó de gerência
Ganglia Metad Web Interface • utiliza um servidor web • páginas são dinâmicas • escrito em PHP
Programas • gmond executado em cada nó do cluster • gmetad é executado na máquina central coletando todas as informações de estado dos nós • gstat conecta ao gmond e lista as informações de saída dos nós do cluster • gexec
Passo 0 Instalação dos arquivos de dependência: # rpm -ivh rrdtool-1.2.30-1.el4.wrl.i386.rpm # rpm -ivh rrdtool-python-1.2.30-1.el4.wrl.i386.rpm
Passo 1 - Instalação do gmond • Instalar o gmond em todas as máquinas do cluster # rpm -ivh ganglia-3.0.6-1.el4.i386.rpm # rpm -ivh ganglia-gmond-3.0.6-1.el4.i386.rpm
Passo 1-a - Configuração do gmond Abrir o arquivo /etc/gmond.conf e alterar os parâmetros name e owner dentro da “tag” cluster name=“MyCluster” este nome deve ser único pois identifica o cluster owner=“Mauro”
Passo 1-b - Iniciar o serviço gmond Levantar o processo em todas as máquinas # service gmond start
Passo 2 - Instalação do gmetad • Instalar o gmetad apenas no host mestre # rpm -ivh ganglia-gmetad-3.0.6-1.el4.i386.rpm
Passo 2-a - Configuração do gmetad Abrir o arquivo de configuração: /etc/gmetad.conf • Alterar o parâmetro: data_source “MyCluster” localhost • Alterar o parâmetro: gridname “MyGrid” • Levantar o processo daemon no nó de gerencia # service gmetad start
Passo 3 - Configuração do Ganglia Frontend # rpm -ivh ganglia-web-3.0.6-1.el4.noarch.rpm Inicie o serviço de httpd # service httpd start e marque o serviço para inicializar automaticamente quando se inicia o host # ntsysv marcar httpd para iniciar • Abra o navegador em: http://localhost/ganglia
Passo 4 - Marcar os daemons para execução Execute o comando ntsysv: # ntsysv selecione e marque os serviços gmond e gmetad (se instalado) para que sejam iniciados automaticamente # service gmond restart # service gmetad restart (se necessário) Verificar /var/log/messages se há alguma mensagem de erro
PVM - Máquina Virtual Paralela • O PVM é uma biblioteca de programação paralela por passagem de mensagens para facilitar o campo de computação paralela homogênea • o PVM já encontra suporte em linguagens como: Java, Python, Perl, além das linguagens tradicionais como C, C++ e Fortran
Componentes do PVM • Composto por duas partes: • primeira parte: daemon pvmd3 • segunda parte: biblioteca de rotinas PVM
PVM • O software PVM deve ser instalado especificamente em cada máquina que é para ser usada em sua “máquina virtual” • $PVM_ROOT/lib • $PVM_ROOT/bin
Alguns diretórios importantes são: • bin/$PVM_ARCH/ • conf/ • console/ • doc/ • examples/ • gexamples/ • hoster/
Alguns diretórios importantes são: • include/ • lib/ • lib/$PVM_ARCH/ • libfpvm/ • man/man[13]/ • misc/ • patches/
Alguns diretórios importantes são: • pvmgs/ • rm/ • shmd/ • src/ • src/$PVM_ARCH/ • tasker/ • tracer/ • xep/
PVM • pvmd3 daemon executable • pvm o programa de console • libpvm3.a (biblioteca de funções em C) • libfpvm3.a (biblioteca de funções em Fortran) • As bibliotecas e executáveis são instalados em: $PVM_ROOT/lib/$PVM_ARCH
PVM • os scripts $PVM_ROOT/lib/pvm e $PVM_ROOT/lib/pvmd são usados para iniciar o console e o daemon PVM • O PVM poderá ser configurado para usar o ssh ao invés do rsh
Instalando e configurando o PVM Criar o arquivo pvm.sh em /etc/profile.d export PVM_ROOT=/usr/share/pvm3 export PVM_ARCH=LINUX export PATH=$PATH:$PVM_ROOT/lib:$PVM_ROOT/lib/$PVM_ARCH export PATH=$PATH:$PVM_ROOT/lib/pvmd export XPVM_ROOT=/usr/share/pvm3/xpvm
Instalando e configurando o PVM • altere a permissão do arquivo /etc/profile.d/pvm.sh para 755 # chmod 0755 /etc/profile.d/pvm.sh
Instalando e configurando o PVM • Criar no diretório /root o arquivo /root/.xpvm_hosts e o arquivo pvmhosts com o seguinte conteúdo: /root/.xpvm_hosts mestre escravo1 escravo2 /root/pvmhosts mestre escravo1 escravo2
Utilizando o PVM Execute o PVM: #pvm pvm>add mestre pvm>add escravo1 pvm>add escravo2 O comando add adiciona os hosts a máquina virtual do PVM
Comandos • halt encerra todos os processos do PVM, inclusive o próprio PVM • delete host exclui uma máquina do front-end • conf lista a configuração das máquinas virtuais • hostname • dtiv (pvmd task id - identificador da tarefa pvmd) • arch (tipo de arquitetura) • speed (velocidade relativa)
Comandos • help mostra todos os comandos e suas funções • help comando • id exibe o id do console • jobs lista os processos em execução • kill usado para encerrar os processos do PVM • mstat exibe o status dos hosts especificados • ps -a lista todos os processos na máquina virtual, sua localização, seus id’s e os pais dos id’s • quit sai do console • reset encerra todos os processos exceto os consoles e reinicia as tabelas internas e filas de mensagens do PVM