Está en la página 1de 22

Instalación y configuración de un Cluster de Alto rendimiento basado en PelicanHPC

de un Cluster de Alto rendimiento basado en PelicanHPC Por Diego I. G. Najar Carrascal

Por Diego I. G. Najar Carrascal http://www.linkedin.com/in/dignajar

Indice

1. Introducción

1

1.1. Objetivo

1

1.2. ¿Que es un Cluster?

1

1.3. Tipos de Cluster

1

2. Sistema

2

2.1. Componentes de Hardware

2

2.2. Componentes de Software

2

2.3. Configuración de las maquinas virtuales

2

2.4. PelicanHPC

2

3. Instalación y configuración de PelicanHPC sobre VirtualBox

4

3.1. Primeros pasos

4

3.2. Configuración del nodo máster

5

3.3. Configuración de los nodos esclavos

8

3.4. Clonación de los nodos esclavos

10

4. Inicio y configuración de PelicanHPC

11

4.1. Inicio y configuración del nodo máster

11

4.2. Inicio y configuración de los nodos esclavos

14

4.3. Configuración final del nodo máster

15

4.4 Comandos útiles de PelicanHPC

16

Agregar un nuevo nodo esclavo

16

Apagar todos los nodos esclavos

16

Iniciar entorno grafico

16

5. Benchmarks

17

5.1.

FLOPS (Floating point operation per seconds)

17

Conclusión

19

Bibliográfica

20

1. Introducción

1. Introducción 1.1. Objetivo Se propuso como objetivo instalar y configurar un Cluster con una distribución

1.1. Objetivo

Se propuso como objetivo instalar y configurar un Cluster con una distribución GNU/Linux. Se utilizaran maquinas virtuales – si funciona en maquinas virtuales funciona en maquinas físicas – para virtualizar un nodo máster y dos nodos esclavos.

1.2. ¿Que es un Cluster?

Es una clase de arquitectura de computador paralelo que se basa en unir maquinas independientes cooperativas integradas por medio de redes de interconexión para proveer un sistema coordinado, capaz de procesar una carga.

- Dr. Thomas Sterling

1.3. Tipos de Cluster

Alto rendimiento (HP, high performance): Los Cluster de alto rendimiento han sido creados para compartir el recurso mas valioso de una computadora, es decir, el tiempo de proceso. Cualquier operación que necesite altos tiempos de computo puede ser ejecutada en un o Cluster de alto rendimiento, siempre que se encuentre un algoritmo que sea paralelizable.

Alta disponibilidad (HA, high availability): Los Cluster de alta disponibilidad pretenden dar servicios las 24hs de cualquier tipo, son Cluster donde la principal funcionalidad es estar controlando y actuando para que un servicio o varios se encuentren activos durante el máximo periodo de tiempo posible.

Alta eficiencia (HT, high throughput): Los Cluster de alta eficiencia tiene como objetivo la ejecución de la mayor cantidad de tareas en el menor tiempo posible.

Podemos encontrar muchos mas tipos de Cluster, y combinaciones de ellos, solo se nombraron los tipos mas importantes, y mas usados.

2. Sistema

2.1. Componentes de Hardware

Intel Quad Core 6600 2.4GHz - (4 núcleos)

2GB Memoria RAM

500GB Disco rígido

2.2. Componentes de Software

RAM • 500GB Disco rígido 2.2. Componentes de Software • Sistema operativo nativo GNU/Linux (Gentoo Linux)

Sistema operativo nativo GNU/Linux (Gentoo Linux)

Maquinas virtuales bajo VirtualBox v4.1.6

Sistema operativo para el Cluster GNU/Linux (PelicanHPC basado en Debian) http://idea.uab.es/mcreel/PelicanHPC

2.3. Configuración de las maquinas virtuales

Nodo Máster: 1 procesador, 512MB Ram, sin disco rígido, booteo desde la imagen Live-CD de PelicanHPC

Nodo Slave 1: 1 procesador, 512MB Ram, sin disco rígido, booteo a través de la red LAN

Nodo Slave 2: 1 procesador, 512MB Ram, sin disco rígido, booteo a través de la red LAN

2.4. PelicanHPC

Es una distribución de GNU/Linux basa en Debian para la creación de Cluster de alto rendimiento en poco minutos, viene en formato iso-hybrid(CD y USB) de esta forma podemos bootear directamente la imagen desde un CD o un pendrive USB. PelicanHPC le permite al usuario realizar computo paralelo usando MPI. El nodo máster bootea desde la imagen y los nodos esclavos bootean utilizando PXE(Preboot eXecution Environment).

Todos los nodos del Cluster obtiene el sistema de archivo de la misma imagen, de esta forma garantiza que todos ellos ejecutan el mismo software.

PelicanHPC permite instalar paquetes nuevos utilizando el manejador de paquetes apt- get, como esta basada en la distribución Debian tenemos una gran cantidad de paquetes de software.

Características a destacar:

Disponible para procesadores de 64 y 32 bits.

Contiene lo ultima versión estable del paquete OpenMPI.

GNU Octave lenguaje de alto nivel para realizar cálculos numéricos, es considerado la versión libre de MATLAB. Utiliza todo el poder de los Cluster que utilizan MPI, dividiendo los cálculos en diferentes nodos.

Linkpack librería especial para el el calculo del álgebra lineal en Cluster.

Herramientas de configuración nativas de PelicanHPC.

Autoconfiguración de llaves publicas/privadas para la comunicación a través de SSH.

Escritorio XFCE configurado y listo para usar. Ademas contiene algunos tutoriales de PelicanHPC en formato PDF y con su respectivo lector de PDFs, navegador web, y algunas herramientas gráficas.

3. Instalación y configuración de PelicanHPC sobre VirtualBox

Instalación y configuración de PelicanHPC sobre VirtualBox 3.1. Primeros pasos Como primer instancia debemos bajar la

3.1. Primeros pasos

