Datos Técnicos - División de Estudios de Posgrado e Investigación

Anuncio
INFORME FINAL DEL PROTOTIPO:
“Cluster Beowulf de 16 Nodos”
Dr. Isidro Robledo Vega
División de Estudios de Posgrado e Investigación
Instituto Tecnológico de Chihuahua
Febrero de 2009
1.- Introducción
Dentro de los proyectos ejecutados previamente por el grupo de Automática e Informática
Industrial se han desarrollado sistemas de inspección y control basados en visión de
máquina para los cuales se ha seleccionado el tipo de hardware y sus interfases para
interactuar con el sistema de gestión del taller ArquiTAM [1], generalmente los diseños del
software se han planteado sobre una plataforma de programación Windows. Preocupados
por los cambios en la orientación de los sistemas operativos de Microsoft hacia un ambiente
de casa o negocio, hemos decidido migrar el desarrollo de nuestros sistemas a plataformas
open source, que no sean dependientes del sistema Windows. En la actualidad existe un
interés particular en el uso de herramientas open source para este tipo de aplicaciones, con
muchas compañías, universidades y laboratorios deseando construir sistemas sofisticados
sin tener la necesidad de comprar costosos sistemas operativos en tiempo real [2].
Nos dimos a la tarea de buscar la plataforma hardware más apropiada para realizar la
conversión de nuestros sistemas de software sobre plataformas open source. Debido a que
el proyecto involucra otros aspectos de procesamiento que tienen que ver con cómputo
distribuido decidimos construir un sistema de multiprocesamiento que permitiera cubrir las
necesidades de las diferentes tareas involucradas. Tomado en cuenta diferentes opciones
por costo y disponibilidad decidimos construir un clúster de computadoras.
Beowulf es un tipo de clúster de computadoras para realizar “Cómputo de Alto
Desempeño”. La característica principal de un clúster Beowulf es que utiliza componentes
de bajo costo, los nodos son PCs de escritorio que se interconectan por medio de una red
Ethernet y corren con Sistema Operativo Linux de libre distribución. Es una alternativa
accesible que permite el desarrollo de cómputo científico [3].
2.- Construcción física del Clúster (Hardware)
Se decidió construir un clúster Beowulf de 16 nodos con el sistema operativo Linux,
específicamente la distribución Fedora de 64 bits, para lo cual se adquirieron los siguientes
componentes:









16 Tarjetas madre Foxconn 45CMX
16 Procesadores Pentium Core 2 Duo E6320
16 dimms de 1 GB de Memoria DDR
16 Discos duro SATA de 80 GB
16 Tarjetas de red Gigaethernet
16 gabinetes Alaska con fuente de 300 watts
1 Unidad de DVD Re-escribible
3 switches Gigaethernet de 8 puertos
3 Unidades de respaldo de energía
Se hizo el ensamble de cada uno de los 16 nodos que componen el clúster con los
componentes listados. Se realizó la conexión en red de los equipos y se designo un nodo
maestro al que se le instaló una unidad de DVD re-escribible. La Figura 1 muestra los
gabinetes que contienen los 16 nodos del clúster construido.
Figura 1.- Clúster Beowulf del Laboratorio de Sistemas Inteligentes y Visión por
Computadora.
3.- Instalación del Sistema Operativo del Clúster
El sistema operativo Linux tiene las siguientes características que lo hacen el más popular:
es monolítico, realiza procesamiento multitarea, maneja memoria virtual, maneja memoria
paginada, cumple con la especificación POSIX, se tiene libre acceso al código fuente,
soporta el ambiente de programación GNU completo incluyendo gcc, g++, g77, gdb, gprof,
emacs, y otros [4].
Existen diferentes distribuciones del sistema operativo Linux que son adecuadas para los
clústers Beowulf, las más populares son:




Red Hat (www.redhat.com)
o Enterprise Linux
o Fedora (gratuito)
Novell SuSE (www.novell.com)
o SuSE Linux Enterprise
o OpenSuSE (gratuito)
Debian (www.debian.org)
Gentoo (www.gentoo.org)




