So konfigurieren Sie Docker Swarm mit mehreren Docker-Knoten unter Ubuntu 18.04
Docker Swarm ist ein Container-Orchestrierungs- und Clustering-Tool zum Verwalten von Docker-Hosts und ist Teil der Docker Engine. Es handelt sich um ein natives Clustering-Tool, das von Docker bereitgestellt wird und Hochverfügbarkeit und hohe Leistung für Ihre Anwendung bietet.
Das Hauptziel von Docker Swarm besteht darin, mehrere Docker-Hosts in einem einzigen logischen virtuellen Server zu gruppieren – dies gewährleistet die Verfügbarkeit und hohe Leistung Ihrer Anwendung, indem sie auf eine Reihe von Docker-Hosts verteilt wird, anstatt nur auf einen.
In diesem Tutorial lernen Sie:
- Was ist Docker Swarm?
- Konfigurieren von Hosts
- Installieren und Ausführen des Docker-Dienstes
- Konfigurieren des Manager-Knotens für die Initialisierung von Schwarmclustern
- Konfigurieren von Workerknoten für den Beitritt zum Swarm-Cluster
- So überprüfen Sie den Schwarmcluster
- Bereitstellen eines neuen Diensts auf einem Swarm-Cluster
Docker Swarm-Dienste.
Verwendete Softwareanforderungen und Konventionen
Das Schwarmkonzept im Detail
Die in die Docker-Engine eingebetteten Clusterverwaltungs- und Orchestrierungsfunktionen werden mit swarmkit erstellt.
Ein Schwarm besteht aus mehreren Docker-Hosts, die im Schwarmmodus ausgeführt werden und als Manager (die Mitgliedschaft und Delegierung verwalten) und Worker (die Schwarmdienste ausführen) fungieren. Ein bestimmter Docker-Host kann ein Manager oder ein Worker sein oder beide Rollen ausführen. Wenn Sie einen Dienst erstellen, definieren Sie seinen optimalen Zustand, z. B. die Anzahl der Replikate, die verfügbaren Netzwerk- und Speicherressourcen, die Ports, die der Dienst für die Außenwelt verfügbar macht usw. Wenn ein Worker-Knoten nicht mehr verfügbar ist, plant Docker die Aufgaben dieses Knotens auf anderen Knoten. Eine Aufgabe ist ein ausgeführter Container, der Teil eines Schwarmdiensts ist und von einem Schwarmmanager verwaltet wird.
Einer der Hauptvorteile von Swarm-Services gegenüber eigenständigen Containern besteht darin, dass Sie die Konfiguration eines Service, einschließlich der Netzwerke und Volumes, mit denen er verbunden ist, ändern können, ohne den Service manuell neu starten zu müssen. Docker aktualisiert die Konfiguration, stoppt die Dienstaufgaben mit der veralteten Konfiguration und erstellt neue, die der gewünschten Konfiguration entsprechen.
Wenn Docker im Schwarmmodus ausgeführt wird, können Sie weiterhin eigenständige Container auf jedem der Docker-Hosts ausführen, die am Schwarm teilnehmen, sowie auf Schwarmdiensten. Ein wesentlicher Unterschied zwischen eigenständigen Containern und Schwarmdiensten besteht darin, dass nur Schwarmmanager einen Schwarm verwalten können, während eigenständige Container auf jedem Daemon gestartet werden können. Docker-Daemons können als Manager, Worker oder beides an einem Schwarm teilnehmen.
Konfigurieren der Docker-Hosts
Bevor wir die erforderlichen Docker-Pakete für den Swarm-Cluster installieren, konfigurieren wir die Hosts-Datei auf allen Ubuntu-Knoten.
Manager Node – 192.168.1.103 (hostname - dockermanager)
Worker Node1 – 192.168.1.107 (hostname – dockerworker1)
Worker Node2 – 192.168.1.108 (hostname - dockerworker2)
Bearbeiten Sie die Datei /etc/hosts auf allen drei Knoten über gedit oder vim und nehmen Sie die folgenden Änderungen vor:
192.168.1.103 dockermanager
192.168.1.107 dockerworker1
192.168.1.108 dockerworker2
Überprüfen Sie nach dem Ändern mit den oben genannten Details in der Hosts-Datei die Konnektivität mit Ping zwischen allen Knoten.
Vom Docker Manager-Host
ping dockerworker1
ping 192.168.1.107
ping dockerworker2
ping 192.168.1.108
Von Docker-Worker-Knoten 1
ping dockermanager
ping 192.168.1.103
Vom Docker-Worker-Knoten 2
ping dockermanager
ping 192.168.1.103
Installieren und Ausführen des Docker-Dienstes
Um den Schwarmcluster zu erstellen, müssen wir docker auf allen Serverknoten installieren. Wir werden docker-ce, d.h. Docker Community Edition, auf allen drei Ubuntu-Maschinen installieren.
Bevor Sie Docker CE zum ersten Mal auf einem neuen Hostcomputer installieren, müssen Sie das Docker-Repository einrichten. Anschließend können Sie Docker aus dem Repository installieren und aktualisieren. Führen Sie alle folgenden Schritte auf allen drei Ubuntu-Knoten aus.
Aktualisieren Sie den Index des apt-Pakets:
apt-get update
Installieren Sie Pakete, um apt zu erlauben, ein Repository über HTTPS zu verwenden:
apt-get install apt-transport-https ca-certificates curl software-properties-common -y
Fügen Sie den offiziellen GPG-Schlüssel von Docker hinzu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Verwenden Sie den folgenden Befehl, um das stabile Repository einzurichten:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Aktualisieren Sie erneut das apt-Paket:
apt-get update
Installieren Sie die neueste Version von Docker CE:
apt-get install docker-ceStarten Sie nach Abschluss der Installation den Docker-Dienst, und aktivieren Sie ihn so, dass er bei jedem Systemstart gestartet wird.
systemctl start docker
systemctl enable docker
Führen Sie den folgenden Befehl aus, um Docker so zu konfigurieren, dass es als normaler Benutzer oder Nicht-Root-Benutzer ausgeführt wird:
usermod -aG docker <username>
usermod -aG docker manager
usermod -aG docker worker1
usermod -aG docker worker2
Melden Sie sich nun als designierter Benutzer an und führen Sie docker hello-world aus, um dies zu überprüfen.
su - manager
docker run hello-world
Nach erfolgreichem Lauf wird die folgende Ausgabe ausgegeben
Überprüfen Sie die Docker-Installation Hello_World.
Konfigurieren des Manager-Knotens für die Initialisierung von Schwarmclustern
In diesem Schritt erstellen wir den Schwarmcluster unserer Knoten. Um den Schwarmcluster zu erstellen, müssen wir den Schwarmmodus auf dem Knoten "dockermanager" initialisieren und dann die Knoten "dockerworker1" und "dockerworker2" mit dem Cluster verbinden.
Initialisieren Sie den Docker-Swarm-Modus, indem Sie den folgenden docker-Befehl auf dem Knoten "dockermanager" ausführen.
<br /> docker swarm init --advertise-addr <Manager-Knoten IP-Adresse><br />
docker swarm init --advertise-addr 192.168.1.103
Initialisierung des Schwarmclusters.
'join token' wurde vom 'dockermanager' generiert, der erforderlich ist, um die Worker-Knoten mit dem Cluster-Manager zu verbinden.
Konfigurieren von Workerknoten für den Beitritt zum Swarm-Cluster
Um nun die Worker-Knoten mit dem Schwarm zu verbinden, führen wir den Befehl docker swarm join auf allen Worker-Knoten aus, die wir im Schritt der Schwarminitialisierung erhalten haben:
docker swarm join --token SWMTKN-1-4htf3vnzmbhc88vxjyguipo91ihmutrxi2p1si2de4whaqylr6-3oed1hnttwkalur1ey7zkdp9l 192.168.1.103:2377
Worker-Knoten 1 beim Beitritt zum Swarm-Cluster.
Worker-Knoten 2 tritt dem Swarm-Cluster bei.
Überprüfen des Schwarmclusters
Um den Knotenstatus zu sehen, damit wir feststellen können, ob die Knoten aktiv/verfügbar sind usw., listen Sie vom Manager-Knoten aus alle Knoten im Schwarm auf:
docker node ls
Überprüfung des Docker-Swarm-Clusters.
Wenn Sie zu irgendeinem Zeitpunkt Ihr Join-Token verloren haben, können Sie es abrufen, indem Sie den folgenden Befehl auf dem Manager-Knoten für das Manager-Token ausführen:
docker swarm join-token manager -q
Führen Sie auf die gleiche Weise den folgenden Befehl auf dem Manager-Knoten aus, um das Worker-Token abzurufen:
docker swarm join-token worker -q
Bereitstellen eines neuen Diensts auf einem Swarm-Cluster
In diesem Schritt erstellen wir unseren ersten Dienst und stellen ihn im Schwarmcluster bereit. Der neue nginx-Webserver des Diensts wird auf dem standardmäßigen HTTP-Port 80 ausgeführt und dann auf dem Hostcomputer für den Port 8081 verfügbar gemacht. Wir werden diesen nginx-Dienst mit 2 Replikaten erstellen, was bedeutet, dass in unserem Schwarm 2 Container von nginx ausgeführt werden. Wenn einer dieser Container ausfällt, wird er erneut gespawnt, um die gewünschte Anzahl zu erhalten, die wir in der Replikatoption festgelegt haben.
docker service create --name my-web1 --publish 8081:80 --replicas 2 nginx
Nach erfolgreicher Bereitstellung des Dienstes sehen Sie die folgende Ausgabe:
Bereitstellen des Nginx-Dienstes auf einem Swarm-Cluster.
Um den neu erstellten nginx-Dienst mit den folgenden docker-Dienstbefehlen zu überprüfen.
docker service ls
Listen Sie den neu bereitgestellten Dienst im Swarm-Cluster auf.
<br /> docker service ps <service name><br />
docker service ps my-web1
Listet die Aufgaben auf, die als Teil der angegebenen Dienste auf dem Schwarmcluster ausgeführt werden.
Wenn wir überprüfen müssen, ob der nginx-Dienst einwandfrei funktioniert, können wir entweder den Befehl curl verwenden oder im Browser auf dem Hostcomputer nach der Begrüßungsseite des nginx-Webservers suchen.
curl http://dockermanager:8081
Prüfung des Nginx-Webdienstes über CURL.
Im Browser auf dem Host-Rechner können wir auf die Willkommensseite von nginx zugreifen
Nginx Service Check per Browser.
Wenn wir nun den nginx-Dienst skalieren müssen, erstellen wir 3 Replikate und führen dazu den folgenden Befehl auf dem Manager-Knoten aus:
docker service scale my-web1=3
Service Scaling für die gewünschte Anzahl von Replikaten.
Um die Ausgabe nach der Skalierung zu überprüfen, können wir den Befehl docker service ls oder docker service ps verwenden.
Wir können den Befehl docker service inspect verwenden, um die erweiterten Details eines bereitgestellten Dienstes im Schwarm zu überprüfen. Standardmäßig werden alle Ergebnisse in einem JSON-Array gerendert.
Schlussfolgerung
Docker hat sich zu einer äußerst beliebten Methode zum Konfigurieren, Speichern und Freigeben von Serverumgebungen mithilfe von Containern entwickelt. Aus diesem Grund kann die Installation einer Anwendung oder sogar eines großen Stacks oft so einfach sein wie das Ausführen von docker pull oder docker run. Die Trennung von Anwendungsfunktionen in verschiedene Container bietet auch Vorteile im Sicherheits- und Abhängigkeitsmanagement.