Como primer instancia debemos bajar la imagen de PelicanHPC, para este informe vamos a utilizar la ultima versión de PelicanHPC v2.6, por lo tanto nos dirigimos al sitio oficial, vamos a la sección “Download”, y descargamos la imagen “pelicanhpc- v2.6.iso”. (http://idea.uab.es/mcreel/PelicanHPC)

Una vez que tengamos la imagen, podemos comenzar con la configuración de las maquinas virtuales.

Antes de iniciar VirtualBox debemos iniciar los módulos necesarios(drv, netdp, netflt).

Iniciar módulos para VirtualBox

# for m in vbox{drv,netadp,netflt}; do modprobe $m; done

Ejecutamos VirtualBox

# VirtualBox

m in vbox{drv,netadp,netflt}; do modprobe $m; done Ejecutamos VirtualBox # VirtualBox Figura 3.1.1 - VirtualBox v4.1.6

Figura 3.1.1 - VirtualBox v4.1.6

3.2. Configuración del nodo máster

Ahora nos centraremos en crear una maquina virtual para el nodo máster de nuestro Cluster Para esto creamos una maquina virtual nueva, y completamos los parámetros que nos pide. Ingresamos el nombre de la maquina virtual, y le damos a elegir que es un sistema operativo Linux como se ve en la figura 3.2.1, para nuestro caso seleccionamos que es un Linux con versión de kernel 2.6 y de 64bits.

que es un Linux con versión de kernel 2.6 y de 64bits. Figura 3.2.1 - Nueva

Figura 3.2.1 - Nueva maquina virtual

Luego como se ve en la figura 3.2.2 no pide que ingresemos la cantidad de memoria RAM que va a utilizar nuestro nodo máster Debemos setear un poco mas de 256MB (por favor que sea potencia de 2), en el ejemplo seteamos 512MB.

Después de setear la memoria RAM, se nos pide que indiquemos si vamos a utilizar un disco físico. PelicanHPC bootea sobre la memoria RAM así que no sera necesario el disco.

Finalizamos la creación y nos deberá aparecer la maquina virtual en nuestro VirtualBox.

Figura 3.2.2 – Cantidad de memoria que tendrá disponible nuestra maquina virtual Hacemos click derecho

Figura 3.2.2 – Cantidad de memoria que tendrá disponible nuestra maquina virtual

Hacemos click derecho sobre la maquina virtual, y nos dirigimos a la configuración(settings). Seleccionamos la opción “System”, desmarcamos todas las opciones donde dice “Boot Order”, y dejamos seleccionado solo el checkbox “CD/DVD- ROM”. Esto es necesario para que nuestra maquina virtual cuando inicie sepa que debe bootear sobre la imagen .ISO que bajamos anteriormente, figura 3.2.3.

Figura 3.2.3 - Configuración del orden de booteo Una vez configurado el orden de booteo,

Figura 3.2.3 - Configuración del orden de booteo

Una vez configurado el orden de booteo, nos dirigimos a la

Storage, y

seleccionamos la imagen que vamos a bootear, hacemos click sobre el CD-ROM que aparece

sobre el lado derecho. Ademas seleccionamos el checkbox Live CD/DVD, como se indica en la figura.

opción

que aparece sobre el lado derecho. Ademas seleccionamos el checkbox Live CD/DVD, como se indica en

Ahora debemos configurar la red de nuestra maquina virtual, como se ve en la figura 3.2.4. Nos dirigimos a la opción que dice Network. Seleccionamos “Internal Network”, y le damos un nombre a nuestra red, por ejemplo “pcpd”.

y le damos un nombre a nuestra red, por ejemplo “pcpd”. Figura 3.2.4 - Configuración de

Figura 3.2.4 - Configuración de la red sobre la maquina virtual del nodo máster

Con estos pequeños detalles de configuración ya tendríamos configurada la maquina virtual para nuestro nodo máster.

3.3. Configuración de los nodos esclavos

Para esto, necesitamos crear una maquina virtual nueva, luego con la opción de clonar maquinas virtuales, podemos crear mas nodos esclavos para nuestro Cluster.

Las maquinas virtuales deben tener por lo menos 512MB de memoria RAM para su correcto funcionamiento.

Creamos una maquina virtual, asignamos las mismas características que el nodo máster, y luego nos dirigimos a la configuración de la misma, seleccionamos la opción “System”, debemos configurar el orden del booteo de tal forma que busque sobre la red el arranque. Para esto desmarcamos todos los checkbox y dejamos habilitado solamente el “Network” como se visualiza en la figura 3.3.1.

Figura 3.3.1 - Configuración de la maquina virtual del nodo esclavo Ahora vamos a la

Figura 3.3.1 - Configuración de la maquina virtual del nodo esclavo

Ahora vamos a la opción “Networks” y configuramos el adaptador de red para que trabaje sobre la misma red que nuestro nodo máster, completamos el nombre de la red como “pcpd”. Vea la figura de la derecha.

la misma red que nuestro nodo máster, completamos el nombre de la red como “pcpd”. Vea

3.4. Clonación de los nodos esclavos

Gracias a VirtualBox podemos configurar un solo nodo esclavo y luego duplicar este tantas veces queramos. Por lo tanto hacemos click derecho sobre la imagen del nodo esclavo que creamos recién, y hacemos click sobre “clone”, nos pedirá que seteamos un nombre para la maquina virtual clonada como se ve en la figura 3.4.1, en mi caso el nombre es “PelicanHPC Slave 2”, tildamos el checkbox para que le asigne nuevas MAC a las maquinas virtuales anteriores, por cuestiones de no tener problemas futuros y que no se repitan las MACs en el sistema.

futuros y que no se repitan las MACs en el sistema. Figura 3.4.1 – Clonación de

Figura 3.4.1 – Clonación de una maquina virtual

Ya tenemos dos maquinas virtuales para los nodos esclavos, podemos agregar cuantos queramos de estos clones, pero no es recomendable ya que son maquinas virtuales y en el fondo hay 1 sola maquina ejecutando todas estas maquinas virtuales.

4. Inicio y configuración de PelicanHPC

4. Inicio y configuración de PelicanHPC Luego de tener nuestras maquinas virtuales es necesario iniciar primero

Luego de tener nuestras maquinas virtuales es necesario iniciar primero que todo la maquina virtual del nodo máster, y configurar algunos parámetros antes de iniciar los nodos esclavos.

4.1. Inicio y configuración del nodo máster

Iniciamos nuestra maquina virtual nodo máster con un simple doble click o con el botón “Start”.

Como primer instancia podemos ver el menú del Grub como se muestra en la figura 4.1.1, donde nos da a elegir iniciar la distribución “live” o “live (failsafe)”, y otras opciones para comprobar la memoria y una ayuda. Seleccionamos la opción “live”.

la memoria y una ayuda. Seleccionamos la opción “live”. Figura 4.1.1 – Iniciando la maquina virtual

Figura 4.1.1 – Iniciando la maquina virtual nodo máster

Esperamos a que inicie. Y nos mostrara la pantalla de Pelican Setup como se ve en la figura de la derecha, le damos al botón OK.

Luego nos pedirá si queremos crear un directorio home/user con archivos de prueba y unos tutoriales, seguimos con el botón Yes.

Y por ultimo nos pide que cambiemos el password del usuario “user”, ademas de cambiarlo deben recordarlo, sera el password que usaran todos los nodos esclavos y el máster Una vez finalizada la configuración podemos ver en la figura 4.1.2 el login del sistema.

la configuración podemos ver en la figura 4.1.2 el login del sistema. Figura 4.1.2 – Login
la configuración podemos ver en la figura 4.1.2 el login del sistema. Figura 4.1.2 – Login

Figura 4.1.2 – Login del nodo máster

Ya booteamos y configuramos a medias nuestro Cluster, ahora ingresamos con el usuario “user” y el password que seteamos en el paso anterior.

Una vez logueados, ejecutamos el comando “pelican_setup”

# pelican_setup

Una vez iniciado nos aclara que debemos tener cuidado con los servidores DHCP que estén en nuestra red en común, porque PelicanHPC debe manejar un servidor DHCP para darle las direcciones IP a nuestros nodos esclavos. Como estamos emulando una red, no tenemos este problema, pero si lo estuviéramos haciendo físicamente, y utilizamos algún router que tiene el servicio de DHCP activado deberíamos desactivar esta opción. Siguiendo los pasos, le damos al botón Yes, nos dirá que quiere reiniciar algunos componentes, seguimos con el botón Yes y ya estaríamos preparados para iniciar nuestros nodos esclavos.

algunos componentes, seguimos con el botón Yes y ya estaríamos preparados para iniciar nuestros nodos esclavos.

4.2. Inicio y configuración de los nodos esclavos

Dejamos de lado la maquina virtual con el nodo máster, e iniciamos las maquinas virtuales nodos esclavos.

Como puede ver en la figura 4.2.1, el nodo esclavo busca un servidor DHCP para que le asigne una IP, acá es cuando en nodo máster le asigna una IP a cada nodo esclavo. Luego de asignarle la dirección IP le enviá una imagen del sistema al nodo esclavo, y de esta forma el nodo esclavo bootea. Inicia el kernel y los procesos.

el nodo esclavo bootea. Inicia el kernel y los procesos. Figura 4.2.1 – Buscando servidor DHCP

Figura 4.2.1 – Buscando servidor DHCP

Inicia el kernel y los procesos. Figura 4.2.1 – Buscando servidor DHCP Figura 4.2.2 – Login

Figura 4.2.2 – Login del nodo esclavo

Una vez que todos los nodos esclavos fueron iniciados (figura 4.2.2), debemos volver al nodo máster para terminar de acoplar nuestro Cluster.

4.3. Configuración final del nodo máster

Nos dirigimos a la maquina virtual que contiene el nodo máster, y realizamos la búsqueda de los nodos esclavos. Pulsamos el botón “No” así el nodo máster hace broadcast con pings, analiza la red en búsqueda de nodos posibles, cuando un nodo retorna el ping(pong), el nodo máster agrega al Cluster el nodo esclavo. En la figura 4.3.1 podemos ver que el nodo máster encontró 2 nodos esclavos.

podemos ver que el nodo máster encontró 2 nodos esclavos. Figura 4.3.1 – Se encontraron los

Figura 4.3.1 – Se encontraron los 2 nodos esclavos

Ya tenemos 2 nodos esclavos detectados por el nodo máster, por lo tanto podemos seguir, pulsamos en el botón “Yes” y listo, ya tenemos nuestro Cluster funcionando. Pueden ver la figura siguiente 4.3.2, del lado izquierdo tenemos los dos nodos esclavos y del lado derecho tenemos nuestro nodo máster.

Figura 4.3.2 - Nodos esclavos ejecutando htop 4.4 Comandos útiles de PelicanHPC PelicanHPC cuenta con

Figura 4.3.2 - Nodos esclavos ejecutando htop

4.4 Comandos útiles de PelicanHPC

PelicanHPC cuenta con algunos comandos útiles que se pueden ejecutar desde el nodo máster.

Agregar un nuevo nodo esclavo

Si deseamos agregar un nuevo nodo esclavo debemos iniciar el nodo, esperar que boote la imagen por red, y luego correr el comando siguiente.

# pelican_restart_hpc

Apagar todos los nodos esclavos

Si queremos podemos apagar todos los nodos esclavos con un solo comando, por lo tanto desde el nodo máster ejecutamos el comando siguiente.

# pelican_nodes stop

Iniciar entorno grafico

Si queremos iniciar el entorno gráfico XFCE, ejecutamos el comando siguiente.

# startx

5. Benchmarks

5. Benchmarks 5.1. FLOPS (Floating point operation per seconds) Los FLOPS son una medida de rendimiento

5.1. FLOPS (Floating point operation per seconds)

Los FLOPS son una medida de rendimiento de una computadora, especialmente en cálculos científicos que requieren un gran uso de coma flotante. Por lo tanto vamos a ejecutar un pequeño benchamark que trae el propio PelicanHPC para ver la cantidad de FLOPS que tiene nuestro Cluster

Para esto debemos ejecutar el binario “flops” pero bajo MPI, de esta forma el Cluster se comunica con sus nodos esclavos. En la figura 5.1.1 se puede ver como los nodos esclavos inicia en el proceso “flops”.

Especificamos el archivo con los hosts de nuestra red

# mpirun –hostfiles tmp/bhosts ./flops

El archivo “bhosts” contiene las direcciones IP de todos los nodos esclavos y la propia del nodo máster Este archivo es generado automáticamente cuando se inicia y configura el nodo máster Igual que las llaves publicas del nodo máster están distribuidas en los nodos esclavos para que se puedan conectar vía SSH y sin necesidad de ingresar el password en cada comunicación.

SSH y sin necesidad de ingresar el password en cada comunicación. Figura 5.1.1 – Ejecutando el

Figura 5.1.1 – Ejecutando el comando “flops”

Otras opción que podemos agregarle al comando mpirun son la cantidad de procesadores que vamos a usar del Cluster, por ejemplo si queremos que el comando “flops” solo se ejecute en 2 procesadores, podemos agregar el flag “-np 2” de esta forma, el nodo máster, buscara dos nodos esclavos distintos y ejecutara el comando en solo estos dos. PelicanHPC tiene la propiedad de buscar los nodos esclavos menos cargados y asignar el procesos en esos nodos.

Como podemos ver en la figura 5.1.2 el nodo máster da la orden y luego los dos nodos esclavos ejecutan el comando “flops”, y obtenemos los resultados para los 2 procesadores que utilizamos. Para mostrar mejor la idea, ahora vamos a ejecutar 1 solo proceso de “flops”, entonces el Cluster deriva este proceso a un solo nodo esclavo y obtenemos los resultados de 1 solo nodo, podemos ver en la figura 5.1.2 sobre el nodo esclavo de arriba que se esta ejecutando el comando “flops” y sobre el nodo esclavo de abajo no se esta ejecutando el proceso.

el nodo esclavo de abajo no se esta ejecutando el proceso. Figura 5.1.1 – Ejecución del

Figura 5.1.1 – Ejecución del comando flops con 1 y 2 procesadores

Ejecución de “flops” en 2 procesadores

# mpirun –hostfiles tmp/bhosts -np 2 ./flops

Ejecución de “flops” en 1 procesador

# mpirun –hostfiles tmp/bhosts -np 1 ./flops

Conclusión

PelicanHPC es una muy buena distribución para crear un Cluster de alto rendimiento en pocos minutos, totalmente autoconfigurable, detección y configuración de nodos esclavos casi transparentes.

Ademas de ser una versión Live-CD se puede instalar al disco de manera sencilla pero eso escapa de nuestro informe.

Contiene un entorno gráfico liviano y configurable(XFCE) especial para la gente que no le gusta el shell, o desea manejar mas terminales de los normal o utilizar herramientas de ploteo de funciones matemáticas.

Viene con librerías especiales para la programación paralela y ademas librerías de calculo numérico y algebraico que también hacen uso del sistema Cluster.

Gran cantidad de software para instalar ya que PelicanHPC esta basada en Debian, y utiliza todos sus repositorios, con un simple comando(apt-get install APLICACION) podemos instalar paquetes.

Bibliográfica

“Beowulf Cluster Computing with Linux by Thomas Sterling”. Libro.

“Pagina oficial de la distribución PelicanHPC”. Web. <http://idea.uab.es/mcreel/PelicanHPC>

“Foro oficial de la distribución PelicanHPC”. Foro. Web.

“Computer Cluster”. Wikipedia. Web. <http://en.wikipedia.org/wiki/Computer_cluster>

“General information about the Open MPI Project”. Web. <http://www.open-mpi.org/faq/?category=general>

“GNU Octave”. Aplicación de calculo numérico. Web. <http://www.gnu.org/software/octave>