Experimente zu Clustering und Lastverteilung mit dem RasPi

Apache aufsetzen

Bevor Sie mit der Installation des Webservers weitermachen, gilt es erst einmal, auf dem Root-Dateisystem etwas Platz zu schaffen. Mit dem Kommando aus der ersten Zeile von Listing 12 entfernen Sie Software, die Sie für den aktuellen Einsatz nicht benötigen.

Listing 12

 

$ sudo apt-get remove x11-common midori lxde python3 python3-minimal
$ sudo apt-get autoremove
$ sudo apt-get clean

Die Kommandos aus den beiden anderen Zeilen entfernen dann nicht mehr benötigte Abhängigkeiten sowie temporäre Dateien. Diese drei Schritte wiederholen Sie auf allen vier Rechnern. Die Aktion schuf im Test auf jedem System etwa 1,2 GByte Platz. Abbildung 2 zeigt, wie der Aufbau im Anschluss aussieht.

Abbildung 2: So sollen alle Teile am Ende zusammenhängen.

Dazu mounten Sie auf jedem Knoten des Clusters das Volume volpi. Mit dem Kommando sudo mkdir /mnt/www in einem Terminal legen Sie auf allen vier Knoten einen Einhängepunkt für das Volume volpi an. Mit dem folgenden Befehl mounten Sie dann das exportierte Dateisystem volpi ins jeweils lokale Dateisystem, wobei Sie diesen Schritt für die Rechner cluster02, cluster03 und cluster04 analog wiederholen:

$ sudo mount -t glusterfs cluster01:/volpi /mnt/www/

Listing 13 zeigt die korrespondierenden Einträge für die Datei /etc/fstab, mit denen Sie das entfernte Dateisystem dauerhaft einhängen.

Listing 13

 

cluster01:/volpi /mnt/www glusterfs defaults,_netdev 0 0
cluster02:/volpi /mnt/www glusterfs defaults,_netdev 0 0
cluster03:/volpi /mnt/www glusterfs defaults,_netdev 0 0
cluster04:/volpi /mnt/www glusterfs defaults,_netdev 0 0

Nun geht es an die Installation des Webservers, die Sie auf allen vier Rechnern mittels sudo apt-get install apache2 in einem Terminal erledigen. Danach passen Sie auf allen Knoten die Variable DocumentRoot an. Listing 14 zeigt, welche Stellen Sie dazu ändern – konkret die Zeile 3 sowie die Zeilen 8 bis 13.

Listing 14

 

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /mnt/www
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /mnt/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>
[...]
</VirtualHost>

Dann starten Sie den Webserver mit /etc/init.d/apache2 restart neu, damit er die Änderung übernimmt. Jetzt kommt ein kleiner Kunstgriff zum Zug, um die verteilten Webserver über eine URL ins Internet zu bringen: Dazu ermöglichen Sie als Erstes den Zugriff auf die einzelnen Knoten durch die Firewall. Abbildung 3 zeigt, wie die entsprechende Konfiguration auf dem Router im Test aussieht.

Abbildung 3: Auf dem Router leiten Sie die entsprechenden Ports nach außen weiter.

Zum Einsatz kommt ein günstiger Root-Server für unter 5 Euro pro Monat, der einen Apache-Proxy im Web bereitstellt und auf die vier Knoten des Clusters weiterleitet. Hier passen Sie ebenfalls die Datei /etc/hosts so an, dass Sie die bereits vergebenen Namen verwenden dürfen. Dann installieren Sie Apache und laden die entsprechenden Module (Listing 15). Anschließend erstellen Sie einfach einen virtuellen Host, der die Proxy-Konfiguration aus Listing 16 erhält. Zum Verteilen der Last benötigen Sie nicht einmal einen Eintrag für DocumentRoot.

Listing 15

 

$ sudo apt-get install apache2
$ sudo a2enmod proxy_balancer
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http

Listing 16

 

<VirtualHost *:80>
  ServerName host.de
  ServerAlias www.host.de
  <Proxy balancer://mycluster>
    BalancerMember http://cluster01:8081
    BalancerMember http://cluster02:8082
    BalancerMember http://cluster03:8083
    BalancerMember http://cluster04:8480
  </Proxy>
  ProxyPass /test balancer://mycluster
  ErrorLog /var/log/apache2/host.de.error.log
  LogLevel warn
  CustomLog /var/log/apache2/host.de.access.log combined
</VirtualHost>

In der Variable BalancerMember dürfen Sie auch DynDNS-Einträge angeben. In der jetzigen Konfiguration verteilt der Server die Last reihum ("Round Robin"). Fällt ein Knoten aus, holt sich der Webserver die Seite einfach vom nächsten Rechner aus der Liste. Das Proxy-Modul des Apache kann bei Bedarf noch erheblich mehr – auf der Homepage finden sich alle Informationen, die Sie brauchen, um komplexere Umgebungen aufzubauen [5].

Fazit

Mit einer Handvoll Raspberry Pis kann man nicht nur einen funktionierenden Cluster aufbauen, sondern sogar via Internet verteilen. Von der Performance dürfen Sie freilich keine Wunder erwarten; für ernsthafte Anwendungen mit vielen Benutzern fallen die Ressourcen der RasPis zu knapp aus. Nichtsdestotrotz ist es ein spannendes Experiment, einen solchen Cluster aufzubauen und damit zu arbeiten. 

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.