viernes, 20 de julio de 2012

Construcción automática de un Cluster Beowulf con ABC GNU/Linux

Soy Iker Castaños, Ingeniero de Sistemas GNU/Linux y economista
Mi idea es utilizar este blog para ir publicando post sobre noticias o guias relativas a administración de sistemas y desarrollo.
Este es mi primer post y por ello he creído conveniente el publicar una guía sobre la utilización de mi proyecto que mas repercusión mediática ha tenido, la distribución ABC (Automated Beowulf Cluster) GNU/Linux. 
El desarrollo del proyecto esta siendo discontinuado ya que empleo mi tiempo libre. La ultima versión fue desarrollada basándose en Ubuntu 9.04.
ABC GNU/Linux permite construir clusters Beowulf en modo live o siendo instalado en uno de los pcs del cluster (frontend). Los nodos arrancan de a traves de la red, son nodos diskless ya que no precisan de disco duro. 
Publique un articulo científico sobre ABC para el IEEE en el ICAT2009 (Bosnia & Herzegovina) pero esta guía os permitirá emplear la distribución de una manera rápida y sencilla.

REQUISITOS MINIMOS (orientativos):

Para poder construir un cluster Beowulf con ABC GNU/Linux es preciso cumplir los siguientes requisitos orientativos:

• Utilizar más de un PC y todos los PCs integren 256 MB de memoria RAM y que al menos sean procesadores P3 500Mhz o equivalente. En caso de que se quiera construir un cluster en modo “live” no es preciso utilizar disco duro alguno, en caso de querer instalar la distribución en el front-end(el PC donde se inserta el disco de ABC) será necesario que ese PC tenga disco duro.
• Los PCs deben están interconectados a través de un switch. Nunca debe utilizar un router para interconectar los PCs. La velocidad del switch y  la categoría del cableado empleado han de ser la mayor posible ya que en caso de que el cluster este formado por un gran numero de PCs la latencia perjudicaría el rendimiento del sistema
•  Descargar la ISO de ABC del mirror de la UPV/EHU o del mirror de sourceforge:
     Mirror sourceforge
     Mirror UPV/EHU

ARRANQUE DEL FRONT-END:

        Como ha sido mencionado en el punto anterior, en uno de los PCs insertaremos el disco de ABC GNU/Linux. En este PC escogeremos en su BIOS que el dispositivo preferido para el arranque sea el DVD. Una vez arrancado el disco se mostrara en la pantalla lo siguiente:


 Como puede ser observado en la captura de la pantalla, puede optarse por las siguientes opciones:

1. Modo “live”. Este modo de arranque se hace sin necesidad de instalación  alguna., todo el sistema arranca en RAM. Presionando la tecla “enter” o  escribiendo “live” y presionando “enter”.
2. Modo “installer”. Mediante este modo se instalara la distribución en el disco duro del front-end. La instalación se lleva a cabo mediante el instalador de Ubuntu, el cual es muy sencillo y amigable para el usuario. Es muy  importante que durante la instalación se cree el usuario “master” con clave “master” y que al PC le pongamos como hostname “master”. Una vez instalado su funcionamiento es idéntico al del modo “live”, solo que no se precisara disco alguno, el arranque será mas rápido y los datos del “home” del usuario permanecerán aun apagando o reiniciando el sistema Para optar  por este modo se debe escribir “install” y presionar la tecla “enter”.
3. Modo “checkdisk”. Es utilizado para comprobar la integridad del soporte óptico. Para optar por este modo se debe teclear “check” y presionar la tecla “enter”.
4. Modo “memtest” Es utilizado para comprobar el estado de la memoria RAM. Para optar por este modo se debe teclear “memtest” y presionar la tecla “enter”.
5. En caso de que se opte por arrancar del disco duro tan solo se debe teclear “hd” y presionar la tecla “enter”
Tanto si se arranca en modo “live” o si se arranca una instalación de ABC GNU/Linux que se encuentre en el disco duro, accederemos al escritorio GNOME como se muestra en la siguiente captura de pantalla:

                                             

Una vez arrancado el front-end se debe arrancar los nodos como se comentara en el siguiente punto.

ARRANQUE DE LOS NODOS:
       
