cluster en ubuntu 11.10 utilizando nfs

9
CLUSTER Francisco Daniel García Noriega

Upload: paakiito

Post on 21-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

Es una breve guía de cómo realizar un cluster utilizando el sistema de archivos nfs y máquinas virtuales con Oracle VM VirtualBox.

TRANSCRIPT

Page 1: Cluster en Ubuntu 11.10 utilizando nfs

CLUSTER Francisco Daniel García Noriega

Page 2: Cluster en Ubuntu 11.10 utilizando nfs

Tabla de contenido Requerimientos previos ...................................................................................................................... 2

Instalación de paquetes fundamentales ............................................................................................. 3

Acceso remoto .................................................................................................................................... 4

Servidor de archivos Network File System (NFS) ................................................................................ 5

Entorno de desarrollo ......................................................................................................................... 7

Prueba del cluster ............................................................................................................................... 7

Reflexión .............................................................................................................................................. 8

Este reporte se basa en el artículo:

Cluster Beowulf + OpenMPI + NFS

Page 3: Cluster en Ubuntu 11.10 utilizando nfs

Requerimientos previos El cluster se llevó a cabo en la distribución de Ubuntu 11.10 instalado en dos máquinas virtuales con

Oracle VM VirtualBox.

Los usuarios en ambas máquinas deben ser administradores y llamados igualmente.

En este escrito se utiliza el nombre de usuario: pako y los nombres de los dispositivos:

pako-master y pako-esclavo, para el master y el esclavo respectivamente.

En el siguiente reporte se va a referir a nodo master y nodo esclavo a los diversos nodos a configurar

en el cluster, únicamente se configuró un nodo esclavo, aunque el número de esclavos puede ser

mayor.

Es necesario configurar cada máquina con Adaptador puente en la configuración de la Red para

poder tener una red virtual satisfactoria para el proyecto

.

Como anticipo al proceso de la instalación y configuración del cluster se consideró pertinente

configurar las ip como estáticas en todos los nodos.

La configuración de la ip estática en Ubuntu es de la siguiente manera:

Se configura a través de un editor de texto con privilegios de administrador el archivo interfaces

encontrado en /etc/network/ esto se realizó a través de nano en la terminal como se muestra:

sudo nano /etc/network/interfaces

el archivo se modificó y se le agregó la siguiente información:

iface eth0 inet static

address 192.168.1.76

netmask 255.255.255.0

gateway 192.168.1.255

Estos fueron los datos introducidos a para la máquina en el nodo master y en el nodo esclavo se

llevó a cabo la misma modificación sólo que de esta manera:

Page 4: Cluster en Ubuntu 11.10 utilizando nfs

iface eth0 inet static

address 192.168.1.77

netmask 255.255.255.0

gateway 192.168.1.255

De esta manera es pertinente determinar que cuando nos refiramos a las IP, van a ser destinadas a

sus respectivas entidades es decir:

Nodo IP asignada

Master 192.168.1.76

Esclavo 192.168.1.77

Una vez realizada esta configuración no se deberían tener problemas con un cambio repentino de

IP lo cual va a ser necesario para trabajar de manera cómoda.

Instalación de paquetes fundamentales Posteriormente se prosiguió a la instalación de las diversas herramientas que se van a utilizar en la

configuración e instalación del cluster a través de las siguientes instrucciones:

En ambos:

sudo apt-get install openmpi-bin openmpi-common libopenmpi1.3 libopenmpi-dev

sudo apt-get install ssh

apt-get install build-essential

En el master:

sudo apt-get install nfs-kernel-server nfs-common portmap

En el esclavo:

sudo apt-get install nfs-common portmap

Es necesaria una conexión a Internet para la instalación de los paquetes necesarios.

Page 5: Cluster en Ubuntu 11.10 utilizando nfs

Acceso remoto Ahora ya que está todo instalado, es necesario empezar la configuración para el cluster.

Primeramente es necesario que el master tenga la capacidad de ejecutar comandos en cada nodo y

es necesario que se permita el acceso via ssh sin clave.