Canonical LTD - Ubuntu (www.ubuntu.com)
Turbolinux (www.turbolinux.com)
Mandriva (www.mandriva.com)
Slackware (www.slackware.com)
Se pueden obtener los medios de instalación desde el sitio web de la distribución Linux
seleccionada.
Se seleccionó Fedora de 64 bits para instalarlo en los nodos del clúster ya que es una de las
distribuciones que cuenta con mayor soporte de la comunidad de desarrollo de Linux. Se
descargó el software directamente del sitio web de Red Hat y se instaló directamente al
nodo maestro desde la unidad de DVD. Los servicios básicos instalados fueron: Servicios
de Red TCP/IP y admnistradores de red; Fuentes del kernel; Compiladores y librerías de
Lenguaje C, C++ y Fortran; editor de textos Emacs; Sistema X Windows con librerías de
desarrollo; xntp para sincronización de tiempo; autofs para compartir sistemas de archivos
automáticamente; NFS server (knfsd, knfsd-clients); ssh y rsync.
4.- Configuración del Nodo Maestro
Una vez instalado el nodo maestro se crea un directorio compartido en red con la
distribución de Linux a instalar en los nodos. Para hacer el directorio disponible por medio
de la red se agregó la siguiente línea al archivo /etc/exports
/Fedora 10.6.200.0/255.255.255.0(rw,no_root_squash)
Se usa el comando exportfs –a para poner disponible el directorio.
Para instalar la distribución de Linux en los nodos esclavos, se preparó una memoria USB
con los archivos necesarios para arrancar Linux y conectarlo al directorio NFS del nodo
maestro donde se encuentran los medios de instalación.
Se modificó el archivo /etc/hosts agregando los nombres de los nodos del cluster
10.6.200.1
10.6.200.2
10.6.200.3
10.6.200.4
10.6.200.5
10.6.200.6
10.6.200.7
10.6.200.8
10.6.200.9
10.6.200.10
10.6.200.11
10.6.200.12
lsivcc01.itchihuahua.edu.mx
lsivcc02.itchihuahua.edu.mx
lsivcc03.itchihuahua.edu.mx
lsivcc04.itchihuahua.edu.mx
lsivcc05.itchihuahua.edu.mx
lsivcc06.itchihuahua.edu.mx
lsivcc07.itchihuahua.edu.mx
lsivcc08.itchihuahua.edu.mx
lsivcc09.itchihuahua.edu.mx
lsivcc10.itchihuahua.edu.mx
lsivcc11.itchihuahua.edu.mx
lsivcc12.itchihuahua.edu.mx
lsivcc01
lsivcc02
lsivcc03
lsivcc04
lsivcc05
lsivcc06
lsivcc07
lsivcc08
lsivcc09
lsivcc10
lsivcc11
lsivcc12
10.6.200.13
10.6.200.14
10.6.200.15
10.6.200.16
lsivcc13.itchihuahua.edu.mx
lsivcc14.itchihuahua.edu.mx
lsivcc15.itchihuahua.edu.mx
lsivcc16.itchihuahua.edu.mx
lsivcc13
lsivcc14
lsivcc15
lsivcc16
Se modificaron los archivos /etc/hosts.equiv y /etc/shosts.equiv agregando los
nombres de todos los nodos del clúster con el fin de permitir sesiones con ssh y rsync
lsivcc01
lsivcc02
lsivcc03
lsivcc04
lsivcc05
lsivcc06
lsivcc07
lsivcc08
lsivcc09
lsivcc10
lsivcc11
lsivcc12
lsivcc13
lsivcc14
lsivcc15
lsivcc16
Para configurar la sincronización de tiempo, se debe activar la sincronización con un
servidor de tiempo externo (para mayor información ver http://tf.nist.gov/service/its.htm).
Se modificó el archivo /etc/ntp.conf para permitir que el nodo maestro distribuya el
tiempo en los nodos esclavos agregando las siguientes líneas:
server time.cacr.caltech.edu
broadcast 10.6.200.255
Para compartir la partición /scratch en la red se modificó el archivo /etc/exports
agregando la línea:
/scratch 10.6.200.0/255.255.255.0(rw,no_root_squash)
Se configuró el servicio autofs de la siguiente manera: se agregó la siguiente línea al
archivo /etc/auto.master
/data
/etc/auto.beowulf
--timeout 600
Se creó el archivo /etc/auto.beowulf con las líneas:
lsivcc01
lsivcc02
lsivcc03
lsivcc04
lsivcc05
lsivcc06
lsivcc07
lsivcc08
lsivcc09
lsivcc10
lsivcc11
lsivcc12
lsivcc13
lsivcc14
lsivcc15
lsivcc16
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
-fstype=nfs
lsivcc01:/scratch
lsivcc02:/scratch
lsivcc03:/scratch
lsivcc04:/scratch
lsivcc05:/scratch
lsivcc06:/scratch
lsivcc07:/scratch
lsivcc08:/scratch
lsivcc09:/scratch
lsivcc10:/scratch
lsivcc11:/scratch
lsivcc12:/scratch
lsivcc13:/scratch
lsivcc14:/scratch
lsivcc15:/scratch
lsivcc16:/scratch
Se creó el directorio /home/local y se movió todo el contenido del directorio /usr/local
a este directorio. Se creó un enlace simbólico desde /usr/local hasta /home/local
corriendo el siguiente comando
>ln -s /home/local /usr/local
Las librerías de software para cómputo paralelo como MPICH y PVM se instalan en
/usr/local y quedarán disponibles en /home/local para todos los nodos. De esta forma
solo se tiene que actualizar el software en el nodo maestro.
5.- Configuración de los Nodos Esclavos
Se instaló el sistema operativo Linux desde la ubicación compartida en el nodo maestro,
esto se llevo a cabo gracias a que se preparó una memoria USB con los archivos necesarios
para el arranque de los nodos y la conexión por medio de la red hacia el directorio
compartido con el sistema de instalación en el nodo maestro.
Una vez instalado el sistema operativo se procedió a compartir la partición /scratch del
nodo en la red modificando el archivo /etc/exports agregando la línea
/scratch 10.6.200.0/255.255.255.0(rw,no_root_squash)
Se copiaron los siguientes archivos desde el nodo maestro usando el comando rsync.
/etc/hosts
/etc/hosts.equiv
/etc/shosts.equiv
/etc/auto.master
/etc/auto.beowulf
Se agregó la siguiente línea al archivo /etc/auto.beowulf
home -fstype=nfs lsivcc01:/home
Se ejecutaron los siguientes comandos con el fin de que el directorio /home del nodo
esclavo sea un enlace simbólico al directorio /home del nodos maestro
>rm −fr /home
>ln −s /data/home /home
Se activó la sincronización del tiempo con el nodo principal. Los usuarios del clúster deben
tener cuenta en todos los nodos. Para agregar un usuario nuevo se crea la cuenta en el nodo
maestro utilizando el software para administración de cuentas de usuario de la distribución
Linux. Para duplicar la cuenta en los nodos esclavo se debe sincronizar los archivos
/etc/passwd y /etc/shadow del nodo maestro a los demás nodos usando el siguiente
comando
>rsync /etc/passwd lsivcc02:/etc
>rsync /etc/shadow lsivcc02:/etc
La sincronización se debe de hacer como usuario root desde el nodo maestro y repetirlo
para todos los nodos del clúster. También requiere que los nodos no soliciten contraseña al
inicio de la sesión SSH. Para lograr esto, cada usuario debe ejecutar los siguientes
comandos desde su sesión en el nodo maestro
>ssh-keygen –t rsa (return return return)
>cd ~/.ssh
>cp id_rsa.pub authorized_keys
>cd ..
>chmod go-w .ssh .ssh/authorized_keys
Los pasos descritos anteriormente se llevaron a cabo en uno de los nodos esclavos
(lsivcc02) se revisaron y cuando el nodo quedo completamente funcional se diseñó un
programa contenido en script de un archivo por lotes (configuarcion_nodo_eclavo.sh) que
desarrolla la configuración completa del nodo corriéndolo desde la misma memoria USB
que se utilizó para la instalación del sistema operativo.
6.- Librerías MPICH
MPICH es una implementación portable del estándar MPI (Message Passing Interface), este
es un estándar para librerías de paso de mensajes para aplicaciones de memoria distribuida
usado en el cómputo en paralelo [5]. MPICH es una librería de software libre con diferentes
implementaciones para diferentes plataformas.
En el prototipo de Cluster Beowulf de 16 nodos desarrollado se instaló MPICH2. El
conjunto de librerías de MPICH2 ya se incluye en el DVD de la distribución de Fedora 12,
por lo que se realizó la instalación directa en todos los nodos.
Se probó la disponibilidad de los comandos principales en todos los nodos corriendo las
siguientes instrucciones:
>which mpd
>which mpicc
>which mpiexec
Una vez seguros de MPICH2 está corriendo en que todos los nodos se procede a hacer
pruebas con MPD (Message Passing Deamon) que es un demonio administrador de
procesos para poder iniciar de manera escalada trabajos con MPI bastante grandes. MPD
inicia un anillo de demonios en los nodos que permite correr programas MPI utilizando la
librería MPICH2. Por seguridad para correr y probar un anillo de demonios es necesario
crear un archivo en el directorio home llamado .mpd.conf que contenga la línea:
secretword=<secreto>
donde <secreto> es una cadena de caracteres conocida solo por el dueño del directorio. Se
genera este archivo para lectura y escritura solo para el dueño con:
>cd $HOME
>touch .mpd.conf
>chmod 600 .mpd.conf
Se utiliza el editor emacs para agregar la línea anterior. Se prueba creando un anillo con un
solo nodo en la máquina local y corriendo un comando de MPD y después se cierra el
anillo con las siguientes instrucciones:
>mpd &
>mpdtrace
>mpdallexit
La salida del comando mdptrace deberá ser el nombre de la máquina donde se está
corriendo. Para correr los demonios en todos los nodos es necesario crear un archivo con la
lista de los nombres de todos los nodos, uno por línea. El nombre del archivo deberá ser
mpd.hosts. Los nombres de los nodos serán utilizados con ssh para correr MPD en cada
uno de ellos, así es que se debe asegurar que se pueda entrar a cada uno de los nodos en la
lista utilizando ssh sin tener que teclear una contraseña. Lo cual se hizo previamente y se
detalló al final de la sección anterior.
Para iniciar los demonios en los nodos listados en mpd.hosts se corre el comando:
>mpdboot –n <no. de nodos> -f mpd.hosts
El número de nodos puede ser entre 1 y el número de nodos listados en mpd.hosts. Para
saber cuáles nodos están corriendo un demonio se utiliza el comando mpdtrace. Se puede
probar cuanto tiempo lleva a un mensaje viajar por todo el anillo con el comando
mpdringtest y correr programas multiprocesos con el comando mpiexec. El comando
mdpallexit cierra todos los demonios.
Una vez probados todos estos comandos se podrán correr procesos en paralelo utilizando
todos los nodos del Cluster Beowulf desarrollado.
7.- Conclusiones
Se diseñó y ensambló físicamente el prototipo de un Clúster Beowulf con 16 nodos, se
instaló en cada uno de sus nodos el sistema operativo Linux en su distribución Fedora 12 de
64 bits. Se instalaron y configuraron todos los paquetes necesarios para que los nodos
interactúen en una red de cómputo Giga-Ethernet y puedan compartir sus algunos de sus
directorios que le dan a esta red la característica de un Clúster Beowulf, en el cual se instaló
y probó la librería MPICH2 que permite correr programas en forma paralela en los nodos
del clúster.
El prototipo del Cluster Beowulf de 16 nodos es 100% funcional y está ubicado en el
Laboratorio de Sistemas Inteligentes y Visión por Computadora de la División de estudios
de Posgrado del Instituto Tecnológico de Chihuahua. Actualmente de está usando para el
desarrollo de aplicaciones y prueba de plataformas open source para procesamiento de
imágenes y visión por computadora como parte del proyecto DGEST “Modelado y Control
de un Sistema Automático de Fabricación” clave UR.CHI107.
Se pretende ir adicionando más nodos al clúster y seguir desarrollando software para
procesamiento en paralelo que permita el desarrollo eficiente de los proyectos del grupo de
Automática e Informática Industrial.
6.- Referencias
[1] Acosta, J., F. Sastrón, Schematic Architecture: Reference Architecture / Frameworks / Particular
nd
Models for the Shop Floor Environment, 32 Annual Conf. of the IEEE Industrial Electronics
Society, París France, November 2006.
nd
[2] Gropp, W., Lusk, E., Sterling, T., Beowulf Cluster Computing with Linux, 2 . Edition, MIT Press,
2003.
[3] Sterling, T., Salmon, J., Becker, D., Savarese, D.F., How to Build a Beowulf, A Guide to the
Implementation and Application of PC Clusters, MIT Press, 1998.
[4] Vrenios, A., Linux Cluster Architecture, Sams Publishing, 2002.
[5] Pacheco, P.S., Parallel Programing with MPI, Morgan Kaufmann Publishers, 1997.
Descargar