Estaré publicando algunos videos discutiendo la computación en clúster con la Raspberry Pi en las próximas semanas, y voy a publicar el video + la transcripción en mi blog para que pueda seguir a lo largo, incluso si usted no disfruta de sentarse a través de un video 🙂

Este es un Módulo de Computación Raspberry Pi.

Y esto es una pila de 7 Raspberry Pi Compute Modules.

Es lo mismo que una Raspberry Pi modelo B, pero deja de lado todos los puertos IO para conseguir un factor de forma más flexible, que según la Fundación Rasbperry Pi es «adecuado para aplicaciones industriales». Pero en mi caso, estoy interesado en usarlo para construir un clúster de Raspberry Pis.

Voy a explorar el concepto de computación en clúster usando Raspberry Pis, y estoy emocionado de estar en posesión de una placa de clúster basada en Raspberry-Pi que cambia el juego, la Turing Pi.

Llegaré a la Turing Pi pronto, pero en este primer episodio, quería cubrir por qué me encanta usar Raspberry Pis para clusters.

Pero primero, ¿qué es un cluster?

Computación en cluster

Mucha gente trata de resolver problemas complejos con los ordenadores. A veces hacen cosas como servir una página web a una gran cantidad de visitantes. Esto requiere mucho ancho de banda y muchos ordenadores «de apoyo» para gestionar cada una de las millones de peticiones. Algunas personas, como los meteorólogos, necesitan encontrar los resultados de miles de millones de pequeños cálculos.

Hay dos maneras de acelerar este tipo de operaciones:

  1. Escalando verticalmente, donde se tiene un único servidor, y se pone una CPU más rápida, más RAM y conexiones más rápidas.
  2. Escalando horizontalmente, donde se dividen las tareas y se utilizan varios ordenadores.

Al principio, sistemas como los superordenadores Cray llevaron el escalado vertical al extremo. Un enorme ordenador que costaba millones de dólares fue el más rápido durante un tiempo. Pero este enfoque tiene algunos límites, y tener todo invertido en una sola máquina significa tiempo de inactividad cuando necesita mantenimiento, y actualizaciones limitadas (a menudo dolorosamente caras).

En la mayoría de los casos, es más asequible -y a veces, la única manera posible- escalar horizontalmente, utilizando muchos ordenadores para manejar grandes cálculos o mucho tráfico web.

La agrupación se ha hecho más fácil con la llegada de los clústeres de estilo Beowulf en los años 90 y el nuevo software como Kubernetes, que distribuye sin problemas las aplicaciones a través de muchos ordenadores, en lugar de colocar manualmente las aplicaciones en diferentes ordenadores.

Incluso con este software, hay dos grandes problemas con el escalado horizontal, especialmente si usted está en un presupuesto:

  1. Cada ordenador cuesta un poco de dinero, y requiere energía individual y la red. Para unos pocos ordenadores esto no es un gran problema, pero cuando empiezas a tener cinco o más ordenadores, es difícil mantener las cosas ordenadas y frescas.
  2. La gestión de los ordenadores, o «nodos» en el lenguaje del clúster, es fácil cuando hay uno o dos. Pero al aumentar a cinco o diez, incluso hacer cosas sencillas como reiniciar los servidores o poner en marcha un nuevo trabajo requiere un software que lo coordine todo.

La Raspberry Pi Dramble

En 2015, decidí montar mi primer ‘bramble’. Un bramble es un clúster de servidores Raspberry Pi. «¿Por qué se llama bramble?», te preguntarás. Bueno, porque un racimo natural de frambuesas que podrías comer se llama ‘bramble’.

Así que empecé a construir un bramble usando un software llamado Ansible para instalar una pila de software común a través de los servidores para ejecutar Drupal. Configuré Linux, Apache, MySQL y PHP, lo que se conoce comúnmente como la pila ‘LAMP’.

Como mi bramble ejecutaba Drupal, me inventé el portmanteau ‘dramble’, y así nació el Raspberry Pi Dramble.

La primera versión del clúster tenía seis nodos, y yo tenía un montón de cables micro USB conectados a un adaptador de corriente USB, además de un montón de cables Ethernet conectados a un conmutador ethernet de 8 puertos.

Cuando salió el modelo 3 de Raspberry Pi, lo reduje a 5 nodos.

Después, cuando se presentó la Raspberry Pi Zero, que tiene el tamaño de un chicle, compré cinco de ellas e hice un clúster diminuto usando adaptadores WiFi USB, pero me di cuenta rápidamente de que el viejo procesador de la Zero era extremadamente poco potente, y abandoné ese clúster.

En 2017, decidí empezar a usar Kubernetes para gestionar Drupal y la pila LAMP, aunque seguía usando Ansible para configurar los Pis individuales y conseguir instalar Kubernetes en ellos.

