paint-brush
Cómo construir un clúster Raspberry Pi de 32 núcleos desde ceropor@alejandroduarte
29,185 lecturas
29,185 lecturas

Cómo construir un clúster Raspberry Pi de 32 núcleos desde cero

por Alejandro Duarte9m2022/07/18
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Una Raspberry Pi es una placa de minicomputadora a la que puede conectar un monitor, un mouse y un teclado, e instalar un sistema operativo basado en Linux con una GUI. Puede usarlo en modo "sin cabeza" sin GUI y ejecutar, por ejemplo, un servidor de base de datos. Un clúster como este es una excelente manera de experimentar con sistemas distribuidos. En este artículo, te mostraré cómo construir un clúster Raspberry Pi con: 8 nodos con 32 núcleos, 64 GB de RAM y 2 TB de almacenamiento.

Company Mentioned

Mention Thumbnail
featured image - Cómo construir un clúster Raspberry Pi de 32 núcleos desde cero
Alejandro Duarte HackerNoon profile picture

Una Raspberry Pi es una placa de minicomputadora a la que puede conectar un monitor, un mouse y un teclado, e instalar un sistema operativo basado en Linux con una GUI. O puede usarlo en modo "sin cabeza" sin GUI y ejecutar, por ejemplo, un servidor de base de datos. Hay muchos usos que puede darle a una Raspberry Pi: desde construir un servidor de Minecraft hasta espejos inteligentes, las posibilidades son infinitas.


Tablero de mini computadora


Desde que comencé a descubrir MariaDB y aprendí sobre los clústeres de bases de datos, Distributed SQL y Xpand , la idea de construir un clúster de Raspberry Pi ha estado en mi cabeza. Un clúster como este es una excelente manera de experimentar con sistemas distribuidos.


En este artículo, le mostraré cómo construir un clúster de Raspberry Pi con:


  • 8 nodos
  • 32 núcleos
  • 64 GB de RAM
  • 2 TB de almacenamiento

Que necesitas

Si desea construir su propio clúster, no tiene que comprar 8 dispositivos Raspberry Pi. Incluso un dispositivo es suficiente para aprender cosas. Las instrucciones de este artículo son útiles incluso si planea configurar solo una Raspberry Pi. Mi consejo, sin embargo, es tener al menos tres dispositivos para construir su clúster si realmente desea mejorar sus habilidades en la administración de Linux , Ansible , Docker , Kubernetes , clústeres de bases de datos... ¡lo que sea!


8 x Raspberry Pi 4 Modelo B (8 GB de RAM)


Con eso en mente, reemplace 8 con cualquiera que sea su número. Haz lo mismo con las especificaciones de los dispositivos Raspberry Pi si tienes diferentes modelos con menos o más RAM o almacenamiento. Esto es lo que usé:



Adapte las cantidades a su configuración. Puede obtener una o más fuentes de alimentación Raspberry Pi si tiene muy pocos dispositivos (digamos 1 o 2) o un cargador multi-USB. Si opta por un cargador multi-USB, asegúrese de que cada puerto pueda suministrar al menos 2,4 A (5 V). Elija tarjetas microSD que también se ajusten a sus objetivos y presupuesto. Recomiendo usar tarjetas SD de al menos 32 GB.


En el lado de los cables y la caja, elija cualquier cosa que se adapte a su configuración. No necesariamente necesita ventiladores de enfriamiento, pero los recomiendo si planea dejar sus dispositivos encendidos por períodos prolongados de tiempo.


También recomiendo obtener todos los ingredientes antes de comenzar a "cocinar", especialmente si desea utilizar varios dispositivos Raspberry Pi.

Instalación del sistema operativo Raspberry Pi (sin cabeza)

El sistema operativo (SO) que usaremos es Raspberry Pi OS , un sistema operativo basado en Debian optimizado para placas Raspberry Pi. El sistema operativo Raspberry Pi está instalado en las tarjetas microSD usando su computadora. Más tarde, conecta estas tarjetas microSD a sus dispositivos Raspberry Pi y los inicia.


Obtenga todas las tarjetas microSD y cajas de Raspberry Pi en su escritorio. Necesitará un adaptador de tarjeta SD (generalmente vienen con tarjetas microSD) o un lector USB de tarjetas SD si su computadora en funcionamiento no tiene una ranura para tarjetas SD. Trae un Sharpie también.


Descargue la aplicación Raspberry Pi Imager e instálela en su computadora. Tome una tarjeta microSD y conéctela a su computadora. Abra la aplicación Raspberry Pi Imager y haga clic en ELEGIR SO . De la lista, haga clic en Raspberry Pi OS (otro) y seleccione Raspberry Pi OS Lite (64 bits) si sus dispositivos Raspberry Pi son de 64 bits o Raspberry Pi OS Lite (32 bits) de lo contrario:


