So installierst du Docker Swarm auf Rocky Linux

Docker Swarm ist eine Container-Orchestrierung, die auf der Docker Engine aufbaut. Sie ermöglicht es dir, einen Cluster von Docker-Knoten mit mehreren Servern zu erstellen und einzusetzen. Docker Swarm vereinfacht die Bereitstellung deiner containerisierten Anwendung in einem Dienst. Es bietet eine einfache und leicht verständliche Möglichkeit, Container zu verwalten und zu orchestrieren.

Docker Swarm bietet ein hohes Maß an Verfügbarkeit für Anwendungen. In Docker Swarm kannst du eine einzelne Anwendung oder einen Dienst auf mehreren Nodes ausführen, die „Worker Nodes“ genannt werden. Außerdem gibt es einen Knoten namens „Swarm Manager“, der die zentrale Verwaltung und Orchestrierung des Docker Swarms übernimmt.

In diesem Lernprogramm zeige ich dir, wie du Docker Swarm mit Rocky Linux Servern einrichtest. Du installierst Docker auf jedem Server, richtest Firewalld ein, initialisierst den Swarm Manager und fügst Nodes hinzu. Schließlich lernst du auch die grundlegende Nutzung von Docker Swarm für die Bereitstellung von containerisierten Anwendungen.

Voraussetzungen

Für diese Anleitung benötigst du mindestens drei Rocky Linux Server und einen Nicht-Root-Benutzer mit sudo/Administrator-Rechten.

Für diese Demonstration werden wir drei Rocky Linux Server verwenden (siehe unten):

Hostname            IP Address        Used as
---------------------------------------------------
swarm-manager1     192.168.5.100     Swarm Manager
worker1            192.168.5.120     Node
worker2            192.168.5.121     Node

Wenn du alle diese Voraussetzungen erfüllst, kannst du mit dem Einsatz von Docker Swarm beginnen.

Docker installieren

Um Docker Swarm einzurichten, musst du die Docker Engine auf jedem Rechner/Server installieren. Für die Linux-Distribution Rocky kannst du Docker über das offizielle Docker-Repository installieren.

Jetzt installierst du die Docker Engine auf jedem deiner Rocky Linux-Server.

Füge das Docker-Repository für das Rocky Linux-System mit dem unten stehenden dnf-Befehl hinzu.

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Sobald das Repository hinzugefügt ist, führe den unten stehenden dnf-Befehl aus, um die Repository-Liste zu überprüfen und alle Pakete zu aktualisieren.

sudo dnf repo list
sudo dnf update

Wenn das Docker-Repository hinzugefügt wurde, siehst du die unten stehende Ausgabe:

Repo hinzufügen Docker

Als Nächstes installierst du Docker mit dem unten stehenden dnf-Befehl. Wenn du aufgefordert wirst, die Installation zu bestätigen, gib y ein und drücke ENTER, um fortzufahren.

sudo dnf install docker-ce docker-ce-cli containerd.io

Docker installieren

Sobald Docker installiert ist, starte und aktiviere den„docker„-Dienst mit dem Befehl systemctl (siehe unten). Der„docker„-Dienst sollte laufen und wird automatisch beim Systemstart ausgeführt.

sudo systemctl enable docker
sudo systemctl start docker

Überprüfe abschließend den„Docker„-Dienst mit dem folgenden Befehl, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status docker

Wenn der„docker„-Dienst läuft, solltest du die unten stehende Ausgabe erhalten.

Docker-Dienst prüfen

Wenn du Docker mit einem Nicht-Root-Benutzer ausführen möchtest, musst du ihn mit dem unten stehenden Befehl zur Gruppe„docker“ hinzufügen.

sudo usermod -aG docker user

Firewalld einrichten

Für die Produktionsumgebung solltest du die Firewall auf jedem Server aktivieren. Auf dem Standard-Rocky-Linux-System ist die Firewalld standardmäßig aktiviert. Du musst also nur einige TCP- und UDP-Ports für den Einsatz von Docker Swarm hinzufügen.

