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
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 que puede darle a una Raspberry Pi: desde construir un servidor de Minecraft hasta espejos inteligentes, las posibilidades son infinitas.
Desde que comencé a descubrir MariaDB y aprendí sobre los clústeres de bases de datos, y , 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 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 , , , , de datos... ¡lo que sea!
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é:
8 x (8 GB de RAM)
1 de 60 W (10 puertos).
8 (5 A, 40 W, 23 cm)
8 (256 GB)
2 (4 capas con ventilador de refrigeración)
Adapte las cantidades a su configuración. Puede obtener una o más 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 , 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 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:
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:
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.
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.
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 y un 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.
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:
Introduzca su contraseña y responda sí para añadir el dispositivo a la lista de hosts conocidos. ¡Felicitaciones! Su clúster está activo ahora.
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 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 . 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 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 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:
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:
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í):
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 ( ). También hay mucho más sobre Ansible.
Simplemente rasqué la superficie aquí usando , pero puede, por ejemplo, crear libros de que contengan el estado en el que desea que esté su clúster. ¡Explora la y diviértete!