generador de imágenes de frambuesa pi


Haga clic en ELEGIR ALMACENAMIENTO y seleccione la tarjeta microSD. Vuelva a verificar que seleccionó la unidad correcta y haga clic en el ícono de "engranaje" (opciones avanzadas). Para el nombre de host, use rpi01 o algo similar. Nombrará los dispositivos como rpi01 , rp02 , rp03 , etc.


Marque las opciones Habilitar SSH y Usar autenticación de contraseña . Establezca un nombre de usuario (dejaré el pi predeterminado) y establezca una contraseña segura.


Marque la opción Configurar LAN inalámbrica e ingrese el nombre y la contraseña de su conexión WiFi. Configure sus ajustes regionales también.


Como tenemos que hacer esto una vez con cada tarjeta microSD, asegúrese de configurar el campo Opciones de personalización de imagen en: para usar siempre . De esta forma se guardarán los ajustes y el proceso será más sencillo para las siguientes tarjetas:


Opciones avanzadas de Raspberry Pi Imager


Ahora, puede hacer clic en GUARDAR y luego ESCRIBIR para iniciar el proceso. Una vez completada, expulse la tarjeta y conéctela a uno de los dispositivos Raspberry Pi, vuelva a colocarla en su caja y marque la caja con el número 01 . Repita este proceso para todos los dispositivos.

Montaje del clúster

Según el tipo de caja de clúster que tenga, el proceso de ensamblaje puede variar. Siga las instrucciones que vienen con su estuche o busque fotografías en línea para tener una idea clara de cómo se deben colocar los dispositivos en las capas.


Montaje del clúster


Recomiendo mirar hacia adelante para decidir qué partes ensamblar primero. Por ejemplo, con el caso que elegí, tuve que instalar los ventiladores de refrigeración antes de montar los dispositivos Raspberry Pi en las capas.


Una vez que monte una Raspberry Pi, use un Sharpie para escribir su número en la capa. Esto lo ayudará en el futuro si tiene que sacar una tarjeta microSD para reconfigurarla o cualquier otra tarea administrativa que implique tocar el hardware.


Todos los dispositivos montados


Una vez que tengas todos los dispositivos montados, conecta los cables USB a los dispositivos Raspberry Pi y al cargador multi-USB. Opcionalmente, puede usar Power over Ethernet y un conmutador de red en lugar del cargador USB si lo prefiere, pero lo dejaré para que lo explore; definitivamente vale la pena comprobarlo.


Puede tener el cargador (o el interruptor de red si lo desea) al lado de su rack Raspberry Pi o conectado a él. Usé bandas elásticas para mantener el cargador conectado al costado de la caja. Funcionó bien.


Con los cables USB enchufados, ¡está listo para iniciar todas esas minicomputadoras! Conecte el cargador y enciéndalo. Dependiendo de los modelos de Raspberry Pi que utilice, pueden tardar un poco en arrancar, así que tenga paciencia. Mientras tanto, disfrute del parpadeo de los LED y del encendido de los ventiladores.


LED parpadeando y ventiladores arrancando

Conexión a través de SSH

Si todo salió bien, debería poder acceder a los dispositivos Raspberry Pi a través de SSH. Pruébelo ejecutando lo siguiente desde su computadora:


 ssh [email protected]


Introduzca su contraseña y responda para añadir el dispositivo a la lista de hosts conocidos. ¡Felicitaciones! Su clúster está activo ahora.


Clúster en vivo

Es posible que desee ejecutar comandos para verificar la información del hardware. Por ejemplo:


  • lscpu : información sobre la arquitectura de la CPU
  • df -H : uso de espacio en disco del sistema de archivos
  • sudo fdisk -l : Información de la partición
  • free -m : Cantidad de RAM usada, libre y total
  • cat /proc/version : información del kernel de Linux

Configuración manual con raspi-config

Si tiene una Raspberry Pi, puede conectarse a ella a través de SSH como se describe anteriormente y usar el programa de utilidad raspi-config para configurar varios ajustes. Puede modificar la conexión WiFi ( S1 ), cambiar el nombre de host ( S4 ) y la contraseña de usuario ( S3 ), y expandir el sistema de archivos ( A1 ), entre muchas otras cosas.


Configuración manual con raspi-config

Configuración automatizada con Ansible

Si tiene más de una Raspberry Pi en su clúster, es posible que desee automatizar el proceso de configuración con una herramienta como Ansible . Con Ansible, puede ejecutar un comando en varias máquinas sin tener que realizar tareas repetitivas. Por ejemplo, digamos que queremos expandir el sistema de archivos en cada Raspberry Pi. Esto se puede hacer desde la línea de comando de la siguiente manera:


 sudo raspi-config --expand-rootfs


