Está en la página 1de 9

Cluster Beowulf/MPI en Debian

1- Configuracin de la red: En este artculo utilizamos la topologa estrella para la configuracin del Cluster. La configuracin lo haremos suponiendo que ya tenemos una red instalada y configurada, o sea con la tarjeta de red configurada con los respectivos IPs para cada nodo y pertenecientes aun grupo de trabajo. Para probar si un nodo tiene la red configurando correctamente, desde consola hacemos: ping <ip_nodo>, ejemplos: Ping al nodo local: ~$ ping 127.0.0.1 Ping a otra maquina: ~$ ping 192.168.1.40 Configuramos el archivo /etc/hosts para colocar un nombre a cada Nodo que participa en el cluster: edu@PC-10:~$ nano /etc/hosts Ejemplo:
# Ip 127.0.0.1 Grupo en Red localhost PC-10 PC-09 PC-08 nombre del nodo

192.168.1.40 PC-10.RM.NT 192.168.1.37 PC-09.RM.NT 192.168.1.35 PC-08.RM.NT

En el ejemplo anterior suponemos con tres nodos pertenecientes al cluster. Ahora hacemos: edu@PC-10:~$ ping PC-09 2- Compartir directorio: Para compartir el sistema de archivos lo haremos va NFS. El directorio a compartir ser ~/ del lado del maestro y los esclavos lo montaran en ~/. Ejemplo si el usuario es edu el directorio seria /home/edu, teniendo en cuenta que el usuario es el mismo para todos los nodos, en caso contrario crear un usuario comn para todos los nodos. Esto se hace ya que para ejecutar mpirun, requiere que todos los nodos tengan un filesystem compartido. Desde el maestro configuramos: Instalamos el servidor de NFS. Seleccionamos al nodo PC-10 como servidor: edu@PC-10:~$ su edu@PC-10:~# apt-get install nfs-kernel-server

Editamos los permisos a los nodos: edu@PC-10:~# nano /etc/hosts.allow


#nodos que se permiten el acceso por NFS portmap : 192.168.1.0/24

edu@PC-10:~# nano /etc/hosts.deny


#nodos que no se permite el acceso portmap : ALL

Directorios a exportar: edu@PC-10:~# nano /etc/exports


#directorio requerido /home/edu 192.168.1.0/24 (rw, sync)

Reiniciamos el demonio y el portmap edu@PC-10:~# /etc/init.d/nfs-kernel-server restart edu@PC-10:~# /etc/init.d/portamp restart En los nodos montamos el directorio compartido: Reportamos todos los directorios que comparte el servidor de NFS edu@PC-09:~# showmount e PC-10 ahora montamos el directorio compartido edu@PC-09:~# mount t nfs PC-10:/home/edu /home/Edu Repetimos este paso para todos los nodos esclavos. En ocasiones es necesario instalar los binarios de NFS para el cliente: nfs-kernel-user 3- Habilitar SSH sin password: Para que el master pueda ejecutar comandos remotos en los esclavos, MPICH utiliza rsh (Remote Shell) o ssh (Secure Shell). En Debian el comando rsh es un enlace del sistema de alternativas que apunta a /usr/bin/ssh, por lo que MPICH y LAM/MPI utilizan por defecto conexiones seguras.

Para disponer de SSH instalaremos en los nodos el servidor SSH (paquete openssh-server) y los configuraremos para que acepten conexiones desde el master sin pedir password ni passphrase (utilizando el mismo usuario en todos los nodos). Para ello: crearemos una clave RSA en el master: edu@PC-10:~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa activaremos ssh-agent en el master para que no nos pida la pass-phrase: edu@PC-10:~$ eval `ssh-agent -s` Agent pid 12297 edu@PC-10:~$ ssh-add Enter passphrase for /home/edu/.ssh/id_rsa: Identity added: /home/edu/.ssh/id_rsa (/home/edu/.ssh/id_rsa) copiaremos la clave pblica (~/.ssh/id_rsa.pub) en todos los esclavos: edu@PC-10:~$ scp ~/.ssh/id_rsa.pub edu@PC-09:~/.ssh/id_rsa.pub la aadiremos al final del fichero ~/.ssh/authorized_keys en cada esclavo: edu@PC-09:~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys y comprobaremos que podemos iniciar sesin SSH en los esclavos sin que nos pida password: edu@PC-10:~$ ssh PC-09 edu@PC-09:~$ 4- Beowulf con MPICH a. Instalar MPICH Es recomendable utilizar el administrador de paquetes para buscar la versin mas actual de MPICH para deban. En el lado del master es necesario instalar el paquete mpich-bin que nos proporciona los binarios para la ejecucin, pero este paquete tiene dependencias con otros similares como libmpich para las libreras de desarrollo y la ultima versin de gcc y gCC (>4.0). Estos paquetes se les pueden buscar desde el administrador de paquetes del sistema. En el cliente se instala el paquete mpich-mpd-bin con sus respectivas libreras libmpich-mp. En ciertas ocasiones tambin es necesario tener instalado este paquete en el master.

