Getrieben von der Begeisterung über die vielen im Internet kursierenden Projekte, bei denen aus diversen Embedded Systems ein Cluster zusammengebastelt wird habe ich mich dazu entschieden es ebenfalls zu tun. Ich baue einen Cluster. Allerdings sehe ich es nicht ein viel Geld dafür auszugeben. Und aus meiner Sicht ist das Thema insoweit bereits abgenutzt wenn man nur ein paar Raspberry Pi's dazu verwendet - das Projekt wird von der Community viel zu gut unterstützt! ;-)
Für meinen Cluster sollte das umsetzen/aufbauen im Vordergrund stehen und nicht der simple Aufbau durch einfaches zusammenstecken von Verbraucherfreundlichen Komponenten. Daher habe ich mich dafür entschieden alle Hauptkomponenten ausschließlich von chinesischen Händlern zu bestellen, daher auch der Name ChinaCluster:
- Switch (8Port 10/100 MBit)
- Netzteil 5V 12A
- Netzwerkkabel 0.5M - Schirmung unbekannt aber das Kabel ist blau
- 5x OrangePi PC - ARM CPU (4 cores), 1GB RAM
- 5x SD Karten 8GB
- 230V Buchse mit Sicherung und Schalter
- 8 Port Releais-Platine
- ILI9341 2,2" TFT - Display
Aus anderen Quellen habe ich noch die folgenden Komponenten erhalten, bestellt oder in der Bastelkiste gefunden:
- MX-Board von Aaron - auf tindie verfügbar
- Diverse eigens entworfene Adapter-Platinen für den Cubietruck - auf oshpark verfügbar
- Eine eigens entworfene Platine für die Verteilung der 5V-Spannung des Netzteils an die einzelnen Komponenten
- Diverse Stecker und Buchsen welche hauptsächlich auf eBay geklickt wurden
- Ein 5 Jahre alter PC-Gehäuse-Lüfter
MX-Board von Aaron |
Cubietruck Adapter - Platinen |
Weiterhin ist als Master-Einheit des Clusters ein Cubietruck angedacht. Auf dem Cubietruck ist ein armbian.com installiert - jedoch ohne X11. Dieser wird das Herzstück des Clusters sein und die folgenden Aufgaben übernehmen:
- Default-Gateway in ein externes Netzwerk per LAN/WLAN - für die Cluster-Nodes
- Firewall zum Schutz der Cluster-Nodes von außen
- Cluster Master-Einheit
- Die Clustering-Software wird zunächst OpenMPI 1.10.0 sein
- DHCP-Server für das Cluster-eigene Netzwerk
- Steuerung des ILI9341 2,2" TFT - Displays
- Abfrage der Tasten des MX-Boards sowie Steuerung derer Beleuchtung
- Bereitstellung des User-Interfaces auf dem TFT-Display (python curses Implementierung)
- NFS-Server
- Konfiguration und Überwachung der Cluster-Nodes
Im Moment arbeite ich an der Software für das User-Interface, Steuerung per MX-Board und die Anzeige auf dem TFT funktionieren bereits. Inhaltlich, was die möglichen Konfigurationseinstellungen und Anzeigen wie z.B. der Cluster-Auslastung angeht müssen noch implementiert werden. Die Automatisierungsscripte für das Management und die Konfiguration der Cluster-Nodes ist soweit implementiert das diese getestet werden können, sobald die Hardware fertig aufgebaut ist.
curses based python user interface |
Das Gehäuse dafür wird aktuell von Aaron gebaut - es wird wirklich sehr schick, man kann darauf gespannt sein. Die Ersten Bilder lassen bereits erahnen wohin die Reise bzw. das Design gehen wird. An dieser Stelle möchte ich Aaron nochmals dafür danke dass er sich darum kümmert!
Skizze und Gehäuse |
Für das Gehäuse fehlen - aus meiner Sicht - noch die Adapter-Platinen für das Ausführen der Cubietruck-Spezifischen Anschlüsse, wie USB/LAN und HDMI. Diese werden dazu benötigt um den Cluster direkt als Desktop-Rechner verwenden zu können, falls man diese nicht in das eigene Netzwerk einbinden kann oder möchte.
Auch angedacht ist eine Beleuchtung des Systems hinzuzufügen, welche beispielsweise die Systemauslastung oder den Fortschritt von Aktivitäten darstellen kann und zudem noch den optischen Gesamteindruck deutlich verbessert.
Meine Pläne für Implementieren von Software, welche meinen Cluster unterstützt haben sich aktuell noch nicht auf ein Thema spezialisiert. Interessant ist aktuell für mich rein der Aufbau von einem solchen System und dieses dann zunächst mit Beispielen der Implementierung unter Verwendung von OpenMPI zu testen.
Das Projekt ist aktuell nur im privaten Git auf www.okoyono.de verfügbar, bei Gelegenheit werde ich dieses jedoch auf github einstellen.
Keine Kommentare:
Kommentar veröffentlichen