Sin la automatización, tendría que usar SSH en rpi01.local , ejecutar el comando anterior y finalizar la sesión de SSH. Tendría que repetir todos estos pasos para rpi02.local , pr03.local , rp04.local , etc. En su lugar, simplemente puede decirle a Ansible que ejecute el comando por usted en todas las máquinas. Veamos cómo hacer esto.


Debe instalar Ansible en un nodo de control que esté conectado a su red local. Puede ser uno de los dispositivos Raspberry Pi, su computadora portátil en funcionamiento o cualquier otra máquina, siempre que ejecute un sistema operativo basado en Unix como Linux o macOS.


Tengo una computadora portátil vieja que reutilicé como una base de datos dedicada conectada a mi red, así que la usé como nodo de control (en un artículo futuro mostraré cómo instalar una base de datos con replicación en los dispositivos Raspberry Pi).


No revisaré las instrucciones sobre la instalación de Ansible ya que el proceso es diferente en diferentes sistemas operativos. Consulta la documentación oficial e instálalo en tu portátil o en cualquier dispositivo que quieras asignar como nodo de control.


Antes de comenzar, recomiendo generar un archivo de configuración de ejemplo que pueda modificar más adelante como desee:


 sudo su ansible-config init --disabled -t all > /etc/ansible/ansible.cfg exit


En este archivo, deshabilite la verificación de clave de host para simplificar el proceso. ¡No haga eso en entornos de producción! Cambia la siguiente línea:


 ;host_key_checking=True


a esto:


 host_key_checking=False


A continuación, debe definir un inventario. Esta es una lista de máquinas que desea controlar con Ansible. El inventario se define en el archivo /etc/ansible/hosts . Por ejemplo, podría agregar las siguientes máquinas al inventario utilizando sus direcciones IP o nombres de host:


 [mymachines] foo.example.com bar.example.com 192.0.2.50 192.0.2.51


Si las máquinas tienen algún tipo de patrón en sus direcciones IP o nombres de host, también puede usar rangos. Esto es lo que puede hacer con sus dispositivos Raspberry Pi. Edite el archivo /etc/ansible/hosts agregando lo siguiente al final:


 [rpis] rpi[01-08].local


Cambie el patrón para que coincida con sus nombres de host y números. Esto es equivalente a:


 [rpis] rpi01.local rpi02.local rpi03.local rpi04.local rpi05.local rpi06.local rpi07.local rpi08.local


En este inventario, rpis es un nombre arbitrario que puede usar para referirse a todos los dispositivos Raspberry Pi cuando ejecuta comandos en ellos usando Ansible.


Debe configurar el nombre de usuario SSH que Ansible utilizará cuando se conecte a las máquinas. Agregue lo siguiente al archivo /etc/ansible/hosts :


 [rpis:vars] ansible_user=pi


Hora de controlar las máquinas. Un buen comienzo es hacerles ping :


 ansible rpis -m ping --ask-pass


Escriba la contraseña SSH. Debería ver en la salida cómo el "ping" es respondido por un "pong" para cada máquina (estoy mostrando solo una aquí):


 rpi01.local | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python": "/usr/bin/python3"  },  "changed": false,  "ping": "pong" }


Volvamos a la expansión del sistema de archivos (aunque creo que hoy en día ya no es necesario, avíseme en los comentarios si puede confirmarlo). Para realizar esta acción en todas las máquinas, ejecute:


 ansible rpis -m shell -a "raspi-config --expand-rootfs" --become --ask-pass


Y tan simple como eso, todos sus dispositivos Raspberry Pi tienen un sistema de archivos ampliado. Este es un buen momento para actualizar el sistema en todas las máquinas:


 ansible rpis -m shell -a "apt update -y" --become --ask-pass ansible rpis -m shell -a "apt upgrade -y" --become --ask-pass


Puede reiniciar todos los dispositivos de la siguiente manera:


 ansible rpis -m shell -a "reboot" --become --ask-pass


Y una vez que haya terminado y desee apagar todas las máquinas de manera segura, simplemente ejecute:


 ansible rpis -m shell -a "poweroff" --become --ask-pass

¿Que sigue?

Este es sólo el comienzo. Ahora tiene un grupo de computadoras pequeñas listas para ser controladas por Ansible. Puede intentar configurar cualquier tipo de software de servidor, incluidos servidores web o bases de datos ( consulte este ejemplo ). También hay mucho más sobre Ansible.


Simplemente rasqué la superficie aquí usando comandos ad-hoc , pero puede, por ejemplo, crear libros de jugadas que contengan el estado en el que desea que esté su clúster. ¡Explora la documentación y diviértete!


También publicado aquí