Ulrichs Werkbank

Der Raspberry Pi als Server

12. Mai 2013
von Ulrich Hilger
alle Rechte vorbehalten

 

 

Dieser Beitrag beschreibt, wie man einen Raspberry Pi zu einer vollwertigen Plattform für Anwendungen macht. Der Artikel dient als Vorlage für eine Serverinstallation von Grund auf, die mit der minimalen Austattung eines Raspberry Pi auskommt. Die Vorgehensweise ist nicht auf eine Nutzung des Raspberry Pi begrenzt sondern verwendet die Kombination aus Raspberry Pi und Debian Linux als Referenzplattform.

Mit der vorliegenden Anleitung ist das Aufsetzen eines Servers ohne besondere Kenntnisse der Informationstechnologie möglich. In wenigen Stunden hat man einen vollwertigen Web-, Applikations- und Datenbankserver bereit gemacht für einen produktiven Betrieb.

 

Inhalt

1. Voraussetzungen
2. SD-Karte mit Betriebssystem ausstatten
3. Betriebssystem konfigurieren
4. Raspberry Pi im lokalen Netz etablieren
5. Fernsteuerung ausprobieren
6. Laufzeitumgebung Java installieren
7. Web- und Applikationsserver installieren
8. Kommunikation absichern
9. Relationales Datenbanksystem installieren
10. Option: Externen Massenspeicher anbinden
11. Fazit

Wird anstelle des Raspberry Pi ein Rechner eingesetzt auf dem Linux bereits vorhanden ist können die Schritte 1 bis 6 entfallen.

Voraussetzungen

Benötigt werden

  • ein Rechner mit Linux,
  • ein lokales Netzwerk mit Anschluss an das Internet,
  • ein kabelgebundener Zugang ans lokale Netz für den Raspberry Pi,
  • eine USB-Maus,
  • eine USB-Tastatur,
  • ein HDMI-Kabel und
  • ein Bildschirm mit HDMI-Anschluss.

Ferner ein Raspberry Pi bestehend aus

  • Platine,
  • Gehäuse,
  • Stromversorgung und
  • einer SD-Karte mit mindestens 8 GB Speicherkapazität.

Optional kann ein USB-Hub mit eigener Stromversorgung und ein externer Massenspeicher hinzugenommen werden, ist aber nicht zwingend notwendig. Anstelle eines Rechners mit Linux darf es auch ein anderes Betriebssystem sein, z.B. Mac OS oder Windows, die Einrichtung gelingt mit ihnen ebenso gut. Die Verwendung dieser Systeme ist allerdings hier nicht beschrieben.

SD-Karte mit Betriebssystem ausstatten

Zunächst muss eine SD-Karte so konfiguriert werden, dass sie vom Raspberry Pi zum Starten verwendet werden kann. Dazu wird das Paket namens NOOBS heruntergeladen und auf die SD-Karte übertragen. Die SD-Karte muss leer sein, am besten man verwendet eine frisch formatierte Karte und führt die folgenden Schritte aus:

  1. NOOBS herunterladen von https://www.raspberrypi.org/downloads/
  2. ein neues Verzeichnis erstellen und z.B. NOOBS_Dateien nennen
  3. Den Dateimanager von Linux verwenden um den Ordner zu öffnen, in den NOOBS heruntergeladen wurde
  4. die heruntergeladene Datei in das neue Verzeichnis NOOBS_Dateien entpacken
  5. die Dateien im Verzeichnis NOOBS_Dateien auf die SD-Karte kopieren

Wichtig ist, dass nur die Dateien im Verzeichnis NOOBS_Dateien kopiert werden, nicht das Verzeichnis selbst. Die SD-Karte ist nun fertig vorbereitet und kann entnommen werden.