Se debe configurar la BIOS especificando que el dispositivo de arranque sea lan NIC mediante PXE. Una vez configurada la BIOS el arranque de cada nodo se llevara a cabo como se muestra en las siguientes capturas de pantalla:






Como puede observarse cada nodo obtendrá una IP y arrancara a través del front-end. Una vez arrancados todos los nodos podremos utilizar el cluster de la manera que se describe en el siguiente punto.

UTILIZACIÓN DE LAM, OPENMPI Y GANGLIA:

        Todos los PCs del cluster han registrado sus IPs en el fichero “clusterhosts” que se encuentra en el “home” del usuario. Es preciso arrancar el daemon lam para poder ejecutar aplicaciones en paralelo sin ser root. El arranque del daemon lam lo llevaremos a cabo en una consola mediante el comando “lamboot –v clusterhosts” como se muestra en la siguiente pantalla o clickeando el acceso “autolamboot”, el cual se encuentra en el escritorio del front-end:


        Una vez arrancado el daemon lam es preciso compilar la aplicación que vayamos a correr en paralelo mediante el comando “mpicc.openmpi codigofuente –o  binario”.
        Para correr la aplicación en paralelo es necesario ejecutar el comando “mpiexec.openmpi –n N binario”, siendo N el numero de nodos que quieran serutilizados. El ejemplo que se ha enunciado anteriormente sirve para a continuación mostrar la compilación y ejecución en 3 nodos del “Hello World!” paralelizado pero OpenMPI permite trabajar con muchísimas variables tales como número de procesos, numero de nodos, número de procesadores, etcétera. Para más información del uso de openMPI ww.open-mpi.org/
                                            
        A continuación se muestra la compilación de un “Hello World!” cuyo código ha sido paralelizado con las librerías MPI y su posterior ejecución en paralelo mediante el uso de 3 nodos del cluster.


La distribución incluye un monitor de recursos llamado ganglia. Es posible acceder a el presionando el acceso directo llamado “Cluster monitor“. A través del navegador Web firefox se visualizara todos los recursos de CPU; memoria, red, etcétera. A continuación se observa una captura de pantalla de ganglia en funcionamiento:

                                            

CAMBIO DE CONFIGURACIÓN DE RED:

        ABC GNU/Linux ha sido diseñada de tal manera que permite que el front-end pueda utilizar una segundo NIC para conectarse a Internet. Por defecto este NIC obtendra su IP mediante DHCP pero en los casos en los cuales el administrador del cluster quiera cambiar su configuración, deberá modificar el fichero “interfaces” el cual se encuentra en “/home/master/clusternet/”.

REFERENCIAS:

Web de la UPV/EHU sobre ABC GNU/Linuhttp://www.ehu.es/AC/ABC.htm
                                            

9 comentarios:

  1. Claro que sí, empiezas fuerte, pedazo de post!

    ResponderEliminar
    Respuestas
    1. Gracias Iván!!!! A ver si periódicamente voy publicando cosas. Mañana o el miércoles espero publicar un articulo nuevo, a ver que te parece. Un saludete

      Eliminar
  2. Te aradezco por el super post que has hecho,
    si tengo dudas acerca del proyecto de beowulf
    las comentaré.

    ResponderEliminar
  3. Súper ilustrativo y fácil, solo una pregunta. Solo funciona en lenguajes de programación o puedo usarlo por ejemplo con Blender, mysql, juegos, etc. en el Frontend. Saludos

    ResponderEliminar
  4. Con Blender puedes usarlo para renderizar video utilizando un plugin que hay para MPI, MySQL en principio seria mejor que lo implementes en un cluster HA en vez de en un HPC, el tema de juegos mejor comprar un pc para gamers jeje

    ResponderEliminar
  5. muy bueno, lo intentare poner en marcha, gracias !!

    ResponderEliminar
  6. Hola, excelente post quería preguntar como hago mi ubuntu 12.04 en ACB de antemano muchas gracias

    ResponderEliminar
  7. muy lindo lo probé pero lastima que no se actualiza. disculpa puedo utilizar otro lenguaje que no sea C

    ResponderEliminar
  8. tengo un problema cuando entro al menu le doy live o install pero ninguna se ejecuta solo se vuelve a reiniciar y no instala nada
    saludos gracias de antemano

    ResponderEliminar