Se tiene que generar una clave pública en el nodo master y ésta será la que nos permitirá acceder

de manera remota a cada nodo sin necesidad de claves por línea de comando. Para esto es necesario

generar una clave de la siguiente manera:

pako@pako-master:~$ ssh-keygen

En este comando se debe aceptar el directorio por defecto para almacenar la llave y en caso de

solicitar una frase de paso dejar vacía la petición de modo que no haya alguna.

Es necesario distribuir la llave generada a cada uno de los nodos del cluster, para hacer esto posible

se utiliza la copia de manera remota con la instrucción scp.

Se debe crear un directorio llamado .ssh y es aquí donde se ubicarán las llaves.

pako@pako-esclavo:~$ mkdir .ssh

pako@pako-esclavo:~$ chmod 700 .ssh

Una vez asignados los permisos y creado el directorio se procede a la copia.

pako@pako-master:~$ scp .ssh/id_rsa.pub [email protected]:

Ahora se accede al nodo esclavo donde copiamos la llave y la ubicamos en la localización correcta.

pako@pako-esclavo:~$ mv id_rsa.pub .ssh/authorized_keys

Cabe mencionar que en caso de tener más nodos esclavos hay que repetir este proceso para cada

uno.

Hecho lo anterior se puede comprobar que el nodo master es capaz de ejecutar comandos en el

nodo esclavo y se demuestra de la siguiente manera:

pako@pako-master:~$ ssh [email protected] hostname

respondiendo de la siguiente manera:

pako-esclavo

Al recibir el nombre del dispositivo del esclavo demuestra que funciona correctamente.

Bien, ahora para fines prácticos se puede modificar el archivo hosts y así identificar cada dirección

IP mediante un alias de la siguiente manera:

sudo nano /etc/hosts

modificando el archive agregando lo siguiente:

192.168.1.76 master master

Page 6: Cluster en Ubuntu 11.10 utilizando nfs

192.168.1.77 esclavo esclavo

Esto puede hacerse en cada uno de los nodos, esclavos y master.

Su comprobación se puede ver con el programa ping de la siguiente manera:

pako@pako-master:~$ ping eslcavo

pako@pako-esclavo:~$ ping master

y así comprobamos si existe conexión entre los nodos.

Servidor de archivos Network File System (NFS) Es necesaria la configuración de un servidor de archivos en los nodos para trabajar únicamente en

el master y mediante la exportación del directorio y el montaje remoto desde los nodos se pueda

tener los mismos archivos en cada componente.

Para configurar un recurso compartido se crea un directorio en el home del master que se llamará

clusterdir.

pako@pako-master:~$ mkdir clusterdir

Ahora en modo administrador se exporta este directorio mediante NFS para que los nodos puedan

montarlo remotamente, para esto se necesita modificar el archivo exports en el master:

sudo nano /etc/exports

en este archivo se procede a agregar la siguiente información:

/home/pako/clusterdir 192.168.1.0/24(rw,no_subtree_check,async,no_root_squash)

Aquí hay que hacer hincapié en la sección 192.168.1.0/24. Aquí se determina este valor debido a

que las IP que se está utilizando comienzan con 192.168.1 y el /24 en la sección indica el número de

bits en la IP a considerar y cada sección XXX.XXX.XXX.XXX es de 8 bits, por lo tanto al determinar 24

estamos considerando los primeros XXX.XXX.XXX y dejando la última sección de la IP

arbitrariamente. Por ejemplo, si se va a trabajar con IP’s con un formato 192.168.0.XXX es prudente

cambiar esta sección por 192.168.0.0/24.

Una vez aclarada la situación se debe reiniciar el servicio de NFS:

pako@pako-master:~$ sudo /etc/init.d/nfs-kernel-server restart

Ahora se procede a visualizar si el directorio compartido es accesible desde el nodo.

pako@pako-esclavo:~$ showmount -e 192.168.1.76

y se mostrará un mensaje:

Export list for 192.168.1.76:

/home/pako/clusterdir 192.168.1.0/24

Ahora que se puede visualizar es necesario montar el recurso desde línea de comando y

