lunes, 4 de octubre de 2010

Configurando un Cluster en Scientific Linux

Pasos a seguir para configurar un cluster en Scientific Linux


1) Instalación del sistema operativo scientific Linux 5.1 (ó Versión más actual)


2) Configuración NFS
2.1.- Configuración Paso a paso NFS en el Nodo Server

  1. Editar el archivo /etc/hosts agregando (esto se hace en todos los nodos):
    150.185.75.100        master      master.ccpdcluster.ciens.ucv.ve
    192.168.1.1             beowulf01 beowulf01.ccpdcluster.ciens.ucv.ve
    192.168.1.2             beowulf02 beowulf02.ccpdcluster.ciens.ucv.ve
    192.168.1.3             beowulf03 beowulf03.ccpdcluster.ciens.ucv.ve
    192.168.1.4             beowulf04 beowulf04.ccpdcluster.ciens.ucv.ve
    192.168.1.5             beowulf05 beowulf05.ccpdcluster.ciens.ucv.ve
    192.168.1.6             beowulf06 beowulf06.ccpdcluster.ciens.ucv.ve
    192.168.1.7             beowulf07 beowulf07.ccpdcluster.ciens.ucv.ve
    192.168.1.8             beowulf08 beowulf08.ccpdcluster.ciens.ucv.ve

    Nota: En los hosts esclavos hay que dejar
    127.0.0.1 localhost
   
    2. Editar el archivo /etc/exports agregando
    /home 192.168.1.1/255.255.0.0(rw,sync,no_root_squash)
    /usr/local/ 192.168.1.1/255.255.0.0(rw,sync,no_root_squash)

    3. Ejecutamos:
    exportfs -ra

    4. Detener el firewall
    service iptables stop 

    5. O agregamos una entrada al firewall 
    iptables -A INPUT -p tcp --dport 32771, 111 and 2049 -j ACCEPT

    6.Reiniciamos el servicio
    service nfs restart

    7. Para que el servicio se inicie siempre luego de reiniciar ejecutamos:
    chkconfig nfs on

    8. Para que iptables no se levante
    chkconfig iptalbes off


2.2.- Configuracion Paso a Paso NFS en los Nodos Clients

    1. Editar el arhivo /etc/fstab agregando:
    192.168.1.1:/usr/local/ /usr/local/ nfs defaults 0 0
    192.168.1.1:/home /home nfs defaults 0 0

    2. Ejecutar:
    mount -t nfs -a

    3.Reiniciamos el servicio
    service nfs restart

    debian: /etc/init.d/portmap restart
               /etc/init.d/nfs-common restart

    4. Para que el servicio se inicie siempre luego de reiniciar ejecutamos:
    chkconfig nfs on
    
Nota: Para verificar que NFS esta funcionando creamos una carpeta en /home y vemos que este replicada en todos los nodos.

Nota2: Para reiniciar shutdown-r now

links:
http://tldp.org/HOWTO/NFS-HOWTO/server.html
http://www.linuxconfig.org/HowTo_configure_NFS
http://www.angelfire.com/linux/linuxclusters/nfs.htm

http://www.ubuntugeek.com/nfs-server-and-client-configuration-in-ubuntu.html

Nota: Tuvimos problemas para conectar los esclavos al nodo maestro, el problema era que el firewall bloqueaba las peticiones de los esclavos.
http://bbs.archlinux.org/viewtopic.php?id=41761 -> aquí hablan sobre el error que había
http://www.linuxquestions.org/questions/linux-networking-3/nfs-server-client-cannot-mount-remote-file-system-136327/

3) Configuración de NIS 

 NOTA: To start NIS services at bootup time run 
            ntsysv
3.1.- Configuracion Paso a Paso de NIS en el Nodo Server
   
    1. Indicar el NIS DOMAIN NAME
    nisdomainname ccpdcluster.ciens.ucv.ve

     
2. Editar el archivo /etc/sysconfig/network agregando:
    NISDOMAIN="ccpdcluster.ciens.ucv.ve"

    3. Reiniciar la interfaz de red
    service network restart

    4. Asegurarme que portmapper este corriendo con:
    rpcinfo -p localhost

    5. Creamos el archivo en /var/yp/ que se llame securenets agregando:
    255.0.0.0 127.0.0.0
    255.255.255.0 192.168.1.0

    6. Descargar el paquete RPM ypserv desde aca:
    http://dir.filewatcher.com/d/RedHat/9/i386/System%20Environment/Daemons/ypserv-2.6-2.i386.rpm.119917.html

    7. Instalamos el paquete:
    rpm -ivh ypserv-2.6-2.i386.rpm

    8. Editamos el archivo /etc/yp.conf agregamos:
    ypserv 127.0.0.1

    9. Inicializamos los servicios:
    service yppasswdd start
     service ypserv start

    chkconfig yppasswdd on
     chkconfig ypserv on


    9. Ejecutamos:
    /usr/lib/yp/ypinit -m
    y agregamos cada uno de los host.
   

3.2.- Configuracion Paso a Paso de NIS en los Nodos Clients

    1. Indicar el NIS DOMAIN NAME
    nisdomainname ccpdcluster.ciens.ucv.ve

     
