Anda di halaman 1dari 17

CLUSTER DE ALTO REDIMIENTO PARA OPENSEES

Antecedentes:

Problema:
Solución:

Introducción
A partir de los sesenta el estudio de la ingeniería sísmica ha tenido gran importancia en el análisis de las
estructuras físicas con el objetivo de prevenir cualquier catástrofe mediante el levantamiento de obras que
resistan aceptablemente los sismos.

Con estos fines, actualmente la ingeniaría sísmica integra muchas disciplinas, entre ellas: la sismología, la
dinámica de estructuras y de suelos, el diseño estructural, las propiedades dinámicas lineales y no lineales, el
comportamiento de los materiales, y entre otras la informática. Sin embargo el conocimiento total del tema,
muy posiblemente esta fuera del alcance de los profesionales involucrados en esta área, pero, la
especialización en temas concretos nos da la pauta a la solución de determinados problemas prácticos,
ampliándonos a muchas posibilidades de investigación. Por ello, la Universidad Técnica Particular de Loja
que a lo largo de su vida institucional, ha ejecutado innumerables proyectos enmarcados en la docencia,
investigación y extensión, contribuyendo al desarrollo general de carácter científico, hoy emprende en la
promoción de nuevas formas de diseño, análisis y levantamiento estructural con criterios sísmicos mediante la
utilización de herramientas informáticas.

En la Solución del Cluster de Alto Rendimiento soluciona todos los problemas presentados en una simulación
secuencial, ya que se paraleliza las tareas permitiendo emplear un determinado número de computadoras
como si fuera uno solo (Super-Computador).

Descripción de la Solución
El Cluster de Alto Rendimiento fue desarrollado desde una visión innovadora utilizando un conjunto de
herramientas técnicas. Todo empezó con la búsqueda del mejor ambiente para implementar el Cluster.

Hay que tener en cuenta que OpenSees emplea algunas herramientas (MPICH2, TCL/TK, PETSC) para su
funcionamiento en sistemas UNIX. La selección de la plataforma estuvo sujeta a estas herramientas. Luego de
una serie de pruebas se opto por Ubuntu 9.04 como sistema base para todo el Cluster.

Una vez seleccionada el sistema base se procedió a compilar a OpenSeesMP sobre una arquitectura de 32 bits
en un equipo clon con 4 núcleos, esto con el fin de comparar los tiempos de respuesta. Luego de haber
realizado y corregir algunos problemas de la compilación de OpenSeesMP se procedió a implementar el
cluster con MPICH2. Para poder realizar una réplica de las herramientas compiladas en el nodo maestro se
empleo un servidor NFS el cuál se monta automáticamente en cada uno de los nodos al momento de
inicializarlas.

Es indespensable emplear una comunicación segura y autenticación automática entre los nodos para facilitar
la administración del Cluster. Esto se logra creando una sola cuenta de usuario (mpiu) y empleando llaves de
comunicación RSA.
El paso final es monitorear a los nodos y servidor del Cluster, para realizar esto se instalo y configuro
GANGLIA.
Desarrollo de la Solución
Con el fin de desarrollar e implementar el Cluster de Alto Rendimiento para los Laboratorios Virtuales, se ha
tomado como base:

• La arquitectura del sistema operativo, y


• La factibilidad de la compilación de OpenSeesMP.

A su vez se han utilizado varias herramientas:

• MPICH2
• Tcl/Tk
• PETSC
• g++
• gfortran
• gcc
• MYSQL
• Librerias BLAS/LAPACK

Todas las herramientas necesarias para la compilación de OpenSeesMP son OpenSource.

• MPICH2: Es la herramienta que permite el paso de mensajes para aplicaciones de