Betriebssystem konfigurieren

  1. Die Platine des Raspberry Pi ins Gehäuse einbauen
  2. Maus, Tastatur und Bildschirm anschließen
  3. Netzwerkkabel anschließen
  4. SD-Karte einlegen
  5. Stromversorgung anschließen
  6. Der Raspi startet in das Konfigurationprogramm
  7. Im Konfigurationsprogramm nacheinander die verschiedenen Menü-Optionen durchlaufen und damit z.B. Sprache, Tastaturlayout, usw. einrichten
    (Pfeiltasten zum Bewegen der Auswahl, Tab/Umschalt-Tab zum Springen, Leerzeichen zum Setzen einer Option, Return/Enter zum Bestätigen)
    Wichtig: Den SSH-Dienst aktivieren, dazu später mehr
  8. Am Schluß aller Einstellungen das Konfigurationsprogramm verlassen (Finish wählen)
  9. das Konfigurationsprgramm wird beendet, die Kommandozeile erscheint
  10. den Raspi neu starten
    sudo reboot
  11. warten, bis der Raspi durchgestartet ist, anmelden
  12. den Raspi herunterfahren
    sudo shutdown -h -P now
  13. Strom, Bildschirm, Tastatur, Maus und Netzwerkkabel vom Raspi trennen, SD-Karte eingelegt lassen
  14. den Raspi dort aufstellen, wo er betrieben werden soll
  15. Netzwerkkabel anschließen
  16. Strom wieder anschließen
  17. der Raspi fährt hoch

Das Betriebssystem des Raspberry Pi ist fertig eingerichtet und bereit zur Aussattung mit weiterer Software. Das Konfigurationsprogramm kann für Änderungen jederzeit von der Kommandozeile aus aufgerufen werden. Das Kommando dafür lautet sudo raspi-config

Raspberry Pi im lokalen Netz etablieren

In der Konfiguration des Routers sollte nun der Raspberry Pi als "raspberry" erscheinen. Diese Bezeichnung sollte auf einen eindeutigen Namen geändert werden, damit mehrere Raspis im lokalen Netz unterschieden werden können. Soll der Kleinrechner z.B. im Arbeitszimmer betrieben werden, kann der Name z.B. auf raspi-az geändert werden.

Neu: Das Konfigurationprogramm raspi-config hat nun einen Menüeintrag über den es möglich ist, den Namen das Raspberry Pi zu ändern.

Darüber hinaus kann man auch im Router des Netzwerks verschiedenen Raspis im Netz jeweils eindeutige Namen vergeben. Der Router kann verschiedene Raspberry Pis über die Media-Access-Control-Adresse ihres Netzwerkadapters unterscheiden (MAC-Adresse) und weist ihnen normalerweise dynamisch eine IP-Adresse zu. Der Eintrag eines Namens zur jeweiligen MAC-Adresse ermöglicht es, dass im lokalen Netz die einzelnen Geräte unabhängig von der gerade an sie vergebenen IP-Adresse über diesen Namen angesprochen werden können.

Fernsteuerung ausprobieren

Von einer anderen Maschine im Netz kann nun die Steuerung des Raspi via SSH erfolgen:

  1. Auf einer anderen Maschine ein Terminal öffen
  2. Eine SSH-Verbindung für Benutzer pi zur Maschine raspi-az öffnen
    ssh -l pi raspi-az
  3. Nach Abfrage des Kennworts für Benutzer pi erscheint die Kommandozeile des Raspi und ist bereit für beliebige Kommandos.

In ähnlicher Form lässt sich eine Verbindung für sicheren Dateitransfer herstellen (SSH File Transfer Protocol, SFTP). Der Dateimanager von Ubuntu Linux 13.04 sieht dafür z.B. die Funktion "Mit Server verbinden" vor.

  1. Den Dateimanager starten
  2. "Mit Server verbinden" aus dem Menü "Dateien" wählen
  3. Im Feld "Serveradresse" sftp://raspi-az eintragen
  4. Schaltfläche "Verbinden" betätigen

Es erscheint ein neues Fenster des Dateimanagers mit dem Inhalt des Benutzerverzeichnisses auf dem Raspberry Pi. Damit lassen sich von einer anderen Maschine aus z.B. sehr einfach Inhalte auf einen Raspberry Pi übertragen.

Laufzeitumgebung Java installieren

Java ist die Grundlage für plattformunabhängige und freie Anwendungen aller Art. Der für unseren Server verwendete Web- und Applikationsserver wie auch der Datenbankserver sind in Java geschrieben. Ferner gibt es eine große Zahl an professionellen freien Softwarelösungen und Anwendungen in Java von denen man profitieren kann, wenn man Java einsetzt.

