Construyendo nuestros propios nodos

created: domingo, sept. 10, 2023

Desde que comenzamos a medir nuestra demanda energética, también empezamos a desarrollar conceptos sobre cómo podríamos mejorar la eficiencia energética. Personalizar nuestras propias máquinas, más que solo el software, parece obvio, pero también es más fácil decirlo que hacerlo.

Primero tuvimos que decidir sobre qué hardware queríamos construir. La mayoría de los proveedores de la nube comienzan con máquinas de carga de trabajo bastante pesada y se optimizan para la carga máxima. Nuestra configuración era diferente y queríamos mover la aguja en el extremo bajo, no en el alto. Eso significaba que los servidores tradicionales no estaban realmente en el alcance para esta tarea. Mirando el mercado, algo entre máquinas ARM o RISC-V de pequeño factor parecía una elección fácil.
Lamentablemente, integrar esas máquinas en una configuración más parecida a un servidor requiere bastante preparación. Además, vimos que faltaban 2 propiedades en todas esas configuraciones.

Características Requeridas

Un tipo de máquina que encaja casi perfectamente con estas características es el portátil. Estas máquinas usualmente tienen un pequeño factor de forma que ya está optimizado para el consumo de energía. Además, esas máquinas vienen con su propia batería. El problema aquí es que los portátiles vienen con mucho hardware (teclado, monitor, touchpad) que no nos sirve. Así que empezamos a buscar algunos proveedores de portátiles bare-bone donde pudiéramos empezar a evaluar.

Esto nos llevó a frame.work. Framework es un proveedor de portátiles que vende máquinas altamente personalizables y reparables. Además, ya teníamos una máquina Framework que pudimos adaptar para nuestros experimentos.

Configuración del taller

Después de probar nuestra configuración con el portátil Framework existente, ordenamos 2 ‘máquinas’ más. Básicamente pedimos la placa base (i5 13ª generación) con algo de memoria y SSD, así como batería.

El montaje fue solo atornillar los componentes en una placa base y conectarlo a la corriente. Para la red estamos usando WiFi. Aquí una foto de cómo armamos la máquina en nuestro taller.

machine-image

Software

Después de tener el hardware configurado, empezamos a mirar el software. Nuestra configuración base requiere Linux, pero más allá de eso no habíamos establecido ningún proveedor o versión. Así que comenzamos con Fedora, ya que este era también el software que usábamos en nuestro portátil de muestra. Lamentablemente, descubrimos rápidamente que hacer una instalación desatendida en una máquina sin monitor ni teclado, y sin red (ya que no pudimos configurar wifi) era algo bastante complicado. Para no perder mucho tiempo en esta dificultad, optamos por instalar Fedora en nuestro portátil de muestra y simplemente clonar el SSD a las dos nuevas máquinas. De esta manera pudimos construir un sistema base con teclado y monitor conectados, y también preconfigurar la red y SSH según fuera necesario. Después de obtener los SSD clonados, simplemente los atornillamos de nuevo en nuestros hosts y conectamos el adaptador de corriente.

Primer arranque

machine-image

machine-image

Después del primer arranque, empezamos a investigar el problema de la monitorización de energía. Al principio pensamos que podríamos aumentar la capacidad de la batería conectando otra batería comercial disponible al puerto USB-C. Desafortunadamente, esto no funcionó. Fue muy poco fiable porque el paquete de batería no suministraba suficiente energía para que el portátil realmente cargara mientras estaba funcionando. Así que tuvimos que saltarnos esta parte del proyecto. Eso nos dejó con la batería de 55Wh incluida con el Framework.

Control de energía

Como mencionamos antes, queríamos que estas máquinas solo funcionaran/consumieran energía cuando realmente estuviéramos generando energía desde nuestros paneles solares. Así que necesitábamos un enchufe externo que pudiera tanto medir como encender/apagar la energía. Decidimos usar algunos CloudFree Power Plugs, pero compartiremos esto más adelante. Lo importante aquí es que esos dispositivos tienen un endpoint API local tanto para la medición de energía como para el interruptor de encendido/apagado.

Reflexiones Finales

Así que ahora tenemos configurado el hardware. El software también está listo. Probemos ejecutar estos dispositivos y comencemos a optimizar cosas como el ciclo de carga, niveles de consumo, y demás. Por ahora, los usaremos como nodos trabajadores asincrónicos para proporcionar más capacidad computacional a nuestra infraestructura.