Im Folgenden sind einige der TCP- und UDP-Ports aufgeführt, die du auf jedem Server öffnen musst, damit Docker Swarm ordnungsgemäß läuft:

  • TCP-Port 2377 für die Kommunikation mit dem Clustermanagement – dies ist erforderlich, wenn du mehrere Swarm-Manager hast.
  • TCP- und UDP-Port 7946 für die Kommunikation zwischen den Nodes – für alle Nodes in der Swarm-Umgebung.
  • UDP-Port 4789 für den Overlay-Netzwerkverkehr

Füge die Ports von Docker Swarm über den unten stehenden Befehl firewall-cmd zur Firewalld hinzu.

sudo firewall-cmd --add-port=2377/tcp --permanent
sudo firewall-cmd --add-port=7946/tcp --permanent
sudo firewall-cmd --add-port=7946/udp --permanent
sudo firewall-cmd --add-port=4789/udp --permanent

Als Nächstes lädst du die Firewalld-Regeln neu und überprüfst die Liste der Ports in der Firewalld mit dem unten stehenden Befehl.

sudo firewall-cmd --reload
sudo firewall-cmd --list-port

Du solltest sehen, dass einige TCP- und UDP-Ports für den Docker Swarm-Einsatz zur Firewalld hinzugefügt wurden.

firewalld neu laden

Nachdem die Docker-Engine auf allen Servern installiert und die Firewalld-Konfiguration vorgenommen wurde, kannst du nun den Docker Swarm-Einsatz einrichten, indem du den ersten Knoten als „Swarm-Manager“ initialisierst.

Initialisierung des Swarm Managers

Der Swarm Manager ist das Gehirn deiner Docker Swarm Umgebung. Bei großen Deployments kannst du mehrere Server als Swarm Manager hinzufügen, was eine hohe Verfügbarkeit und Fehlertoleranz deines Swarm Managers ermöglicht.

Der Swarm Manager ist der Clustermanager für deinen Docker Swarm, er verwaltet den Status deiner Anwendungsimplementierungen und ist auch in die Docker Engine integriert. Der Swarm Manager bietet ein deklaratives Servicemodell und die Skalierung von Services, den gewünschten Servicezustand und bietet außerdem rollierende Updates.

In diesem Beispiel werden wir den Server „swarm-manager1“ mit der IP-Adresse „192.168.5.100“ als Swarm Manager initialisieren.

Führe den folgenden Befehl „docker swarm init“ auf dem Server „swarm-manager1“ aus, um die Initialisierung des Swarm Managers für dein Deployment zu starten.

In diesem Beispiel läuft der Swarm Manager unter der IP-Adresse „192.168.5.100“ und das Standardnetzwerk für die Dienste im Docker Swarm ist „10.10.0.0/16“.

docker swarm init --advertise-addr 192.168.5.100 --default-addr-pool 10.10.0.0/16

Jetzt solltest du eine Ausgabe ähnlich dem folgenden Screenshot sehen, wenn der Swarm Manager initialisiert wird. Außerdem siehst du die Anweisung, dass du Worker Nodes zu deinem Docker Swarm Deployment hinzufügen musst, einschließlich des generierten Tokens, den du verwenden musst.

Schwarm initialisieren

Als Nächstes führst du den folgenden Docker-Befehl aus, um zu überprüfen, ob der Swarm-Modus aktiviert und eingeschaltet ist.

docker info

Du wirst sehen, dass der Swarm-Modus „aktiv“ ist und die Netzwerk-IP-Adresse für die Dienste „10.10.0.0/16“ lautet, was der Konfiguration während des Initialisierungsprozesses entspricht. Außerdem siehst du, dass der aktuell verfügbare Knoten im Docker Swarm nur „1“ ist.

Schwarminfo prüfen

Überprüfe die Liste der verfügbaren Knoten in deinem Docker Swarm mit dem unten stehenden Befehl„docker node„. Du wirst sehen, dass es nur einen Knoten in deinem Docker Swarm gibt.