Einmal in Java geschriebene Programme können ohne nachträgliche Anpassung auf vielen verschiedenen Systemen laufen, deshalb kann man z.B. den für unsere Zwecke vorgesehenen Webserver wie auch den Datenbankserver so wie sie sind einfach auf dem Raspberry Pi laufen lassen, aber die hier beschriebene Software und ihre Konfiguration unverändert auch auf anderer Hardware einsetzen.

Java ist auf neuesten Versionen des Betriebssystems vorinstalliert. Um zu prüfen ob Java vorhanden ist gibt man auf der Kommandozeile des Pi das Kommando java -version ein. Wenn eine Meldung mit der Version von Java erscheint, muss keine Installation erfolgen. Ansonsten hat zur Installation von Java auf einem Raspberry Pi Robert Savage eine perfekte Beschreibung verfaßt. Für diesen Schritt also einfach dieser Beschreibung folgen, ihr ist nichts hinzuzufügen.

Web- und Applikationsserver installieren

Der Kern unseres Web- und Applikationsservers ist Tomcat, die Referenzimplementierung der Java Servlet Spezifikation. Mit Tomcat lassen sich statische HTML-Seiten ebenso ausliefern wie komplexe Webanwendungen. Zur Installation von Tomcat wird auf der Kommanozeile des Pi das folgende Kommando ausgeführt

sudo apt-get install tomcat7 tomcat7-admin

Tomcat wird installiert, nach Abschluss des Vorgangs kann man prüfen, ob alles geklappt hat, dazu im Browser eines anderen Rechners den folgenden URL aufrufen:

http://raspi-az:8080

Es erscheint die Begrüßungsseite mit nützlichen Informationen zu den Besonderheiten der Tomcat-Installation.

tomcat

Nun noch einen Benutzer anlegen, der den Tomcat-Manager bedienen darf.

  1. Die Datei tomcat-users.xml öffnen
    sudo nano /var/lib/tomcat7/conf/tomcat-users.xml
  2. Einen Benutzer eintragen, der die Manager-Anwendung verwenden darf
    <user username="tomcat" password="aendere mich" roles="manager-gui"/>
  3. Speichern
    Strg-O
  4. nano beenden
    Strg-X
  5.  Tomcat neu starten
    sudo /etc/init.d/tomcat7 restart

Damit ist Tomcat in Betrieb und bereit für die Installation von Webanwendungen. Der Benutzer tomcat kann verwendet werden, um mit der Manager-Anwendung von Tomcat zu arbeiten. Diese wird mit dem Uniform Resource Locator (URL)

http://raspi-az:8080/manager/html

im Browser aufgerufen und u.a. dazu verwendet, Webanwendungen von einer anderen Maschine aus auf dem Raspi zu installieren.

Kommunikation mit dem Web- und Applikationsserver sichern

Um die Kommunikation zwischen dem Raspberry Pi und anderen Maschinen über HTTP abhörsicher zu gestalten, muss für Tomcat ein Zertifikat erzeugt werden, mit dessen Hilfe die Kommunikation verschlüsselt werden kann. Eine ausführliche Erklärung dieser Funktion liefert die Dokumentation von Tomcat. Nachfolgend ist die Kurzfassung der Schritte wiedergegeben, die man auf dem Raspberry Pi ausführen muss, um Tomcat mit Verschlüsselung zu versehen. Anstelle des unten angegebenen Kennwortes "changeit" wählt bitte jeder ein individuelles Kennwort nach Wunsch, aber nicht verlieren!

  1. ein Terminal öffnen und eine SSH-Verbindung zum Raspberry Pi aufmachen
      ssh -l pi raspi-az
  2. Das Kommando zum Erzeugen einer Keystore-Datei geben
      $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
  3. Als Kennwort changeit eintragen,
    es dauert eine ganze Weile, bis der Raspberry Pi die Verschlüsselung ausgerechnet hat, also nicht wundern, wenn zwischendurch mal eine Weile nichts geschieht, einfach abwarten, bis wieder die Eingabeaufforderung erscheint.
  4. Es werden allerlei Dinge abgefragt, diese nach Belieben beantworten
  5. mit Abschluss der Prozedur wird eine Datei namens .keystore im Verzeichnis /home/pi erzeugt
  6. die Serverkonfiguration von Tomcat im Editor nano öffnen
      sudo nano /var/lib/tomcat7/conf/server.xml
  7. das auskommentierte XML-Element Connector port="8443" suchen und aktivieren, dazu die umschließenden Kommentar-Bezeichner <!-- und --> entfernen
  8. im zuvor aktivierten XML-Element Connector die folgende Zeile hinzufügen
      keystoreFile="${user.home}/.keystore" keystorePass="changeit"
  9. Speichern
      Strg-O
  10. nano beenden
      Strg-X
  11. Tomcat neu starten
      sudo /etc/init.d/tomcat7 restart
  12. Auf einer anderen Maschine den Browser starten und den Uniform Resource Locator (URL) für eine abhörsichere Verbindung zum Raspberry Pi aufrufen
      https://raspi-az:8443
  13. Beim ersten Aufruf sollte eine Warnung erscheinen, dass der Verbindung nicht vertraut wird. Das liegt daran, dass wir ein selbst signiertes Zertifikat erzeugt haben. Man muss dem Browser zunächst mitteilen, dass man diesem Zertifikat vertrauen möchte. Je nach verwendetem Browser geschieht das unterschiedlich, bei Firefox wählt man z.B. "ich kenne das Risiko", dann "Ausnahmen hinzufügen" und schließlich "Sicherheits-Ausnahmeregel bestätigen".
  14. Es erscheint die Begrüßungsseite von Tomcat
  15. Bei Firefox signalisiert ein Schloß-Symbol in der Adresszeile des Browsers eine sichere Verbindung deren Details mit Klick auf das Symbol angezeigt werden.

