Darling in the cluster: Montando un cluster con Raspberry Pi

Escrito por: Ángel González
Aquí Zero Two, o al menos su alter ego de espuma, posa junto a la torre de nodos. No sé si será que el nombre le evoca sabores dulces.

Objetivo

Este artículo está basado en una prueba de concepto que quería aplicar desde hace bastante tiempo: montar un cluster Beowulf para cacharrear y probar ciertos conceptos basado en sistemas múltiples.
Las finalidades de este concepto son las siguientes:

  1. Construir un cluster tipo Beowulf que requiera poco espacio y poco consumo eléctrico para un servicio 24/7.
  2. Montaje de un monitor web que compruebe el estado de los nodos.
  3. Aprovechar las funciones del servicio NFS en el nodo maestro para reducir el estrés en las tarjetas SD.
  4. Aprender el funcionamiento de balanceo de carga en servicios web.
  5. Montar un sistema que permite donar computación a proyectos científicos a través de BOINC (como equipos individuales).
  6. Probar la programación en computación distribuida (MPI).

Es obvio que no estoy haciendo nada nuevo ni tiene mayor rendimiento que, por ejemplo, mi estación de trabajo o la computación por GPU. La finalidad de esto es cacharrear, aprender y divertirse (y ya por el título se nota que no estoy siendo serio en esto). Es más, hay unos cuantos proyectos similares de mayor o menor envergadura, como el cluster de la Universidad de Southampton (2012), el primero de una larga lista de clusters usando Raspberry Pi, el corazón de este proyecto.

Empecemos...

1. Hardware

Como ya mencioné, los nodos de computación van a ser ordenadores Raspberry Pi. Muchos van a preguntarse el porqué de ello, habiendo otros modelos de ordenadores en placa única (Single Board Computers) como los ODROID XU4, los cuales son más potentes o incluso haber optado por algunos más baratos basados en, ejem, AllWinner.
Los motivos principales de elección fueron la documentación disponible, la comunidad alrededor del dispositivo y porque encontré las Raspberry a mitad de precio (la caja estaba en mal estado y no lo podían vender).

Pero tengo que reconocer que voy a hacer algo de trampa. El nodo maestro va a ser un pc industrial que tiene un procesador Intel Atom D2550 y 4GB de memoria RAM, encontrado también por Internet (me costó igual que una Raspberry).

Y con ello, paso a mostrar la lista de hardware:

  • 7 Raspberry Pi variadas (versión 2 o superior). Concretamente 6 Pi 2 y 1 Pi 3. Esto serán los "nodos de cálculo".
  • 1 PC industrial con procesador Intel Atom D2550. Esto será el nodo maestro, el servidor NFS y la puerta de enlace de los nodos. Aunque también valdría un router que permita realizar estas funciones.
  • 1 Adaptador AC a 5 puertos USB de 60W.
  • 1 Switch Gigabit. Concretamente es un modelo concreto de D-Link, ya veréis porqué.
  • 8 cables USB a microUSB.
  • 9 cables Ethernet.
  • 7 tarjetas microSD.
  • 1 disco duro. Esto es para almacenamiento NFS.
  • 1 SSD (opcional).
  • Soportes para apilar las Raspberrys. Parece que estaban en Amazon pero ya no lo veo. Aun así están disponibles en ModMyPi (aunque son otro modelo)

Creo que el precio por el que compré todo (teniendo en cuenta que muchas partes vienen de segunda mano), fue de 400€ aproximadamente. Se puede ver que hay que tener muchas ganas de ponerse con esto, ya que se puede obtener una tarjeta gráfica de calidad por precio similar y estudiar computación por GPU (OpenCL).

Aquí tenemos los dos conjuntos montados. Resulta irónico que el PC industrial ocupe más que la torre de Raspberrys con el adaptador y el switch.

Como podéis ver en la foto, la forma de la torre de nodos es idéntica a la que hicieron en la revista Make: , solo que en lugar de 4 hay 7 nodos. Me inspiré en el diseño que hicieron.

En el siguiente artículo, explicaré el primer objetivo del proyecto: el montaje del cluster. Además, mostraré los trucos que he llevado a cabo para hacer más compacto el sistema.