posteriormente agregarlo a fstab para el montado automático y así cada vez que se arranque el

nodo éste quede montado. Se crea un directorio llamado clusterdir en el home, éste debe ser

Page 7: Cluster en Ubuntu 11.10 utilizando nfs

llamado de la misma maner que el que se compartió en el nodo master, aquí es donde se montará

el recurso compartido mediante NFS en el master.

pako@pako-esclavo:~$ mkdir clusterdir

pako@pako-esclavo:~$ sudo mount -t nfs 192.168.1.76:/home/pako/clusterdir /home/pako/clusterdir

La segunda instrucción es en una sola línea y el salto de línea define un espacio.

Para comprobar si fue exitoso lo anterior se demuestra de la siguiente manera:

pako@pako-esclavo:~$ mount

y debe responder con algo parecido

/dev/xvda2 on / type ext3 (rw,noatime,nodiratime,errors=remount-ro)

tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)

proc on /proc type proc (rw,noexec,nosuid,nodev)

sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)

udev on /dev type tmpfs (rw,mode=0755)

none on /dev/pts type devpts (rw)

192.168.1.76:/home/pako/clusterdir on /home/pako/clusterdir type nfs (rw,addr=192.168.1.76)

Se puede observar que el último montaje es correspondiente al directorio compartido por NFS.

Ahora para realizar este proceso de montaje del recurso exportado en cada nodo automáticamente

se debe modificar el archivo fstab ubicado en /etc/fstab

sudo nano /etc/fstab

y se agrega la siguiente línea:

192.168.1.96:/home/pako/clusterdir /home/pako/clusterdir nfs rw,sync,hard,intr 0 0

Para saber si la modificación fue correcta se procede a desmontar el recurso con lo siguente:

pako@pako-esclavo:~$ umount /home/pako/clusterdir/

y posteriormente se montan los sistemas declarados en fstab

pako@pako-esclavo:~$ mount –a

Una vez establecido lo anterior el NFS ha quedado configurado satisfactoriamente.

Page 8: Cluster en Ubuntu 11.10 utilizando nfs

Entorno de desarrollo Ahora se debe configurar MPI para indicar qué nodos componen el cluster, esto se puede realizar

creando un archivo de configuración llamado .mpi_hostfile en el home del nodo master con el

siguiente contenido:

# Nodo master

localhost slots=2

# Nodo esclavo

esclavo slots=2

Prueba del cluster Los comandos para generar un binario ejecutable de un programa realizado en C se realiza de la

siguiente manera:

mpicc file_name.c –o file_name

Es necesario que el ejecutable se encuentre en el clusterdir para que se pueda ejecutar en todos los

nodos del cluster.

Para ejecutar un binario ejecutable localmente simplemente se realiza de la siguiente forma:

./file_name

y para ejecutarlo distribuyéndolo en todos los nodos del cluster se utiliza la herramienta mpirun

indicando una cantidad de procesos a ejecutar:

mpirun -np # --hostfile ../.mpi_hostfile ./file_name

en la línea anterior # indica el número de procesos. Por ejemplo, 5. Y file_name el nombre del binario

ejecutable. Cabe mencionar que se está en la ubicación dentro del clusterdir en el master, es decir:

pako@pako-master:~/clusterdir$ mpirun -np # --hostfile ../.mpi_hostfile ./file_name

Page 9: Cluster en Ubuntu 11.10 utilizando nfs

Reflexión Personalmente considero esta práctica muy fructífera debido a que requiere un tanto de destreza

en la interacción con Ubuntu mediante la terminal. Se requiere paciencia si no se tiene un equipo

de cómputo potente y abre el horizonte de posibilidades para poder hacer un cluster ya sea

mediante dos computadoras físicas, el sistema en la partición y una máquina virtual o

completamente virtualizado, etc. Hay que destacar que la manera de programar en este ambiente

y hacer que el programa se distribuya de una manera eficiente me resulta algo esotérico e invita a

estudiar esta nueva rama.

Finalmente, estoy muy satisfecho con la realización del cluster y con la resolución de diversos

problemas de configuración presentados en diversos casos.