b. Configurar MPICH Configurar master: Listar los nodos que participaran /etc/mpich/machines.LINUX. Ejemplo: en el cluster en el archivo

edu@PC-10:~# nano /etc/mpich/machines.LINUX


#master PC-10 #esclavos PC-09 PC-08

Configurar esclavos Tambin listamos los nodos en el archivo .mpd.hosts si no esta crearlo en el directorio del usuario comn, ejemplo: edu@PC-09:~# nano /home/edu/.mpd.hosts
#master PC-10 #esclavos PC-09 PC-08

Y en el archivo .mpd.conf insertar una palabra secreta para el cluster edu@PC-09:~# nano /home/edu/.mpd.conf
#palabra secreta del cluster, secret es de eleccion WM_WORDSECRET=secret

Ajustar Variables de Entorno: Si instalamos los paquetes desde el administrador de paquetes, las variables de entorno de las libreras se registran automticamente, en caso contrario si se utiliza el comando apt-get install hacerlo manualmente. Tambin para decirle a MPICH que use SSH debemos establecer la variable de entorno P4_RSHCOMMAND, editando .bashrc y aadiendo la lnea:

export P4_RSHCOMMAND=ssh Cargamos .bashrc de nuevo y comprobamos: edu@PC-10:~$ source ~/.bashrc edu@PC-10:~$ echo P4_RSHCOMMAND Probar MPICH MPICH proporciona el comando tstmachines, que comprueba la disponibilidad de las mquinas listadas en /etc/mpich/machines.LINUX para ejecutar programas MPI. edu@PC-10:~$ tstmachines v
Trying true on PC-10... Trying ls on PC-10 ... Trying user program on PC-10...

E parmetro -v que indica al script informar sobre los pasos que va realizando. De otra manera, se espera que, si no hay problemas, no se reciba ningn mensaje. MPICH proporciona cuatro comandos para compilar programas MPI:

mpicc: programas escritos en C. mpiCC: programas escritos en C++. mpif77: programas escritos en Fortran 77. mpif90: programas escritos en Fortran 90.

Por ejemplo, para compilar el programa hola.c haremos: edu@PC-10:~$ mpicc -o hola hola.c Para ejecutar programas MPI utilizaremos el comando mpirun. Por ejemplo, para ejecutar el programa hola en 3 procesadores haremos: edu@PC-10:~$ mpirun -np 3 hola Proceso 0 de 3 en PC-10 Proceso 1 de 3 en PC-09 Proceso 2 de 3 en PC-08 5- Beowulf con LAM/MPI a. Instalar LAM/MPI Instalar el paquete lam-runtime y lam en el master y en los nodos, utilizar el administrador de paquetes para instalar la ltima versin.

b. Configurar LAM/MPI Configurar Nodos: La definicin del cluster se encuentra en el fichero /etc/lam/bhost.def y /etc/lam/bhost.conf Debe contener todos los nodos del cluster, usuario de conexin (en nuestro caso, edu) y nmero de CPU's. El contenido debe ser parecido al siguiente:
#master PC-10 cpu=1 user=edu #esclavos PC-09 cpu=1 user=edu PC-08 cpu=1 user=edu

Ajustar Variables de Entorno: Si instalamos los paquetes desde el administrador de paquetes, las variables de entorno de las libreras se registran automticamente, en caso contrario si se utiliza el comando apt-get install hacerlo manualmente. Probar LAM: Para comprobar si el cluster LAM/MPI puede activarse: edu@PC-10:~$ recon Para activar el cluster (lamboot lanza el demonio lamd en cada mquina listada en /etc/lam/bhost.conf): edu@PC-10:~$ lamboot -v Una vez activado el cluster, para comprobar el estado de los nodos: edu@PC-10:~$ tping N Para compilar hacemos: edu@PC-10: ~$ mpicc -c hola.c edu@PC-10: ~$ mpicc -o hellompi hellompi.c Ejecutamos igual como se hace con MPICH edu@PC-10:~$ mpirun -np 3 hola ejecutar en todos los nodos edu@PC-10:~$ mpirun C hola

c. Monitorizacin con xmpi LAM/MPI proporciona la herramienta XMPI (paquete xmpi), que permite ejecutar programas paralelos MPI y monitorizarlos. XMPI no puede activar el cluster, ste tiene que haber sido activado con lamboot antes de lanzar XMPI. Para arrancar XMPI ejecutaremos el comando: edu@PC-10:~$ xmpi

Ejemplos: Seoleccionar nodos

También podría gustarte