Unsere eigenen Nodes bauen

created: Sonntag, Sept. 10, 2023

Seit wir begonnen haben, unseren Energiebedarf zu messen, entwickeln wir auch Konzepte, wie wir die Energieeffizienz verbessern können. Eigene Maschinen zu individualisieren, mehr als nur die Software, scheint offensichtlich, ist aber leichter gesagt als getan.

Zuerst mussten wir herausfinden, auf welcher Hardware wir aufbauen wollen. Die meisten Cloud-Anbieter starten mit eher leistungsstarken Maschinen und optimieren für Spitzenbelastungen. Unser Setup war anders und wir wollten vor allem im unteren Leistungsbereich Verbesserungen erzielen, nicht im oberen Bereich. Das bedeutete, dass traditionelle Server für diese Aufgabe nicht wirklich in Frage kamen. Auf dem Markt schien etwas zwischen kleinen ARM- oder RISC-V-Maschinen mit kleinem Formfaktor eine einfache Wahl zu sein.
Leider erfordert die Integration dieser Maschinen in eine serverähnliche Umgebung einiges an Vorbereitung. Außerdem haben wir festgestellt, dass bei all diesen Setups zwei Eigenschaften fehlten.

Erforderliche Eigenschaften

Eine Maschinentyp, der diese Eigenschaften fast perfekt erfüllt, ist das Notebook. Diese Geräte haben in der Regel einen kleinen Formfaktor und sind bereits auf Energieeffizienz optimiert. Außerdem verfügen diese Maschinen über eine eigene Batterie. Das Problem hierbei ist, dass Notebooks viel Hardware (Tastatur, Monitor, Touchpad) mitbringen, die wir nicht benötigen. Also suchten wir nach Barebone-Notebook-Anbietern, bei denen wir mit der Evaluierung beginnen konnten.

Das brachte uns zu frame.work. Framework ist ein Notebook-Anbieter, der hochgradig anpassbare, reparierbare Maschinen verkauft. Außerdem hatten wir bereits ein Framework-Notebook, das wir für unsere Experimente umrüsten konnten.

Workshop-Setup

Nachdem wir unser Setup mit dem vorhandenen Framework-Notebook getestet hatten, bestellten wir zwei weitere „Maschinen“. Was wir im Grunde bestellten, war das Mainboard (i5 der 13. Generation) mit etwas Arbeitsspeicher und SSD sowie Batterie.

Der Zusammenbau bestand nur darin, die Komponenten auf eine Grundplatte zu schrauben und mit Strom zu verbinden. Für die Netzwerkanbindung verwenden wir WLAN. Hier ein Bild davon, wie wir die Maschine in unserem Workshop zusammengebaut haben.

machine-image

Software

Nachdem die Hardware aufgebaut war, starteten wir mit der Software. Unser Basissystem benötigt Linux, aber weiter sind wir bei Hersteller oder Version nicht festgelegt. Also begannen wir mit Fedora, da dies auch die Software ist, die wir auf unserem Beispielnotebook verwendet hatten. Schnell stellten wir jedoch fest, dass eine unbeaufsichtigte Installation auf einer Maschine ohne Monitor und Tastatur sowie ohne Netzwerk (da wir WLAN nicht einrichten konnten) ziemlich schwierig war. Um nicht zu viel Zeit mit diesem Problem zu verbringen, entschieden wir uns, Fedora auf unserem Beispielnotebook zu installieren und die SSD einfach auf die zwei neuen Maschinen zu klonen. So konnten wir ein Basis-Betriebssystem mit angeschlossener Tastatur und Monitor aufbauen und auch Netzwerkeinstellungen und SSH vorab konfigurieren. Nachdem wir die geklonten SSDs hatten, schraubten wir sie einfach in die Hosts und schlossen das Netzteil an.

Erster Start

machine-image

machine-image

Nach dem ersten Start beschäftigten wir uns mit dem Problem der Energieüberwachung. Zunächst dachten wir, wir könnten die Batteriekapazität erhöhen, indem wir eine weitere handelsübliche Batterie über den USB-C-Anschluss anschließen. Leider funktionierte das nicht. Es war sehr unzuverlässig, da das Batteriepäckchen nicht genug Strom lieferte, damit das Notebook während des Betriebs geladen werden konnte. Deshalb mussten wir diesen Teil des Projekts überspringen. Uns blieb die mitgelieferte 55Wh-Batterie des Framework-Notebooks.

Energieverwaltung

Wie bereits erwähnt, sollten diese Maschinen nur dann laufen/strom verbrauchen, wenn wir tatsächlich Strom aus unseren Solarpanels erzeugen. Deshalb benötigten wir einen externen Netzstecker, der sowohl Strom messen als auch ein-/ausschalten kann. Wir entschieden uns für einige CloudFree Power Plugs, mehr dazu später. Wichtig ist hier, dass diese Geräte über eine lokale API-Schnittstelle sowohl zur Strommessung als auch zum Ein-/Ausschalten verfügen.

Abschließende Gedanken

Nun haben wir die Hardware aufgebaut. Die Software ist ebenfalls einsatzbereit. Versuchen wir, diese Geräte laufen zu lassen und beginnen wir, Dinge wie Ladezyklen, Verbrauchsniveaus und so weiter zu optimieren. Vorerst verwenden wir sie als asynchrone Worker-Nodes, um mehr Rechenleistung für unseren Stack bereitzustellen.