docker node ls

Prüfknoten

Hinzufügen von Worker Nodes zu Swarm

In Docker Swarm hat der Worker Node das gleiche Konzept wie in anderen Container-Orchestrierungen, d.h. er ist der Ort, an dem die Container ausgeführt und betrieben werden. Die Docker-Engine muss auf jedem Worker-Node installiert werden, und der Worker kann auch zum „Swarm-Manager“ befördert werden.

Gleichzeitig kann der Swarm Manager auch als Worker Node verwendet werden, was bedeutet, dass deine Anwendung auch auf dem Swarm Manager ausgeführt werden kann.

Führe den folgenden Befehl„docker swarm join“ aus, um die Server„worker1“ und„worker2“ dem Docker Swarm hinzuzufügen. Achte auch darauf, dass du das Token durch das generierte Token in deiner Umgebung ersetzt.

docker swarm join \
--token SWMTKN-1-4qxedy87gygenejrw06hlqpuwfm6erulccfj1jhnmsn0kehbnb-2ld4g3zo36bzu8d8ss4115rhq 192.168.5.100:2377

Wenn du die Meldung„Dieser Node ist dem Schwarm als Worker beigetreten“ erhältst, bedeutet dies, dass der Worker-Node hinzugefügt wurde.

Du kannst die gleiche Ausgabe sehen, wenn„worker1“ und„worker2“ dem Docker Swarm beigetreten sind.

Knoten2 verbinden

Als Nächstes rufst du wieder den Swarm Manager auf und führst den folgenden Docker-Befehl aus, um die Liste der Nodes in deinem Docker Swarm zu überprüfen.

docker node ls

Du solltest drei Knoten in deiner Docker Swarm Umgebung sehen. In diesem Beispiel wird der „swarm-manager1“ als Swarm Manager und die beiden Server „worker1“ und „worker2“ als Worker Nodes verwendet.

Prüfknoten

Außerdem kannst du die Liste der Nodes mit dem unten stehenden Docker-Befehl überprüfen.

docker info

Auf dem Swarm Manager Server kannst du die Ausgabe im folgenden Screenshot sehen. Es gibt 1 Manager und 3 Nodes (der Swarm-Manager wird auch als Worker verwendet).

Schwarmstatus prüfen

Aber auf den Servern „worker1“ und „worker2“ siehst du die folgende Ausgabe. Du kannst die IP-Adresse des Swarm-Managers mit dem Standard-TCP-Port 2377 sehen.

Knotenstatus prüfen

An diesem Punkt hast du die Docker Swarm-Bereitstellung mit Rocky Linux abgeschlossen. Als Nächstes wirst du die Anwendung/den Dienst in deiner Swarm-Umgebung bereitstellen.

Dienste in Docker Swarm verwalten

Wenn du eine Anwendung in der Docker Swarm-Umgebung bereitstellst, wird diese Anwendung als „Dienst“ bezeichnet. Es ist ein Abbild deiner Microservice-Anwendung und kann ein HTTP-Server, ein Datenbankserver oder eine andere Anwendung sein.

Um einen Service in Docker Swarm bereitzustellen, musst du das Basis-Image, die Ports, den Namen deines Services und die Anzahl der Replikate für deinen Service angeben.

Jetzt lernst du das grundlegende Deployment deiner Dienste in Docker Swarm.

In diesem Beispiel erstellst du einen neuen Dienst „test-httpd“ mit 1 Replikat und dem Port „8000“ auf dem Swarm-Knoten. Das Image, das du verwenden wirst, ist „httpd:alpine“.

Führe den folgenden Befehl„docker service“ aus, um einen neuen Dienst zu erstellen.

docker service create --replicas 1 --name test-httpd -p 8000:80 httpd:alpine

Dienst erstellen

Überprüfe nun die Dienste in deinem Docker Swarm mit dem folgenden docker-Befehl. Du solltest sehen, dass der Dienst „test-httpd“ läuft und auch den TCP-Port 8000 mit nur einer Replik freigegeben hat.

docker service ls

Listendienst

Als Nächstes überprüfst du die Details deines „test-httpd“-Dienstes mit dem folgenden Befehl.

docker service inspect test-httpd
docker service inspect --pretty test-httpd

Unten siehst du den detaillierten Dienst von „test-httpd“.

Service-Details

Außerdem kannst du den Container, auf dem der Dienst „test-httpd“ läuft, mit dem Befehl „docker service“ überprüfen (siehe unten).

docker service ps test-httpd

Du kannst sehen, dass der Container „test-httpd.1“ auf dem Server „swarm-manager1“ läuft.

Prüfcontainer

Öffne nun den Port „8000“ auf allen Servern mit dem folgenden Firewall-Befehl.

sudo firewall-cmd --add-port=8000/tcp

Überprüfe danach den Dienst „test-httpd“ mit dem Befehl curl wie unten beschrieben. In diesem Beispiel lautet die IP-Adresse des „swarm-manager1“ „192.168.5.100“.

curl 192.168.5.30:8000
curl -I 192.168.5.30:8000

Du siehst die Standardseite index.html des Dienstes „test-httpd“.

Zugangscontainer

Dienste in Docker Swarm skalieren

Nachdem du den Dienst in Docker Swarm implementiert hast, lernst du nun, wie du deine Dienste und Anwendungen skalieren kannst.

Führe den folgenden Befehl aus, um den Dienst „test-httpd“ auf 3 Replikate zu skalieren. Mit diesem Befehl werden zwei weitere Dienste von „test-httpd“ auf Worker Nodes erstellt.

docker service scale test-httpd=3

scale service

Überprüfe nun die Liste der laufenden Dienste mit folgendem Befehl. Du solltest sehen, dass ein weiterer „test-httpd“-Dienst auf den beiden Servern „worker1“ und „worker2“ läuft.

docker service ps test-httpd

Dienstleistungen prüfen

Überprüfe schließlich den Dienst mit dem Befehl curl auf den Servern „worker1“ und „worker2“. Wenn der Dienst läuft, solltest du die Standardseite index.html auf deinem Bildschirm sehen.

Überprüfe den Dienst auf worker1.

docker ps
curl worker1:8000

Zugangsservice Arbeiter1

Überprüfe den Dienst auf worker2.

docker ps
curl worker2:8000

Zugangsdienst node2

Löschen von Diensten in Docker Swarm

Du hast die grundlegenden Bereitstellungs- und Skalierungsdienste von Docker Swarm kennengelernt. Als Nächstes wirst du deine Docker Swarm-Umgebung aufräumen, indem du den Dienst „test-httpd“ löschst.

Führe den folgenden Befehl aus, um den Dienst „test-httpd“ aus dem Docker Swarm zu entfernen.

docker service rm test-httpd

Überprüfe danach den Dienst„test-httpd“ mit dem unten stehenden Befehl„docker service inspect„. Du solltest sehen, dass der Dienst gelöscht ist.

docker service inspect test-httpd

Außerdem kannst du mit dem unten stehenden Docker-Befehl die Liste der laufenden Container und Images in deinem Swarm überprüfen.

Du solltest sehen, dass der Container entfernt wurde und das httpd:alpine Image auf allen Servern verfügbar ist.

docker ps
docker images

Fazit

In dieser Anleitung hast du den Docker Swarm mit drei Rocky Linux Servern eingerichtet. Außerdem hast du die Installation der Docker Engine auf einem Linux-Server und die Konfiguration von Firewalld auf dem Rocky Linux-System gelernt. Und schließlich hast du auch gelernt, wie du mit dem Befehl „docker service“ grundlegende Anwendungen in Docker Swarm bereitstellst.

Von hier aus kannst du nun deine containerisierten Anwendungen mit allen Abhängigkeiten in den Docker Swarm deployen. Du kannst auch weitere Swarm Manager hinzufügen, um die Hochverfügbarkeit deiner Docker Swarm Umgebung einzurichten.

Das könnte dich auch interessieren …