2. Editar el archivo /etc/sysconfig/network agregando:
    NISDOMAIN="ccpdcluster.ciens.ucv.ve"
  
    3. Reiniciar la interfaz de red
    service network restart

    4. Editamos el archivo /etc/yp.conf agregamos:
    domain ccpdcluster.ciens.ucv.ve server 192.168.1.1
   
    5. Iniciamos el servicio
    service ypbind start
    chkconfig ypbind on

    6. Verificamos que este corriendo:
    rpcinfo -u localhost ypbind

    7. Creamos el archivo hosts.conf en /etc y agregamos
    order hosts, nis, bind
  
    8. Editamos el archivo /etc/nsswitch.conf
    passwd:     files nis
    shadow:     files nis
    group:      files nis
    hosts:      files dns
    netgroup:   files nis
    automount:  files nis
    aliases:    files nis
  
    Nota: Para crear un usuario ejecutamos en modo root:
   
    1. useradd -m -s /bin/bash -d /home/nuevo nuevo
    2. passwd nombre
    3. cd /var/yp/
    4. make
    5. service ypserv restart
  

links:
http://www.linux-nis.org/
http://coewww.rutgers.edu/www1/linuxclass2003/lessons/lecture5.html
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch30_:_Configuring_NIS
http://www.freelab.net/unix/hp-ux/chap11_nis.html
http://linuxhelp.blogspot.com/2005/06/nis-client-and-server-configuration.html
http://penguin.triumf.ca/recipes/nis-auto/
http://www.angelfire.com/linux/linuxclusters/nis.htm

PAQUETES RPM





4) Configuracion de rsh-server en los nodos
 (si vamos a utlizar rsh)

    1. Descargar los siguientes rpm's desde la siguiente pagina:
    ftp://ftp.scientificlinux.org/disk/disk4/linux/scientific/46/i386/SL/RPMS/ncurses4-5.0-12.i386.rpm
    http://ftp.scientificlinux.org/linux/scientific/40/i386/errata/SL/RPMS/repodata/repoview/rsh-0-0.17-25.3.html

    2. Para copiar el paquete en los otros nodos ejecutamos:   
    scp ncurses4-5.0-12.i386.rpm <nombredelnodo>:
    scp  rsh-server-0.17-24.1.i386.rpm <nombredelnodo>:
    scp rsh-0.17-25.3.i386.rpm <nombredelnodo>:

    3. Lo instalamos con:
    rpm -ivh ncurses4-5.0-12.i386.rpm
    rpm -ivh rsh-server-0.17-24.1.i386.rpm
    rpm -ivh rsh-0.17-25.3.i386.rpm

    4. Si hay conflictos eliminar con el comando
    rpm -e rsh-0.17-25.4

    5. Agregar 'rsh' and 'rlogin' a /etc/securetty

   6. Añadir todas las IPs a /root/.rhosts, y hacemos chmod 600 /root/.rhosts y lo añadimos a la carpeta /etc/skel

   7. Setear "disable = no" in /etc/xinetd.d/rsh y /etc/xinetd.d/rlogin

   8. Ejecutamos:
    chkconfig xinetd on
   
   9. Ejecutamos:
    /etc/init.d/xinetd restart

links:
http://www.cygwin.com/ml/cygwin/2005-08/msg00382.html
http://seriss.com/rush-current/misc/rsh-config.html
http://ubuntuforums.org/showthread.php?t=276769

5) Configurar SSH en todos los nodos para que no pidan contraseña:

    1. Creamos una carpeta que se llame .ssh en /etc/skel
    mkdir .ssh
    cd .ssh

    2. Ejecutamos:
    ssh-keygen -t rsa -f  id_rsa
   
    3. Nos va a pedir que introduzcamos una palabra la dejamos en blanco.

    4. Copiamos.
    cat id_rsa.pub >> authorized_keys
  
     
5. Por ultimo:
    chmod 600 *
links:
http://www.fisica.unam.mx/ifunam_espanol/clusters/ollin_manual.php
http://celtha.blogspot.com/2008/08/coenxin-mediante-ssh-sin-password.html

6) Configurar MPICH

    1. Descomprimir el archivo comprimido con:
    tar xvzf mpich2-<version>.tar
    2. Creamos una carpeta para mpich:
    mkdir mpich2

    3. Nos metemos dentro de la carpeta y ejecutamos:
    ./configure --prefix=/usr/local/mpich2

    4. Ejecutamos
    Make
     Make install

  
    5. Creamos el archivo mpd.hosts en la carpeta /etc/skel y añadimos:
    node01
    ...
    nodeNN

    6. Creamos el archivo .mpd.conf (solo con permiso 600) en la carpeta /etc/skel y añadimos:
    MPD_SECRET=cluster
MPD_PORT_RANGE=55000:56000

    7. Setear las variables de entorno
    source .bash
    source .profile


    8. Editamos el archivo /usr/local/mpich2/bin/mpdboot cambiando: (solo si estamos usando rsh)
     rshCmd = 'ssh' por  rshCmd = 'rsh' 
  
    9. Para probar mpich:
    a) Levantamos el proceso mpd:
    mpd&
    b) Ejectumos:
    mpdboot -n <nro_nodos>

     c) Para verificar si los nodos estan activos:
    mpdtrace
 
    d) Para bajar todos los nodos
    mpdallexit
 
    e) Para compilar:
    mpicc prog.c -o prog
 
    f) Para ejecutar:
    mpirun -n 6 ./prog