Nun ist das Hypertext Transfer Protocol über den Secure Sockets Layer (HTTPS) eingeschaltet. Die Kommunikation zwischen anderen Maschinen und dem Tomcat des Raspberry Pi können via HTTPS erfolgen und sind damit geschützt vor dem Mitlesen der Kommunikation durch Dritte.

Die Keystore-Datei kann auch an einer anderen Stelle abgelegt werden. Wie das funktioniert erklärt die Dokumentation zu Tomcat im Detail.

Relationales Datenbanksystem installieren

Für einen vollwertigen Applikationsserver fehlt nun noch ein relationales Datenbankmanagementsystem (RDBMS) und für unseren Server soll es Derby sein. Die folgenden Schritte werden ausgeführt, um einen Derby Network Server im Java-Prozess von Tomcat mitlaufen zu lassen.

  1. Die Webseite von Derby aufsuchen und das Installationspaket herunterladen
  2. Den Dateimanager von Linux verwenden um den Ordner zu öffnen, in den Derby heruntergeladen wurde,
    dort findet sich eine Datei namens db-derby-10.9.1.0-bin.tar.gz
  3. so wie zuvor Java kopiert wurde
    die Datei db-derby-10.9.1.0-bin.tar.gz in das Verzeichnis /home/pi des Raspberry Pi kopieren
  4. ein Terminal öffnen und eine SSH-Verbindung zum Raspberry Pi aufmachen
      ssh -l pi raspi-az
  5. die Datei mit Derby entpacken
      tar xvzf ~/db-derby-10.9.1.0-bin.tar.gz
  6. die Dateien derby.jar, debynet.jar und derbyclient.jar ins Verzeichnis lib von Tomcat kopieren
      cp ~/db-derby-10.9.1.0-bin/lib/derby.jar /var/lib/tomcat7/lib
      cp ~/db-derby-10.9.1.0-bin/lib/derbynet.jar /var/lib/tomcat7/lib
      cp ~/db-derby-10.9.1.0-bin/lib/derbyclient.jar /var/lib/tomcat7/lib
  7. das Derby-Servlet derby.war in das Verzeichnis webapps von Tomcat kopieren
      cp ~/db-derby-10.9.1.0-bin/lib/derby.war /var/lib/tomcat7/webapps
  8. Ein Verzeichnis für Datenbanken anlegen
      sudo mkdir /var/local/derbydb
  9. Dem Benutzer tomcat7 die Rechte am Verzeichnis erteilen
      sudo chown tomcat7:tomcat7 /var/local/derbydb
  10. die Konfigurationsdatei von Tomcat mit dem Editor nano öffnen
      sudo nano /etc/default/tomcat7
  11. das Verzeichnis für Datenbanken der Zeile mit dem Eintrag JAVA_OPTS hinzufügen
      JAVA_OPTS="-Dderby.system.home=/var/local/derbydb"
  12. Speichern
      Strg-O
  13. nano beenden
      Strg-X
  14. Tomcat neu starten
      sudo /etc/init.d/tomcat7 restart

