Website-Suche

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-ce

Starten 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.

Verwandte Artikel: