Gekkonier hat geschrieben:
WoNáDo hat geschrieben:
Für meinen Obstrechner-Zoo (1*Banana Pi Pro, 3*Raspberry Pi 1B, 1*Raspberry Pi 2B, 2*Raspberry Pi 3B) experimentiere ich derzeit mit Erlang/OTP (die Betonung liegt auf OTP), um mir ein verteiltes System in einem eigenen Subnetz zu erstellen.
Jetzt bin ich aber neugierig geworden! Was in etwa ist das Ziel der Installation? Ich könnte mir z.B. einen verteilten Raytracer oder Homeautomation vostellen. Allein, mir fehlt die Phantasie!
lg, Gekko!
Die Grundidee ist uralt. Mitte der 1980er Jahre sagte ein Kollege und guter Freund im Umfeld der System12-Switch-Entwicklung (
https://de.wikipedia.org/wiki/System_12) als erster, dass er gerne solch ein Rechnersystem zuhause hätte. Der Grund war natürlich die unglaubliche Verfügbarkeitsrate (30 Minuten Totalausfall in 25 Jahren), sowie die Möglichkeit, Prozesse dynamisch parallel laufen zu lassen. Damals war das natürlich aus Kostengründen völlig ausgeschlossen und das System war in Bezug auf dynamisches Laden von Prozessen, also einer Funktion, die bei einem Universalrechnersystem unbedingt notwendig ist, schwach auf der Brust.
Der letzte Punkt, sowie die Möglichkeit hoch verfügbare Systeme zu schreiben, hat sich mit der Verbreitung von Erlang/OTP erledigt, aber das Kostenproblem im Zusammenhang mit der Hardware erledigte sich eigentlich erst mit dem Aufkommen der Obstrechner. Ausserdem erlaubt der geringe Energiebedarf dieser Rechner einen kostengünstigen 7/24-Betrieb.
So viel erst einmal zum Hintergrund, nun zu den Zielen.
Mit Heimautomatisierung beschäftige ich mich nicht, allerdings der oben angesprochene ehemalige Kollege von mir. Eine andere Anwendung einzelner Obstrechner könnte bei mir noch ein Videorekorder-Ersatz werden, aber das weiss ich noch nicht und es hängt auch nicht mit der an Anfang beschriebenen Anwendung zusammen. Ich beschreibe erst einmal die Hardware-Topologie, weil es ansonsten schwer zu erklären ist. Diese habe ich schon in dieser kompletten Zusammensetzung erfolgreich getestet.
Der
Banana Pi Pro dient vorrangig als Router zwischen meinem normalen Heimnetz über WLAN und dem Obstrechner-Ethernet-Netz, sowie als Datenserver, an dem direkt ein 125GB SSD-Laufwerk dran hängt, sowie per USB-Hub bei Bedarf mehrere Platten, die per NSF in das Obstrechnernetz eingebunden werden. Ein
Banana Pi Pro wurde es in erster Linie wegen des schon vorhandenen WLAN und eines konstruktiven Mangels der
Raspberry Pi. Bei diesen läuft alles über den USB-Bus, also die Ethernet-Schnittstelle und alle USB-Schnittstellen. Ich versuchte einen
Raspberry Pi mittels eines USB-WLAN-Sticks als Router einzusetzen, was letztendlich wegen zu geringer Zuverlässigkeit scheiterte (ich fand später im Netz diverse Beiträge anderer Nutzer, die gleiche oder ähnliche Probleme hatten). Der
Banana Pi Pro wird, wie alle anderen Obstrechner auch,
Headless betrieben, ist also weder mit einer Tastatur, noch einem Bildschirm verbunden. Wenn er Strom erhält, dann muss er komplett alleine starten und im WLAN verfügbar sein, so dass man per
SSH-Kommando an den Rechner kommt.
Die ganzen
Raspberry Pi werden nun über einen LAN-Switch mit dem
Banana Pi Pro verbunden und haben ausser diesen Kabeln keine weiteren belegten Anschlüsse. Sie sind also von aussen (dem WLAN des Heimnetzes) nur indirekt über den
Banana Pi Pro erreichbar und müssen natürlich, sobald sie Saft erhalten, von allein und ohne Eingriff von aussen starten.
Diese Konstellation habe ich getestet und die funktionierte nach einiger Zeit der Fummelei einwandfrei. Damit habe ich also ein lauffähiges Rechnercluster zur Verfügung, mit welchem ich 7/24 Daten verarbeiten und analysieren kann.
Das ist jedoch noch nicht ausreichend, weil zu kompliziert handhabbar. Ich will dieses Cluster (und später eventuell weitere) für mehrere verschiedene Aufgaben einsetzen:
- Rohdatenbereinigung und -vorverarbeitung
- Training im Rahmen von Machine Learning
- Datenanalyse mittels statistischer Verfahren und Machine Learning
Hier bietet sich nun direkt
Erlang/OTP an, weil ich von dort aus die ganze Rechneransammlung als ein System behandeln kann, weil ich von Erlang aus problemlos in anderen Sprachen geschriebene Programme starten und kontrollieren kann und weil sich Aufgaben dynamisch relativ leicht verteilen lassen. Diesbezüglich habe ich auch schon einige Experimente durchgeführt, allerdings in erster Linie auf mehreren vernetzten Notebooks, weil ich mir das alles auf dem Bildschirm ansehen wollte. Es lässt sich leicht auf die Obstrechner übertragen, aber dann sehe ich nicht mehr so viel von dem Live-Geschehen, was bei Experimenten natürlich dumm wäre.
Aber auch das reicht noch nicht, weil es immer noch viel zu kompliziert in der Handhabung ist.
Nun bin ich in der Phase mir ein Framework zu definieren, welches bezüglich der Prozessbehandlung meinen Vorstellungen entspricht. Dieses Ziel ist schon fast erreicht, weil ich im Rahmen der generischen OTP-Elemente meine Arbeitsprozesse, die ja in einer ganz anderen Sprache geschrieben sein können, recht einfach datengesteuert einbinden kann. Ich benötige also keine (oder sehr wenig) zusätzliche Programmierung, sondern nur Konfigurationsdateien.
Leider reicht das auch noch nicht aus, weil ich für die ganze Datenbehandlung, inklusive des Zugriffs auf Web-Daten, ein ähnliches allgemeingültiges Konzept im Framework benötige. Das steckt aber noch in den Kinderschuhen.
Einen der
Raspberry Pi 3B will ich ausserhalb dieses geschlossenen Clusters betreiben, allerdings mit einer, wie auch immer gearteten, sicheren Verbindungsmöglichkeit zu selbigem. In meinem Heimnetz will ich auf diesem Stück Obst einen Hidden-Service (
xyz.onion) einrichten. Dieser wäre dann über das Tor-Netzwerk erreichbar und ich könnte mich mit
SSH einloggen, wenn ich aus irgend einem Grund mal einen Zugriff von aussen benötige. Das ist aber noch völlig in der Konzeptionsphase und ich muss erst einmal ein paar "Kleinigkeiten" lösen, wie die regelmässige automatische Unterbrechung meiner DSL-Verbindung durch die Telekom zwecks Wechsel der IP-Adresse. Ich muss dafür Sorge tragen, dass der Obstrechner das mitbekommt und sich anschliessend erneut beim Tor-Netzwerk bemerkbar macht.
Aber diesbezüglich fliesst noch viel Wasser den Rhein hinab...