Derby starten und stoppen

Auf einer anderen Maschine kann Derby nun via Browser gestartet und gestoppt werden. Zum Start wird der Uniform Resource Locator

https://raspi-az:8443/derby/derbynet

verwendet. Zum Stoppen und neuerlichen Starten wird anschließend die Schaltfläche "Stop" bzw. "Start" auf dieser Seite betätigt. Auch auf der Kommandozeile des Pi kann überprüft werden ob der Datenbankserver läuft. Dazu das folgende Kommando nutzen

java -jar /home/pi/db-derby-10.9.1.0-bin/lib/derbyrun.jar server ping

Soll der Derby Network Server beim Start von Tomcat gleich mitgestartet werden, wird im Deployment Descriptor, der Datei /var/lib/tomcat7/webapps/derby/WEB-INF/web.xml nach der Zeile mit dem XML-Element <servlet-class> der folgende Eintrag gemacht

<load-on-startup>0</load-on-startup>

Tomcat muss neu gestartet werden, damit der Eintrag wirksam wird.

Derby-Servlet auf Administratoren begrenzen

Das Derby-Servlet sollte durch eine Sicherheitseinschränkung im Deployment Descriptor, der Datei /var/lib/tomcat7/webapps/derby/WEB-INF/web.xml abgesichert werden, damit nicht jeder im Netz das Servlet bedienen kann. Mit den folgenden Einträgen in der Datei web.xml des Derby-Servlets kann man erreichen, dass nur Benutzer mit der Rolle derbyAdmin das Servlet nutzen dürfen.

  <security-constraint>
    <display-name>derbyAdminEinschraenkung</display-name>
    <web-resource-collection>
      <web-resource-name>DerbyAdmin</web-resource-name>
      <description>Bereiche dieser Anwendung schuetzen die Admin-Rechte erfordern</description>
      <url-pattern>/derby/derbynet</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <description>nur Adminstratoren zulassen</description>
      <role-name>derbyAdmin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
  </login-config>
  <security-role>
    <description>Methoden die Admin-Rechte erfordern</description>
    <role-name>derbyAdmin</role-name>
  </security-role>

Anschließend muss wie im Abschnitt zur Tomcat-Einrichtung beschrieben in der Datei /var/lib/tomcat7/conf/tomcat-users.xml den Benutzern, die das Derby Servlet bedienen sollen, die Rolle derbyAdmin zugeteilt werden. Der Datenbankserver ist so eingerichtet, dass nur Verbindungen von der lokalen Maschine aus akzeptiert werden. So können alle Anwendungen von Tomcat aus mit Datenbanken arbeiten, aber keine andere Maschinen den Datenbankserver nutzen.

Derby nutzen

Mit der hier beschriebenen Konfiguration des Derby Network Server können andere Webanwendungen auf Tomcat durch einfaches Deklarieren einer Java EE DataSource mit Datenbanken arbeiten. Der Datenbankserver ist aus Sicherheitsgründen so eingerichtet, dass er 'von außen' nicht zugänglich ist. Ein Zugriff direkt über Port 1527 funktioniert nur, wenn es in der Konfiguration entsprechend eingerichtet wird. Das Derby Servlet erlaubt eine Umstellung z.B. mit dem Init-Parameter host im Deployment Descriptor.

Option: Externen Massenspeicher anbinden

Das Betriebssystem und dessen Konfiguration, Java sowie die Programme Tomcat und Derby wurden in den vorangegangenen Schritten auf der SD-Karte des Pi installiert. Auf diese Weise kann das gesamte System von dieser Karte aus gestartet werden. Diese Systemkonfiguration kann sehr einfach durch eine andere ersetzt werden, wenn man eine andere SD-Karte mit einer entsprechenden anderen Konfiguration ausstattet. Durch einfaches Tauschen der SD-Karte können unterschiedliche Konfigurationen gefahren werden.