memoria distribuida que utilizan computación paralela. La principal característica de esta
librería es su adaptabilidad a un gran número de plataformas, incluyendo clusters de
workstations y procesadores masivamente paralelos (MPP).
[http://www.cesca.es/es/sistemes/que/llibreries.html]
• Tcl (Tool Command Language): Es un lenguaje de programación interpretado y
multiplataforma, cuyo intérprete recibe el nombre de tclsh, que tiene como una de sus
principales características la gran facilidad con la que se pueden implementar funciones
C/C++ que pasar a ser nuevas instrucciones del intérprete. Se utiliza principalmente para el
desarrollo de prototipos, aplicaciones “script”. La combinación de Tcl con Tk (Tool Kit) es
conocida como Tcl/Tk, y se la utiliza para la creación de interfaces gráficas. [http://tcl-
tk.softonic.com/linux], [http://es.wikipedia.org/wiki/Tcl]
• PETSC: Es un conjunto de algoritmos y estructuras de datos para la solución de
problemas en ciencia e ingeniería. Aplicable a problemas modelados por ecuaciones
diferenciables en derivadas parciales de gran escala, que requieren cómputo en paralelo.
Emplea MPI para la comunicación entre procesos.
• BLAS/LAPACK: Son dos librerías para realizar operaciones básicas de algebra
lineal. Estas librerías se usan ampliamente en el cálculo científico
[http://ibercivis.blogia.com/2010/030101-lapack-y-blas-en-cuda..php]
• BLAS (Basic Linear Algebra Subprograms): Pilares básico de la operaciones con
escalares, matrices y vectores en FORTRAN.
[http://www.cesca.es/es/sistemes/que/llibreries.html]
• LAPACK: Librería transportable de rutinas en FORTRAN para resolver los
problemas más comunes en álgebra numérica línea. Ha sido diseñada para ser eficiente en
una amplia gamma de superordenadores. [http://tobal.cymaho.com/?p=140]
CONCIDERACIONES GENERALES:

HARDAWARE:

Los equipos tienen la misma arquitectura, y las mismas características de componente. Esto ha dado
facilidades al momento de compartir configuraciones y archivo.

A continuación se listan los componentes de los 10 equipos clones:

• Procesador INTEL Core 2 Quad 8200 2.33 Ghz


• MAINBOARD INTEL DG31TY
• Memoria RAM 1 GB DDR2
• Disco Duro 160 GB. Serial Ata 7200 rpm

SISTEMA OPERATIVO:

La plataforma seleccionada para implementar el Cluster HP fue Ubuntu Juanty Jackalope 9.04, se opto por
esta versión por la velocidad del nuevo sistema de archivos ext4 y por todas las facilidades que brinda para la
configuración de las herramientas necesarias para la compilación de OpenSeesMP.

LENGUAJES DE PROGRAMACIÓN:

Por la facilidad de programación de modelos estructurales y la facilidad de interacción con OpenSees se


utiliza el lenguaje Tcl. Tcl es un lenguaje multiplataforma, lo cual ha permitido migrar aplicaciones que
anteriormente se los tenía funcionando en el Sistema Operativo Windows XP.

De acuerdo a la herramienta MPICH2, los lenguajes de programación son: Tcl, C (Gcc - gnu) y Fortran.

HERRAMIENTAS PARA PROGRAMACIÓN:

Entre estos tenemos:


- Librerías para programación distribuida de MPICH2. Un requermiento para el uso apropiado
es el de rsh/ssh sin contraseña.
- Librerías matemáticas: Blas (Basic Linear Algebra Subprogram) y Lapack (Linear Algebra
Package)

HERRAMIENTAS DE MONITOREO:

Una de las partes importantes es el monitoreo del estado de los nodos que conforman el Cluster. Para esta fase
se útilizo GANGLIA para realizar un monitoreo en tiempo real.

OTROS ASPECTOS (Creación de Usuarios, Directorios Compartidos, Servicios de Red)


GUIAS DE CONFIGURACION E INSTALACION
INSTALACION Y CONFIGURACION DE CLUSTER
Luego de instalar el sistema base Ubuntu Jaunty Jackaplope 9.04 (Es recomedable
realizarlo con conexion a la Internet). Procedemos a seguir

las siguientes instrucciones para configurar el cluster.

I. EDITAR EL ARCHIVO HOSTS PARA AÑADIR EL NOMBRE DEL MAESTRO Y


LOS NODOS.

Abrir una terminal y acceder como administrador

user@ub1:~# sudo -i

2. Escribir las siguientes instruccion (esta se aplicara tanto al maestro como en los nodos)

root@ub1:~# gedit /etc/hosts

Agregar la informacion de IP y HostName de todos los equipos.

127.0.0.1 localhost
192.168.10.1 ub1 #Nodo Maestro
192.168.10.2 ub2
192.168.10.3 ub3
192.168.10.4 ub4
192.168.10.5 ub5
192.168.10.6 ub6
192.168.10.7 ub7
192.168.10.9 ub9

# The following lines are desirable for IPv6 capable hosts


::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

II.- INSTALANDO EL NFS (Network File System)

Se instala en el nodo maestro; ejecutando la siguiente instruccion:

root@ub1:~#apt-get install nfs-kernel-server

III.- CREAR UN DIRECTORIO EN MAESTRO Y ESCLAVOS LLAMADO MIRROR

Se ejecuta la siguiente instruccion:


root@ub1:~# mkdir -p /mirror/mpiu

Ejecutar la siguiente instruccion para escribir en el archivo exports ubicada en sistema de


archivos

root@ub1:~# echo /mirror *(rw,sync) >> /etc/exports

IV.- MONTANDO MAESTRO EN NODOS ESCLAVOS

Ejecutar la siguiente instruccion en todos los nodos esclavos:

root@ub2:~# mount ub1:/mirror /mirror


root@ub3:~# mount ub1:/mirror /mirror
....
root@ub10:~# mount ub1:/mirror /mirror

Para no tener que realizar esto cada vez que se reinicie uno de los nodos, vamos a
configurar el archivo /etc/fstab para que se monte

automaticamente el directorio "/mirror". Lo configuramos ejecutando las siguientes


instrucciones solamente en los nodos esclavos:

root@ub2:~# echo ub1:/mirror /mirror nfs 0 0 >> /etc/fstab


root@ub3:~# echo ub1:/mirror /mirror nfs 0 0 >> /etc/fstab
...
root@ub10:~# echo ub1:/mirror /mirror nfs 0 0 >> /etc/fstab

V.- DEFINICION DE USUARIO PARA CORRER PROGRAMAS EN MPI. EL


USUARIO SE CREARA EN TODOS LOS NODOS

Ejecutar la siguiente instruccion en todos los nodos:

root@ub1:~# useradd --home /mirror/mpiu --shell /bin/bash -u 1002 mpiu


Luego de crear el usuario se ejecuta en el nodo maestro para darle privilegios al usuario
mpiu en el directorio mirror.

root@ub1:~# chown -R mpiu:root /mirror

VI.- INSTALANDO EL SSH SERVER

Esta instalacion solo se realizara en el nodo maestro. Lo instalamos ejecutando el siguiente


comando:

root@ub1:~# apt-get install openssh-server

VII.- GENERACION DE LLAVE PARA COMUNICACION SIN PASSWORD ENTRE


NODOS

root@ub1:~# su - mpiu
Ya que nos hemos cambiado al usuario entonces generamos la llave

mpiu@ub1:~$ ssh-keygen -t dsa


Se solicitara informacion, solo le daremos enter a todas las opciones que se nos pida.

A continuacion copiaremos la llave al authorized_keys, pero antes nos cambiamos al


directorio .ssh

mpiu@ub1:~$ cd .ssh
La llave generada se copia con la siguiente instruccion:

mpiu@ub1:~$ cat id_dsa.pu >> authorized_keys


Ya que el home de mpiu se encuentra en todos los nodos no es necesario correr este
comando en todos los nodos.

Para saber si el ssh esta corriendo en los nodos esclavos se ejecuta la siguiente instruccion:

mpiu@ub1:~$ ssh ub2

Si no solicita contraseña esta listo para comunicarse entre los nodos sin que nos pida
password. Si luego de haber hecho nos sigue pidiendo password entonces debemos checar
si el ssh esta corriendo en el maestro para eso nos vamos a:
System/Administration/Services, aqui nos tiene que aparecer ssh.

VIII.- INSTALANDO GCC, GFORTRAN

Lo instalaremos ejecutando la siguiente instrucción, este se instala en todos los nodos.

root@ub1:~# apt-get install build-essential

IX.- INSTALANDO Y CONFIGURANDO MPICH2

Crearemos un directorio con el nombre mpich2 con la siguiente instrucci[on:

root@ub1:~# mkdir /mirror/mpich2

Descargamos el paquete mpich2-1.0.8p1.tar.gz desde


http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads.

Desde el lugar donde lo hayamos descargado lo descomprimimos ejecutando la siguiente


instrucción:

root@ub1:/cluster/instaladores# tar -xzvf mpich2-1.0.8p1.tar.gz

Accedemos al directorio generado:

root@ub1:/cluster/instaladores# cd mpich2-1.2.1
Ya que nos hemos cambiado al directorio, procederemos a configurar, compilar e instalar
mpich2 en el directorio /mirror/mpich2, para ello vamos a ejecutar las siguientes
instrucciones:

root@ub1:/cluster/instaladores# ./configure --prefix=/mirror/mpich2


root@ub1:/cluster/instaladores# make
root@ub1:/cluster/instaladores# make install
Ya que se ha instalado MPICH2 agregaremos las siguientes lineas a este archivo
/mirror/mpiu/.bashrc

Para abrir el .bashrc lo haremos con la siguiente instruccion:

root@ub1:~# su - mpiu
mpiu@ub1:~$ sudo gedit .bashrc
export PATH=/mirror/mpich2/bin:$PATH
export LD_LIBRARY_PATH="/mirror/mpich2/lib:$LD_LIBRARY_PATH"

Ya que hemos editado el .bashrc entonces editaremos el archivo enviroment. En este


archivo se quiere imprimir la siguiente linea: /mirror/mpich2/bin que se describe en el
comando de abajo.

mpiu@ub1:~$ sudo echo /mirror/mpich2/bin >> /etc/enviroment


Si no te deja puedes hacerlo con la cuenta de root.

Hecho esto, reiniciamos la maquina (nodo maestro) para que se ejecuten los cambios
realizados.

Ahora los que se va hacer es ejecutar los siguiente comandos en el nodo maestro y se
obtiene la ruta eso quiere decir que MPICH esta funcionando.

mpiu@ub1:~$ which mpd


/mirror/mpich2/bin/mpd
mpiu@ub1:~$ which mpiexec
/mirror/mpich2/bin/mpiexec
mpiu@ub1:~$ which mpirun
/mirror/mpich2/bin/mpirun

X.- CREACION DE ARCHIVO DE NOMBRE cluster.nodes EN EL DIRECTORIO


HOME DEL USUARIO mpiu

En el cluster.nodes se agregara los nodos que participaran en el cluster, para realizar esto se
debe ejecutar las siguientes instrucciones:

mpiu@ub1:~$ sudo gedit cluster.nodes

Abierto el archivo se procedera a agregar los nodos.

ub1
ub2
ub3
ub4
ub5
ub6
ub7
ub8
ub9
ub10

Despues creas o editas un archivo .mpd.conf en el mismo directorio, par ello se ejecuta las
siguientes instrucciones:

mpiu@ub1:~$ echo secretword=mpiucluster >> ~/.mpd.conf


mpiu@ub1:~$ chmod 600 .mpd.conf

Con estas instrucciones escribes la palabra secreta para el archivo y le asignas privilegios.
Estos dos pasos solo se realiza en el nodo maestro.

XII.- PRUEBAS DE MPICH2

Primero corremos el demonio mpd en el cluster

mpiu@ub1:~$ mpdboot -n 10 -f ~/cluster.nodes

Donde 10 es el numero de nodos que posee el Cluster. Si todo va bien hasta aqui, con la
siguiente instruccion podremos observar los nodos que estan funcionando en el cluster.

mpiu@ub1:~$ mpdtrace
ub1
ub2
...
ub10

COMPILACION DE OPENSEES-MP

Todos los paquetes que se listan a continuacion son necesarios para la compilacion:
OPENSEES.- Pagina de descarga:
http://opensees.berkeley.edu/OpenSees/developer/download.php Enlace: (stable.tar.gz
Version Estable 2.1.0)

TCL/TK.- Pagina de descarga: http://www.tcl.tk/software/tcltk/download.html Enlaces:


(tcl8.5.8-src.tar.gz, tk8.5.8-src.tar.gz)
PETSC.- Pagina de descarga: http://www.mcs.anl.gov/petsc/petsc-2/download/index.html
Enlace: (petsc-2.2.1.tar.gz)
El procedimiento que a continuación se detalla se lo realizo como usuario "root".

I.- CREACION DE DIRECTORIOS PARA LA COMPILACION DE PAQUETES

Los directorios donde se generarán las librerías y binarios de OpenSees son bin y lib. Para
crear estos directorios escribimos las siguientes instrucciones en el nodo maestro.
root@ub1:~# mkdir /cluster
root@ub1:~# cd /cluster
root@ub1:/cluster# mkdir bin lib

Adicional a esto vamos a crear los directorio donde se alojaran las librerias de Tcl, Tk y
PETSC en la carpeta /mirror
root@ub1:/cluster# mkdir /mirror/tcl-tk /mirror/petsc-2.2.1

II.- DESCOMPRESION DE PAQUETES

Desde el lugar donde se encuentren los paquetes procedemos a descomprimirlos empleando


las siguientes instrucciones:

root@ub1:/cluster/instaladores# tar -xzvf OpenSees2.1.0.tar.gz


root@ub1:/cluster/instaladores# tar -xzvf tcl8.5.7-src.tar.gz
root@ub1:/cluster/instaladores# tar -xzvf tk8.5.7-src.tar.gz
root@ub1:/cluster/instaladores# tar -xzvf v2.2.1.petsc.tar.gz

III.- COMPILACION E INSTALACION DE Tcl

Antes de realizar la compilación de los paquete debemos instalar las siguientes librerias que
son necesarios para una correcta compilación:

root@ub1:/cluster/instaladores# apt-get install build-essential gfortran


gfortran-4.3 libg2c libpng12-dev libgfortran3 libpthread-stubs0
libpthread-stubs0-dev libmysql++-dev libmysql++3 libblas-dev liblapack-
dev

Ahora si procedemos a compilar Tcl.

root@ub1:/cluster/instaladores# cd /cluster/instaladores/tcl8.5.7/unix
root@ub1:/cluster/instaladores/tcl8.5.7/unix# ./configure
--prefix=/mirror/tcl-tk --enable-threads --enable-shared --enable-symbols
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make test
root@ub1:/cluster/instaladores/tcl8.5.7/unix# make install

IV.- COMPILACION E INSTALACION DE Tk


El proceso es similar al anterior pero hay que tener cuidado en la segunda linea donde se
parametriza el directorio donde se encuentran las librerias de tcl (/mirror/tcl-tk/lib)

root@ub1:/cluster/instaladores/tcl8.5.7/unix# cd
/cluster/instaladores/tk8.5.7/unix
root@ub1:/cluster/instaladores/tk8.5.7/unix# ./configure --with-
tcl=/mirror/tcl-tk/lib --prefix=/mirror/tcl-tk
root@ub1:/cluster/instaladores/tk8.5.7/unix# make
root@ub1:/cluster/instaladores/tk8.5.7/unix# make test
root@ub1:/cluster/instaladores/tk8.5.7/unix# make install
V.- COMPILACION E INSTALACION DE PETSC

Para la compilación debemos ejecutar las siguientes instrucciones:

root@ub1:/cluster/instaladores/tk8.5.7/unix# cd
/cluster/instaladores/petsc-2.2.1
root@ub1:/cluster/instaladores/petsc-2.2.1# export PETSC_DIR=$PWD
root@ub1:/cluster/instaladores/petsc-2.2.1# export PETSC_ARCH=linux-gnu
root@ub1:/cluster/instaladores/petsc-2.2.1# ./config/configure.py --with-
cc=gcc --with-cxx=0 --with-mpi-dir=/opt/mpich2 --with-blas-
lib=/usr/lib/libblas.a --with-lapack-lib=/usr/lib/liblapack.a
root@ub1:/cluster/instaladores/petsc-2.2.1# make all
root@ub1:/cluster/instaladores/petsc-2.2.1# make test

VI.- COMPILACION DE OPENSEES-MP

Accedemos al directorio donde se descomprimió OpenSees


root@ub1:/cluster/instaladores/petsc-2.2.1# cd /cluster/OpenSees

Ahora procederemos a compilar OpenSeesMP emplenado la siguiente instrucción:


root@ub1:/cluster/OpenSees# make

Si todo va bien, el ejecutable se encuentra en el siguiente directorio:


root@ub1:/cluster/OpenSees# cd /cluster/bin

Para ejecutar OpenSeesMP empleamos el siguiente comando


root@ub1:/cluster/bin# ./OpenSees

Solo en el caso de tener problemas, o de realizar alguna modificación en el Makefile.def


debe ejecutar las siguientes instrucciones:
root@ub1:/cluster/bin# cd /cluster/OpenSees
root@ub1:/cluster/OpenSees# make wipe
root@ub1:/cluster/OpenSees# make clean

Las dos ultimas lineas permite eliminar todos los archivos generados en la compilación de
OpensSeesMP. Para volver a obtener una nueva versión ejecutamos nuevamente el
comando "make".

VII.- PRUEBAS DE OPENSEES-MP EN EL CLUSTER

En la pagina de OpenSees y especificamente en el enlace


http://opensees.berkeley.edu/OpenSees/workshops/parallel/handouts.tar.gz (OpenSees
Parallel Workshop) podemos encontrar los ejemplos que necesitamos para esta fase de
pruebas.

El archivo que se descargo lo vamos a copiar y descomprimir en la carpeta mirror:

root@ub1:~# cp handouts.tar.gz /mirror


root@ub1:~# tar -xzvf handouts.tar.gz
Ahora vamos a copiar el binario de OpenSeesMP a la carpeta /mirror/handouts.

root@ub1:~# cp /cluster/bin/OpenSeesMP /mirror/handouts/

Son necesarios algunos permisos para que el usuario "mpiu" pueda ejecutar el
OpenSeesMP. Con la siguiente instrucción logramos que el usuario mpiu tenga control de
los nuevos archivos que se agregarón a la carpeta /mirror

root@ub1:~# chown -R mpiu:root /mirror

Accedemos a la cuenta de mpiu y comprobamos que los nodos estén levantados y listos
para funcionar.
root@ub1:~# su - mpiu
mpiu@ub1:~$ mpdtrace
ub1
ub2
...
ub10

En el caso de no lograr ver los nodos que están conectados debemos emplear el comando
"mpdboot" que se indico en la parte de configuración del cluster.

Si todo va bien vamos a proceder a realizar la primera prueba de OpenSeesMP en el cluster:


mpiu@ub1:~$ cd /mirror/handouts
mpiu@ub1:/mirror/handouts$ mpirun -np 40 ./OpenSeesMP ex1.tcl

OpenSees -- Open System For Earthquake Engineering Simulation


Pacific Earthquake Engineering Research Center -- 2.1.0

(c) Copyright 1999,2000 The Regents of the University of


California
All Rights Reserved
(Copyright and Disclaimer @
http://www.berkeley.edu/OpenSees/copyright.html)

Hello World Process: 0


Process Terminating 0
Hello World Process: 1
Process Terminating 1
Hello World Process: 7
Hello World Process: 15
Hello World Process: 31
Hello World Process: 16
Hello World Process: 18
Hello World Process: 38
Hello World Process: 37
Hello World Process: 17
Hello World Process: 36
Process Terminating 7
Process Terminating 31
Process Terminating 32
Process Terminating 15
Process Terminating 18
Process Terminating 37
Process Terminating 17
Process Terminating 36
Hello World Process: 10
Hello World Process: 21
Hello World Process: 22
Hello World Process: 9
Hello World Process: 19
Hello World Process: 20
Hello World Process: 5
Hello World Process: 6
Process Terminating 9
Process Terminating 19
Process Terminating 20
Process Terminating 10
Process Terminating 21
Process Terminating 22
Process Terminating 6
Hello World Process: 14
Hello World Process: 29
Hello World Process: 30
Hello World Process: 13
Hello World Process: 28
Hello World Process: 27
Process Terminating 27
Process Terminating 13
Process Terminating 28
Process Terminating 14
Process Terminating 29
Process Terminating 30
Hello World Process: 32
Hello World Process: 8
Process Terminating 8
Hello World Process: 39
Process Terminating 39
Hello World Process: 4
Hello World Process: 3
Process Terminating 35
Hello World Process: 35
Process Terminating 3
Process Terminating 38
Hello World Process: 2
Hello World Process: 11
Hello World Process: 23
Hello World Process: 24
Hello World Process: 26
Hello World Process: 25
Hello World Process: 12
Process Terminating 2
Process Terminating 5
Process Terminating 11
Process Terminating 23
Process Terminating 24
Process Terminating 25
Process Terminating 12
Process Terminating 26
Hello World Process: 33
Process Terminating 16
Process Terminating 33
Hello World Process: 34
Process Terminating 34
Process Terminating 4

En el comando anterior, 40 es el número de procesos. Se escribió 40 para que cada proceso


sea atendido por un procesador.

Dentro de la carpeta "handouts" existen 7 ejemplos mas para realizar pruebas.

MONITOREO DEL CLUSTER CON GANGLIA

Antes de empezar vamos a descargar el paquete de ganglia desde http://ganglia.info/?


page_id=66. En nuestro caso trabajaremos con la versión 3.1.7

I.- COMPILACION E INSTALACION DE GANGLIA

Ejecutamos la siguiente instrucción para instalar las dependencias de ganglia e instalar el


servidor web Apache.
root@ub1:~# apt-get install rrdtool librrds-perl librrd2-dev php5-gd
libapr1-dev libconfuse-dev libexpat1-dev python-dev apache2

Instalado las dependencias de ganglia continuaremos con la compilación del paquete que se
desacargo.
root@ub1:/cluster/instaladores# tar zxvf ganglia*
root@ub1:/cluster/instaladores# cd ganglia*
root@ub1:/cluster/instaladores/ganglia-3.1.7# ./configure --with-gmetad
root@ub1:/cluster/instaladores/ganglia-3.1.7# make
root@ub1:/cluster/instaladores/ganglia-3.1.7# make install

Ahora procederemos a copiar el sitio web que se genero al compilar ganglia al directorio por
defecto del servidor web Apache en una nueva carpeta que la nombraremos ganglia.

root@ub1:/cluster/instaladores/ganglia-3.1.7# mkdir /var/www/ganglia


root@ub1:/cluster/instaladores/ganglia-3.1.7# cp web/* /var/www/ganglia

II.- EJECUCIÓN DE GMOND (Ganglia Monitor Daemon)


El primer paso es generar el archivo de configuracion y adecuarlo para nuestro sitio.
root@ub1:/cluster/instaladores/ganglia-3.1.7# gmond --default_config >
/etc/ganglia/gmond.conf

Abrimos /etc/ganglia/gmond.conf, y cambiamos las lineas:


cluster {
name = "unspecified"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

Nosotros lo dejamos asi:


cluster {
name = "CLUSTER_OPENSEES"
owner = "UTPL_UCG"
latlong = "unspecified"
url = "unspecified"
}

Para iniciar gmond ejecutamos la siguiente instrucción:


root@ub1:~# gmond

III.- EJECUCIÓN DE GMETAD (Ganglia Meta Daemon)

Gmetad necesita de un archivo de configuración. Este archivo lo podemos encontrar en el


paquete de ganglia que descargamos. Este lo vamos a mover a /etc/ganglia/gmetad.conf.
root@ub1:/cluster/instaladores/ganglia-3.1.7# cp gmetad/gmetad.conf
/etc/ganglia/gmetad.conf

Abrimos /etc/ganglia/gmetad.conf y habilitamos la siguiente línea #setuid_username


"nobody" y la dejamos de la siguiente forma: setuid_username "mpiu"

El directorio donde se almacenaran los archivos rrd es necesario crearlo.


root@ub1:~# mkdir -p /var/lib/ganglia/rrds/
root@ub1:~# chown -R mpiu:root /var/lib/ganglia/rrds/

Para ejecutar el demonio de gmond vamos a ejecutar la siguiente instrucción:


root@ub1:~# gmetad

II.- CONFIGURACION DE GMOND EN LOS NODOS


Para lograr monitorear los nodos con ganglia solo es necesario que el demonio gmond este
ejecutandose.

Gmond ya fue compilado en el nodo maestro, y para hacer mas rapido la instalación y
configuración de gmond en los nodos se empleara un script.

Para generar el script vamos a crear un archivo con el nombre “setup_gmond”en /mirror
root@ub1:~# su - mpiu
root@ub1:~# cd /mirror
root@ub1:~# sudo vi setup_gmond

En el archivo agregamos lo siguiente:

for i in ub2 ub3 ub4 ub5 ub6 ub7 ub8 ub9 ub10; do
ssh $i hostname
ssh $i sudo apt-get install librrds-perl librrd2-dev libapr1-dev
libconfuse-dev libexpat1-dev python-dev
scp /usr/sbin/gmond $i:/usr/sbin/gmond
ssh $i mkdir -p /etc/ganglia/
scp /etc/ganglia/gmond.conf $i:/etc/ganglia/
scp /etc/init.d/gmond $i:/etc/init.d/
scp /usr/lib/libganglia-3.1.2.so.0 $i:/usr/lib/
scp -r /usr/lib/ganglia $i:/usr/lib/
ssh $i gmond
ssh $i update-rc.d gmond defaults
done

Para no tener problemas al momento de ejecutar el script, vamos a dar algunos permisos al
usuario mpiu en cada uno de los nodos. Estos permisos los damos como usuario root.

root@ub2:~# chown -R mpiu:root /usr/sbin /usr/lib /etc/

Y luego desde el nodo maestro ejecutamos el script empleando las siguientes instrucciones:
root@ub1:~# cd /mirror
root@ub1:/mirror# chmod 777 setup_gmond
root@ub1:/mirror# chown mpiu:root setup_gmond
root@ub1:/mirror# sudo mpiu
mpiu@ub1:/mirror$ ./setup_gmond

III.- EJECUCION DEL ADMINISTRADOR WEB DE GANGLIA


Antes de ejecutar el administrador web de ganglia en el nodo maestro, vamos a configurar
para que el demonio gmond y gmetad se inicializen automaticamente.

root@ub1:~# update-rc.d gmond defaults


root@ub1:~# update-rc.d gmetad defaults

Reiniciamos el demonio gmetad


root@ub1:~# gmetad restart

Para terminar abrimos el navegador y escribimos http://localhost/ganglia. Si no hemos


tenido ningún problema observaremos el estado de todos los nodos que se encuentran
conectados al cluster.
REFERENCIAS:
OPENSEES: http://opensees.berkeley.edu/index.php
MPICH2: http://www.mcs.anl.gov/research/projects/mpich2/
PETSC: http://www.mcs.anl.gov/petsc/petsc-as/
TCL/TCK: http://www.tcl.tk/software/tcltk/
GANGLIA: http://ganglia.sourceforge.net/

Anda mungkin juga menyukai