Raspberry Pi 3 Model B Docker Schwarm Rechencluster
Viele bekannte Anwendungen lassen sich mittlerweile über Container vom Betriebssystem isolieren. Die Open-Source-Software Docker ermöglicht diese Isolierung. Weiter Informationen zu Docker sind auf der Docker-Wikipedia-Seite hinterlegt. Da der Raspberry Pi als einzelnes Modul in Bezug auf die Leistung sehr begrenzt ist, kann der Aufbau eines Schwarmes zur Skalierung der Leistung genutzt werden. Das Ergebnis ist ein kleiner Rechencluster oder Rechnerverbund.
Für die Umsetzung werden folgende Komponenten benötigt. Die Anzahl “n” bezieht sich auf die Anzahl der verwendeten Pi’s im Verbund.
- n Raspberry Pi’s 3 Model B
- n USB-Ports zur Energieversorgung mit mindestens 2A pro Port (mind. 10Watt)
- n Netzwerkkabel
- n 16Gb microSD-Karten
- 1 Computer zur Konfiguration
Vorbereitung der SD-Karte
Zuerst muss die Aktuelle Version von Raspbian Jessie Lite als Image von folgender Quelle geladen werden:
(Das Lite-Image besitzt keine GUI und verbraucht somit weniger Ressourcen)
curl -O https://downloads.raspberrypi.org/raspbian_latest
Installation des Image unter Linux:
Mit dem Befehl lsblk
lassen sich alle angeschlossenen Speichermedien ausgeben. Der Pfad zum Speichermedium /dev/sde
muss dabei jeweils angepasst werden:
$ sudo dd if=raspbian_latest of=/dev/sde bs=1m
Installation des Image unter Windows:
Bei Windows erfolgt die Installation mit dem Tool: Win32DiskImager.
Konfiguration nach dem ersten Bootvorgang:
Der erste Login erfolgt über: pi
als Benutzername und raspberry
als Passwort. Zu beachten ist, dass das standard Keayboard englisch ist, und somit “z” und “y” getauscht sind. Alle Konfigurationen auf der Kommandozeile werden im folgenden Abschnitt mit Hilfe des einsteiger freundlichen Kommandozeilen-Editor Nano vollzogen. Nano öffnet eine Datei mit dem Befehl: nano beispiel.txt
speichern lassen sich Dateien mit Strg + O
und schließen über Strg + X
.
Einige grundlegende Einstellungen lassen sich jedoch auch über das raspbian Konfigurationsmenü festlegen. Es wird mit dem Befehl sudo raspi-config
aufgerufen. Zuerst einmal sollte das Tastenlayout auf deutsch umgestellt werden. Dies ist unter “Advanced Options” und “Change Keyboard Layout” möglich. Danach sollte das System über mit “Finish” rebootet werden.
Weitere vorzunehmende Einstellungen sind die:
- Expansion des Dateisystems unter “Expand Filesystem”
- Ändern des Passworts unter “Change User Password”
- Ändern des Hostname unter “Advanced Options” und “Hostname” (Es empfiehlt sich eine Durchnummerierung der Module z.B. PiSchwarm1 ….)
- Einschalten von SSH unter: “Advanced Options” und “SSH”
Vorzugsweise sollte noch die IP-Adresse des Raspberry Pi fortlaufend auf jedem Gerät konfiguriert werden. Hierfür sollte der DHCP-Server in Betrieb sein sudo service dhcpcd start
und sudo systemctl enable dhcpcd.
Die Konfiguration wird dabei an das Ende der folgender Datei geschrieben sudo nano /etc/dhcpcd.conf
Anzuhängender Inhalt (Beispiel):
interface eth0 static ip_address=192.168.1.200/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1
Die /24
ist eine verkürzte Schreibweise für das Sub-netz 255.255.255.000
Remote SSH-Verbindung zum Raspberry Pi 3:
Zuballerst muss, soweit nicht bekannt die, die IP-Adresse des zu verbindenden Gerätes herausgefunden werden. Der Befehl ifconfig
listet die Konfigurationen sämtlicher Schnittellen auf. Der erste Teil der Ausgabe ist dabei von Interesse:
pi@PiSwarm1:/ $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:56:f2:03 inet addr:192.168.1.201 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::53e6:c390:d7f7:7855/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:652 errors:0 dropped:184 overruns:0 frame:0 TX packets:142 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:39858 (38.9 KiB) TX bytes:22047 (21.5 KiB)
Die Adresse in diesem Beispiel ist somit: 192.168.1.201.
Terminal unter Linux / MAC OS:
Unter Linux / MAC OS ist der Raspberry Pi über folgenden Befehl im Terminal zu erreichen ssh pi@192.168.1.201
bei erfolgreicher Verbindung kann man sich mit dem Passwort für den Benutzer Pi einloggen.
Putty unter Windows:
Unter Windows wird die Verbindung mit Hilfe des Tools Putty durchgeführt. Dazu die Ziel-IP im Feld “Host-Name (or IP address)” und als Port die 22 eingeben. Der “Connection type” wird mit “SSH” gewählt und die Verbindung über den Button “open” gestartet. Unter “login as:” als “pi” mit dem entsprechenden Passwort anmelden.
Installation von Docker
Nun, da der Zugriff auf den Raspberry Pi im lokalen Netzwerk gegeben ist, kann mit der Installation von Docker begonnen werden. Ein von Docker bereitgestelltes Script ermöglicht die Installation mit dem Aufruf:
curl -sSL get.docker.com | sh
Der Docker Installationsprozess kann ein paar Minuten in Anspruch nehmen. Mit dem folgenden Befehl wird Docker automatisch mit dem Raspberry Pi gestartet:
sudo systemctl enable docker
Jetzt kann ein neustart durchgeführt und Docker mit dem Befehl: sudo systemctl start docker
Docker gestartet werden. Damit Docker nicht nur unter dem Nutzer “root” sondern auch dem Nutzer “Pi” läuft muss dieser der Dockergruppe hinzugefügt werden: sudo usermod -aG docker pi
.
Docker sollte nun für den Befehl docker version
eine ähnliche Ausgabe bereitstellen:
pi@PiSwarm1:~ $ docker version Client: Version: 1.12.5 API version: 1.24 Go version: go1.6.4 Git commit: 7392c3b Built: Fri Dec 16 03:23:36 2016 OS/Arch: linux/arm Server: Version: 1.12.5 API version: 1.24 Go version: go1.6.4 Git commit: 7392c3b Built: Fri Dec 16 03:23:36 2016 OS/Arch: linux/arm
Mit dem Befehl docker info
sollte unter dem Punkt “Swarm” noch die Ausgabe “inactive” ausgegeben werden.
Dies ändert sich durch den Aufruf von docker swarm init
, welcher einen “Join-Token” generiert.
Aus allen anderen “Arbeiter-Pi’s” muss nun dieser Token-befehl des “Master-Pi’s” eingeben werden.
Mit dem Aufruf von docker node ls
auf dem Master werden alle erfolgreich verknüpften Pi’s aufgelistet.
Noch keine Kommentare.