Sollen Daten von der Systemkonfiguration getrennt bleiben kann man einen zusätzlichen Datenträger verwenden, den man per USB an den Raspberry Pi anschließt. Das ist z.B. nützlich, wenn man den Raspberry Pi auch als Datenbankserver nutzt. Datenbanken erfordern häufige Schreib-/Lesevorgänge, was für einen dauerhaften Betrieb die SD-Karte des Pi überfordern würde.

Als Speichermedium empfiehlt sich wegen geringem Stromverbrauch, hohen Schreib-/Leseraten und niedrigen Latenzzeiten eine Solid State Disk wie z.B. ein Laufwerk mit 128 GB von SanDisk in Verbindung mit einem Gehäuse wie z.B. dem RaidSonic IB-273STU3 ICY . Um die begrenzte Stromversorgung des Raspberry Pi nicht zu überlasten, sollte der Datenträger mit einem USB-Hub mit eigener Stromversorgung wie z.B. dem von D-Link angeschlossen werden.

  1. einen USB-Hub mit eigener Stromversorgung an einem der zwei USB-Anschlüsse des Raspberry Pi anstecken
  2. Einen externen Datenträger per USB mit dem USB-Hub verbinden
  3. Eine Liste der angeschlossenen Datenträger aufrufen
      sudo blkid
    es erscheint u.a. z.B.
      /dev/sda1: UUID="179B-ED4B" TYPE="vfat"
  4. zum Eintrag dieser Angaben in der Tabelle der Dateisysteme die Datei fstab mit dem Editor nano öffnen
      sudo nano /etc/fstab
    am Ende eine neue Zeile mit den Angaben aus dem vorigen Schritt hinzufügen, z.B.
      UUID=179B-ED4B  /media/extssd01  vfat   rw,auto,users,noexec,umask=007,gid=46  0  0
  5. Speichern
      Strg-O
  6. nano verlassen
      Strg-X
  7. einen Mount-Punkt anlegen, der den Namen trägt, der in fstab eingetragen wurde
      sudo mkdir /media/extssd01
  8. nun den Datenträger aus dem Dateisystem entfernen
      sudo umount /dev/sdb1
  9. dann die aktuelle Fassung der Liste mit Dateisystemen einlesen
      sudo mount -a
  10. Mit Eingabe von df -h erscheint eine Liste aller im Dateisystem des Raspberry Pi eingehängten Datenträger, z.B.

Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
rootfs          7,3G    1,6G  5,4G   23% /
/dev/root       7,3G    1,6G  5,4G   23% /
devtmpfs        212M       0  212M    0% /dev
tmpfs            44M    232K   44M    1% /run
tmpfs           5,0M       0  5,0M    0% /run/lock
tmpfs            88M       0   88M    0% /run/shm
/dev/mmcblk0p1   56M     19M   38M   34% /boot
/dev/sda1       120G     80K  120G    1% /media/extssd01

Die Einträge in der Datei fstab aus Schritt 4 sind nur beispielhaft aufgeführt und müssen auf die Werte geändert werden, die die Abfrage von blkid aus Schritt 3 liefert.

Die externe Platte ist damit eingerichtet und bleibt auch nach einem Neustart so konfiguriert. Auf die selbe Weise kann auch ein Gehäuse wie z.B. das von Lindy für den gespiegelten Betrieb zweier Datenträger angeschlossen werden.

Mit einem wie hier beschrieben angeschlossenen Datenträger kann der im vorigen Schritt beschriebene Datenbankserver so eingestellt werden, dass Datenbanken auf dem externen Datenträger abgelegt sind.

Fazit

Ein Server ist in wenigen Stunden aufgesetzt und schon in der hier beschriebenen Konfiguration für einen vollwertigen, dauerhaften und professionellen Betrieb sowie vielseitigste Anwendungen geeignet. Dank der Verwendung von Linux und Java kann dieselbe Konfiguration unverändert an steigende Anforderungen angepaßt werden, indem einfach eine andere, den Anforderungen entsprechend leistungsfähigere Hardware eingesetzt wird.

Selbst verteilte Architekturen bestehend aus vielen Einzelrechnern sind mit der hier beschriebenen Lösung möglich, indem die Konfiguration um die Anordnung von Tomcat und Derby in Clustern ergänzt wird. Die hier vorgestellte Lösung ist damit maximal skalierbar von einem einzelnen Raspberry Pi bis hin zu weltumspannenden Rechenarchitekturen.