Y el Dramble de hoy, que se compone de cuatro placas Raspberry Pi modelo 4, utiliza la placa oficial Power-over-Ethernet (PoE), lo que me permitió abandonar la maraña de cables de alimentación USB, pero requiere un interruptor PoE más caro.

El Pi Dramble no es del todo serio, sin embargo. ¡Me he divertido un poco con él, incluso haciendo un homenaje a una vieja película que disfruté:

A través de toda esta experiencia, he documentado cada aspecto de la construcción, incluyendo todos los playbooks de Ansible, como un proyecto de código abierto que está vinculado desde pidramble.com, y muchos otros han seguido estos planes y construido el Pi Dramble por su cuenta!

¿Por qué Raspberry Pi?

Todo esto es para decir que he pasado mucho tiempo gestionando un clúster de Raspberry Pis, y la primera pregunta que me suelen hacer es «¿por qué elegiste Raspberry Pis para tu clúster?»

Es una muy buena pregunta.

Una Raspberry Pi individual no es tan rápida como la mayoría de los ordenadores modernos. Y tiene una memoria RAM limitada (incluso la última Pi modelo 4 tiene, como mucho, 4 GB de RAM). Y tampoco es muy bueno para el acceso al disco rápido o fiable.

Es un poco más rentable y por lo general más eficiente en energía para construir o comprar una pequeña máquina NUC («Next Unit of Computing») que tiene más rendimiento de la CPU en bruto, más memoria RAM, un SSD rápido, y más capacidades de expansión.

¿Pero es la construcción de algunas VMs para simular un clúster en un NUC divertido?

Yo diría, «No». Bueno, no tanto como construir un clúster de Raspberry Pis!

Y gestionar servidores ‘bare metal’ en lugar de máquinas virtuales también requiere más disciplina para el aprovisionamiento, la creación de redes y la orquestación. Esas tres habilidades son muy útiles en muchos trabajos modernos de TI!

También, mientras que usted puede querer optimizar para el rendimiento puro, hay veces, como cuando la construcción de clusters Kubernetes, donde se desea optimizar para el número de núcleos de la CPU. Si quisieras construir un equipo con 32 núcleos de CPU, podrías considerar el AMD ThreadRipper 3970x, que tiene 32 núcleos. El problema es que el procesador cuesta casi 2.000 dólares, y eso es sólo el procesador; el resto de los componentes del ordenador te llevaría a superar los 3.000 dólares en total para este equipo.

En el caso de la Raspberry Pi, cada placa de cálculo tiene una CPU de 4 núcleos, y juntando 7 Pis obtienes 28 núcleos. Casi el mismo número de núcleos, pero cuesta menos de 300 dólares en total. Incluso con el coste añadido de una Turing Pi y una fuente de alimentación, ¡es el mismo número de núcleos de CPU por una cuarta parte del coste!

Sí, sé que 1 núcleo ThreadRipper ≠ 1 núcleo Pi CM; pero en muchas aplicaciones K8s, un núcleo es un núcleo, y cuantos más mejor. No todas las operaciones están ligadas a la CPU y se beneficiarían de tener un rendimiento bruto 4-8x más rápido, o de las muchas otras pequeñas sutilezas que ofrece el ThreadRipper (como más caché).¡

Por último, una de las lecciones más importantes que he aprendido trabajando con Arduinos y Raspberry Pis es la siguiente: trabajar con limitaciones de recursos como la RAM limitada o la IO lenta pone de manifiesto las ineficiencias en tu código, de una manera que nunca notarías si siempre construyes y trabajas en la última CPU Core i9 o ThreadRipper con montones de RAM y 100s de miles de IOPS!

Si no puede conseguir que algo funcione bien en una Raspberry Pi, considere esto: muchos teléfonos inteligentes y ordenadores de gama baja tienen limitaciones similares, y las personas que utilizan estos dispositivos tendrían el mismo tipo de experiencia.

Además, incluso en las instancias rápidas de computación en la nube, se encontrará con cuellos de botella de red y IO de vez en cuando, y si su aplicación falla en esas situaciones, podría estar en un mundo de dolor. Conseguir que se ejecuten en una Raspberry Pi puede ayudarte a identificar estos problemas rápidamente.

¿Por qué Turing Pi?

Así que, volviendo a la Turing Pi: ¿qué hace que esto sea mejor que un clúster de Raspberry Pis estándar, como la Pi Dramble?

Bueno, suscríbete a mi canal de YouTube: ¡exploraré lo que hace que la Turing Pi funcione y cómo configurar un nuevo clúster en mi próximo vídeo! Si te ha gustado este contenido y quieres ver más, considera apoyarme en GitHub o Patreon.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.