Es war schlechtes Timing: Direkt nach meiner Bestellung des Raspberry Pi kam das gesuchte 8GB-Modell heraus. Ich haderte damit ihn zurückzuschicken, überprüfte nochmal den Speicherverbrauch meines Zielprogramms und behielt dann doch die 4GB-Variante.
Sie sollte ausreichen. Dabei ersetzt der Raspberry Pi 4 bei mir einen echten Server:
Der hatte zuletzt als Übergangslösung für die Preisaktualisierungsinfrastruktur von pc-kombo gedient. So nett es auch war, mit dem Dual-Xeon und 48GB Ram etwas mehr Leistung zur Hand zu haben: Der Stromverbrauch war zu hoch. Ich optimierte mein Programm, besonders wie es XML und CSV verarbeitet, und bestellte dann nach einiger Recherche den Pi. Und zwar die Komplett-Variante dieses Kits, sie scheint es auf der Seite nicht mehr zu geben.
Warum den Pi kaufen und nicht eine kleine Cloudinstanz mieten? Der Pi hat mehr Leistung als die kleinen Cloudinstanzen:
Das war mit der nicht mehr verfügbaren günstigen 4-Kern ARM64-Instanz von Scaleway und vultrs kleinstem Angebot, dem 512 MB Cloud Compute.
Der Pi sollte mittelfristig günstiger sein als stärkere Angebote von Hostern. Und für meinen Anwendungzweck ist der eigentliche Vorteil eines Hosters unnötig, die schnelle Internetanbindung und die feste IP.
Toll am Raspberry ist das Drumherum. Nicht nur, dass es mehrere Betriebssysteme zur Auswahl gibt. Mit NOOBS gibt es zudem eine wirklich einfach zu bedienende Software, um eines der Betriebssysteme auf die Speicherkarte zu schieben. So schade es auch ist, dass der Pi (noch?) nicht einfach von USB booten kann, ist es so nicht zu komplex. Ich entschied mich für das neueste angebotene Ubuntu, legte die Speicherkarte ein, der Pi startete. Danach war er nur noch in das Armor-Gehäuse einzubauen, das seltsamerweise ohne Anleitung kam – ich hätte mir eine Bestätigung erhofft, welcher Chip mit welchem Thermalpad zu bekleben ist, die passten nämlich nicht 100%. Das Gehäuse testete ich oberflächlich. Es schien einen großen Effekt zu haben. Unter Volllast reduzierte sich die Temperatur um etwa 20°C.
Schließlich konnte der Pi im Schrank seine Arbeit tun.
Zuerst schien alles gut zu laufen. Dann aber blieben die Preisaktualisierungen aus. Der Pi war blockiert. Er war nur noch per IPv6 erreichbar, Pings zu seiner IPv4-Adresse bekamen keine Antwort und er kam nicht mehr aus dem Netzwerk. Das klingt wie ein Routerproblem, aber da keines meiner anderen Geräte das je hatte muss es am Pi liegen. Ich versucht zwei Gegenmaßnahmen.
Aktive Kühlung samt Kühlsteuerung
Komische Probleme -> Stell sicher, dass nichts überhitzt. Ich hatte hier von einem anderen Hardwareprojekt noch einen USB-Lüfter. Wird der Pi auf seinem Gitter platziert kann er nicht zu warm werden, denn der Lüfter produziert einen guten Luftstrom. Leider ist dieser Silent Cooling Fan nicht silent, sondern er brummt ziemlich. Daher schalte ich ihn nur an wenn er gebraucht wird. Per cron wird jede Minute ein Skript gestartet:
root@gordopi:~# crontab -l
# m h dom mon dow command
*/1 * * * * /usr/local/bin/coolcontrol.sh
Dieses prüft die Temperatur und schaltet ab der Maxtemperatur den Lüfter an:
root@gordopi:~# cat /usr/local/bin/coolcontrol.sh
#!/bin/bash
temp=$(</sys/class/thermal/thermal_zone0/temp)
limit=50000
if [ $temp -gt $limit ]; then
/usr/local/bin/uhubctl -l 2 -a 1
else
/usr/local/bin/uhubctl -l 2 -a 0
fi
Dafür aktiviert es mit uhubctl die USB-Ports bzw. deaktiviert sie. Das basiert auf einem Blogartikel, den ich jetzt leider nicht mehr finde.
Leider half das nicht, der Pi verliert trotzdem seine Verbindung.
Stabilitätscheck
Also starte ich ihn in diesem Fall neu:
root@gordopi:~# crontab -l
# m h dom mon dow command
7 */1 * * * /root/check_internet.sh
Stündlich wird ein Skript ausgeführt, das die Internetverbindung prüft:
root@gordopi:~# cat check_internet.sh
#!/bin/bash
ping -c4 www.google.com > /dev/null
if [ $? != 0 ]
then
echo "No network connection, restarting pi"
/usr/sbin/reboot
fi
Das basiert auf diesem Artikel. Einfach nur das Netzwerkdevice neuzustarten ging übrigens nicht, in dem Problemzustand erkennt ifdown
eth0 als nicht-existent, obwohl ifconfig
es auflistet.
Als Workaround funktioniert das bisher, schön ist es nicht. Vielleicht werde ich nach der Beta auf die 64-Bit-Version von Raspberry Pi OS wechseln.