Docker Swarm Cluster over VPN

Heute arbeiten wir mal ein Konzept eines Docker Swarm Clusters über VPN aus und setzen dieses Cluster im folgenden um. Als VPN werde ich einen Wireguard Server benutzen. Los geht’s mit der Planung.


Die Planung


Server Grundstruktur:

Wir haben 2 Server an den Standorten Frankfurt und Helsinki. Der Server in Helsinki ist der Wireguard Host. Auf diesem Host wird auch später der Docker Master sein und den Storage basierend auf NFS sein.
Bei Server 01 handelt es sich um einen Docker Client, welcher auf die Daten des Servers in Helsinki zugreift.

Auch soll die Möglichkeit bestehen, dass man einen Lokalen Server mit in das komplett System einzubinden.


Welche Dienste sollen laufen

Jeder Server soll einen Portainer Agenten installiert haben, jeder Master Server soll einen Portainer Server haben, über welchen man die Agenten verwalten kann.

Zum testen des Netzwerkes wird ein PiHole installiert, welches der AdBlocker meines VPN Netzwerks ist. Später könnte man das Netzwerk um einen Bitwarden Server erweitern. Das würe aber den Rahmen dieses Experiments komplett sprengen.


Umsetzen in die Praxis


Tag 1

Die installation des Wireguard Servers überspringe ich, da dies den Rahmen des Artikels sprengen würde. Zudem erwähne ich nochmal, dass dies kein Tutorial ist, sondern ein von mir Dokumentiertes Experiment ist.

Als erstes konfiguriere ich eine Firewall, welche in diesem Fall die ufw (Uncomplicated Firewall) ist, die mir jeden Traffic der rein geht blockiert, außer meinen SSH Port und den Wireguard Port.

Nun kommen wir zum ersten Fehler, den ich während der Konfiguration gemacht habe. Ich habe den Privatekey und den Publickey des Servers in Frankfurt verwechselt und zack konnte ich mich nicht mehr verbinden. Dafür habe ich knapp 1 1/2 Stunden gebraucht. Nun denn, weiter gehts mit der Installation des NFS.

Nachdem ich einen NFS Server aufgesetzt habe und einen Mount für den Ordner /data angelegt habe – und das mal ohne Probleme, jedoch bisschen unsauber – kann ich fortfahren. Das aber dann morgen.

Tag 2

Nun am zweiten Tag sollte es eigentlich mit der Installation von Docker weitergehen, aber weit gefehlt. Als ich mich mit meinen System in Frankfurt verbinden wollte, bekam ich weder über die 10.5.0.2 noch über die direkte IP Zugriff auf diesen Server, darum geht es jetzt erst mal daran, dieses Problem zu beheben. Ich hoffe mal, dass sich dieses Problem schnell beheben lässt.

Nachdem der Server wieder am laufen war, als ich ihm in AllowedIPs eingetragen habe und alles wieder funktionierte, konnte ich mit der Installation meines Docker Servers weiter machen. Das war recht einfach mit den folgenden Befehlen:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Der Manager war mit dem Befehl docker swarm init --advertise-addr 10.5.0.1 schnell erstellt, jedoch machte mir der Server in Frankfurt Probleme, welcher aus unerklärlichen Gründen dem Swarm nicht beitreten konnte. Dies war nach einem einfachen Neustart jedoch behoben.

Jetzt brauchen wir noch eine Benutzeroberfläche für unseren Docker Swarm, dazu nutze ich die software Portainer. Und damit willkommen bei der nicht enden wollenden Serie „Robin verbockt irgendwas“. Ich komm nicht auf die Portainer Oberfläche, weder mit noch ohne Firewall aktiv.

Nach einer neuinstallation von Docker funktionierte das ganze wieder. Nun konnte ich in Portainer die docker-compose.yml für das Pihole aufsetzen, was zum ersten mal ohne Probleme funktioniert. Die Ordner habe ich dabei natürlich auf den NFS-Share /data im Ordner /data/pihole/ gespeichert.

Das PiHole – welches aktuell in Frankfurt liegt – soll nach einem Ausfall des Servers weiterlaufen. Daher hab ich nun einfach mal den Server abgeschalten. Nach c.a. 50 Sekunden lief das PiHole in Finland ohne Probleme weiter. Das Projekt war weitestgehend ein Erfolg.


Das Fazit


Das ganze war ein sehr Interessantes Projekt für Lernzwecke, jedoch ist das ganze aufzubauen meiner Meinung nach etwas zu viel aufwand um es wirklich Produktiv zu verwendenm, außerdem gibt zu viele Probleme die auftreten könnten und man muss zu sehr auf die Sicherheit der Systeme achten.

Möglicherweise werde ich außerhalb dieses Beitrages nochmals das System überarbeiten und man kann ggf. eine bessere Systemlösung vorstellen. Natürlich werde ich mit einem neuen System anfangen, damit ich irgendwelche Fehler in der Gesamtkonfiguration vermeiden kann.

Zudem muss ich erwähnen, dass ein Docker Swarm over VPN übertrieben ist und sollte man mehrere vServer haben, sollte man bei einem Hoster mit virtuellen Switches arbeiten. Sofern solche angeboten werden natürlich 😉

Die nötige Arbeitszeit betrug c.a. 14 Stunden.

Standardbild
Robin

Interessiert irgendwie alles, was die Welt nich braucht. Humorlos ohne Ende.

Artikel: 8