Einführung
In diesem Lab lernen Sie, wie Sie einen Worker-Knoten (Arbeitsknoten) in einem Docker Swarm zu einem Manager-Knoten (Verwaltungsknoten) befördern können. Sie beginnen damit, einen Docker Swarm auf einer LabEx-VM zu initialisieren und einen Worker-Knoten diesem beizutreten.
Nachdem die Einrichtung abgeschlossen ist, identifizieren Sie den Worker-Knoten innerhalb des Swarms und verwenden dann den Befehl docker node promote, um seine Rolle in einen Manager-Knoten zu ändern. Abschließend überprüfen Sie die neue Rolle des Knotens, um sicherzustellen, dass die Beförderung erfolgreich war. Diese praktische Übung zeigt einen wichtigen Aspekt der Docker Swarm-Verwaltung.
Initialisieren Sie einen Docker Swarm
In diesem Schritt initialisieren Sie einen Docker Swarm auf Ihrer LabEx-VM. Ein Docker Swarm ist ein Cluster von Docker-Hosts, die im Swarm-Modus ausgeführt werden. Der Swarm-Modus ermöglicht es Ihnen, einen Cluster von Docker-Knoten als ein einzelnes virtuelles System zu verwalten.
Bevor Sie den Swarm initialisieren, überprüfen wir zunächst die aktuelle Docker-Version, die auf der VM installiert ist.
docker version
Sie sollten eine Ausgabe ähnlich der folgenden sehen, die darauf hinweist, dass die Docker-Version 20.10.21 ist:
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.18.9
Git commit: baeda1f
Built: Tue Oct 25 18:01:18 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.9
Git commit: 363bd3a
Built: Tue Oct 25 17:59:35 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.10
GitCommit: b4bd5d2bb63a5d10182b7e90689158e7c7b9b06b
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Jetzt initialisieren wir den Docker Swarm. Wenn Sie einen Swarm initialisieren, wird der aktuelle Knoten zum ersten Manager-Knoten. Manager-Knoten übernehmen die Swarm-Verwaltungstasks, wie das Aufrechterhalten des Swarm-Zustands, die Planung von Services und die Bereitstellung der Swarm-Modus-API.
Verwenden Sie den Befehl docker swarm init, um den Swarm zu initialisieren. Wir geben die Anzeigeadresse (advertise address) an, um sicherzustellen, dass andere Knoten den Swarm über die IP-Adresse der VM beitreten können. Ersetzen Sie YOUR_VM_IP_ADDRESS durch die tatsächliche IP-Adresse Ihrer LabEx-VM. Sie können diese IP-Adresse in den LabEx-Umgebungsdetails finden.
docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS
Nachdem Sie den Befehl ausgeführt haben, sehen Sie eine Ausgabe, die darauf hinweist, dass der Swarm initialisiert wurde und einen Befehl für andere Knoten enthält, um dem Swarm als Worker beizutreten. Bewahren Sie diesen Beitritts-Befehl auf, da Sie ihn im nächsten Schritt benötigen werden.
Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command on the worker node:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Fügen Sie einen Worker-Knoten dem Swarm hinzu
Im vorherigen Schritt haben Sie einen Docker Swarm initialisiert, und der aktuelle Knoten ist nun der Manager. Jetzt werden Sie das Hinzufügen eines Worker-Knotens zu diesem Swarm simulieren. In einer realen Umgebung würden Sie diesen Schritt auf einem separaten Computer ausführen, den Sie als Worker hinzufügen möchten. In diesem Lab verwenden wir jedoch die gleiche VM, um die Teilnahme eines Worker-Knotens am Swarm zu simulieren.
Um einen Knoten als Worker beizutreten zu lassen, benötigen Sie den Beitritts-Befehl, der nach der Initialisierung des Swarms bereitgestellt wird. Dieser Befehl enthält das Swarm-Beitritts-Token sowie die IP-Adresse und den Port des Manager-Knotens.
Falls Sie den Beitritts-Befehl aus dem vorherigen Schritt nicht mehr haben, können Sie ihn auf dem Manager-Knoten mit dem Befehl docker swarm join-token worker abrufen.
docker swarm join-token worker
Dieser Befehl gibt den Beitritts-Befehl für einen Worker-Knoten aus:
To add a worker to this swarm, run the following command on the worker node:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377
Jetzt führen Sie den erhaltenen Beitritts-Befehl aus. Da wir auf der gleichen VM einen Worker simulieren, führen Sie diesen Befehl im gleichen Terminal aus.
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377
Sie sollten eine Ausgabe sehen, die darauf hinweist, dass der Knoten als Worker dem Swarm beigetreten ist:
This node joined a swarm as a worker.
Dies bedeutet, dass Ihre einzelne VM nun sowohl als Manager- als auch als Worker-Knoten innerhalb des Swarms fungiert.
Auflisten der Swarm-Knoten und Identifizieren des Worker-Knotens
In den vorherigen Schritten haben Sie einen Docker Swarm initialisiert und denselben Knoten anschließend als Worker dem Swarm beigetreten. Jetzt listen wir die Knoten im Swarm auf, um den aktuellen Zustand zu sehen und die Rollen jedes Knotens zu identifizieren.
Um die Knoten im Swarm aufzulisten, verwenden Sie den Befehl docker node ls. Dieser Befehl liefert Informationen über jeden Knoten im Swarm, einschließlich seiner ID, des Hostnamens, des Status, der Verfügbarkeit, des Manager-Status und der Version.
docker node ls
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
xxxxxxxxxxxx labex-vm Ready Active Leader 20.10.21
yyyyyyyyyyyy labex-vm Ready Active 20.10.21
In dieser Ausgabe sehen Sie zwei Einträge, beide mit dem Hostnamen labex-vm. Dies liegt daran, dass Ihre einzelne VM als zwei Knoten im Swarm fungiert: ein Manager und ein Worker.
- Der Knoten mit
MANAGER STATUSalsLeaderist der Manager-Knoten, den Sie im ersten Schritt initialisiert haben. - Der Knoten ohne aufgeführten
MANAGER STATUSist der Worker-Knoten, den Sie im zweiten Schritt beigetreten haben.
Notieren Sie sich die ID des Worker-Knotens. Sie benötigen diese ID im nächsten Schritt, um ihn zu einem Manager zu befördern. Die ID ist ein eindeutiger Bezeichner für jeden Knoten im Swarm.
Bevorzugen Sie den Worker-Knoten zu einem Manager
Im vorherigen Schritt haben Sie die Knoten im Swarm aufgelistet und den Worker-Knoten anhand seiner ID und des fehlenden MANAGER STATUS identifiziert. Jetzt werden Sie diesen Worker-Knoten zu einem Manager-Knoten befördern. Das Befördern eines Worker-Knotens zu einem Manager erhöht die Anzahl der Manager-Knoten in Ihrem Swarm, was für Hochverfügbarkeit und Fehlertoleranz in einer Produktionsumgebung wichtig ist.
Um einen Knoten zu befördern, verwenden Sie den Befehl docker node promote, gefolgt von der ID des Knotens, den Sie befördern möchten. Sie haben die ID des Worker-Knotens im vorherigen Schritt ermittelt.
Ersetzen Sie WORKER_NODE_ID durch die tatsächliche ID Ihres Worker-Knotens.
docker node promote WORKER_NODE_ID
Nach der Ausführung des Befehls sollten Sie eine Ausgabe sehen, die bestätigt, dass der Knoten befördert wurde:
Node WORKER_NODE_ID was promoted to a manager.
Dies zeigt an, dass der Knoten, der zuvor ein Worker war, jetzt auch ein Manager-Knoten in Ihrem Swarm ist. Ihr Swarm hat jetzt zwei Manager-Knoten (obwohl sie in dieser simulierten Umgebung beide auf derselben physischen VM laufen).
Überprüfen Sie die neue Rolle des Knotens
Im vorherigen Schritt haben Sie den Worker-Knoten zu einem Manager befördert. Jetzt überprüfen wir, ob die Rolle des Knotens erfolgreich aktualisiert wurde, indem wir die Knoten im Swarm erneut auflisten.
Verwenden Sie den Befehl docker node ls, um die Knoten aufzulisten.
docker node ls
Diesmal sollten Sie eine Ausgabe ähnlich der folgenden sehen:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
xxxxxxxxxxxx labex-vm Ready Active Leader 20.10.21
yyyyyyyyyyyy labex-vm Ready Active Reachable 20.10.21
Beachten Sie, dass der Knoten, der zuvor ohne MANAGER STATUS aufgeführt war, jetzt Reachable unter MANAGER STATUS zeigt. Dies bestätigt, dass der Knoten erfolgreich befördert wurde und jetzt vom Swarm als Manager-Knoten erkannt wird. Der Knoten mit dem Status Leader ist der primäre Manager, während der Knoten mit dem Status Reachable ein sekundärer Manager ist.
Das Vorhandensein mehrerer Manager-Knoten in einem Swarm bietet Redundanz. Wenn der Leader-Manager-Knoten nicht verfügbar wird, kann ein anderer Manager-Knoten seine Rolle übernehmen und so den fortgesetzten Betrieb des Swarms gewährleisten.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie einen Docker Swarm auf einem einzelnen Knoten initialisieren, wodurch dieser zum ersten Manager wird. Anschließend haben Sie geübt, einen Worker-Knoten diesem Swarm beizutreten und so das Cluster zu erweitern. Das Lab hat Sie durch das Auflisten der Swarm-Knoten geführt, um den neu hinzugefügten Worker zu identifizieren. Schließlich haben Sie die Schlüsselaktion durchgeführt, den Worker-Knoten mit dem Befehl docker node promote zu einem Manager-Knoten zu befördern, und die erfolgreiche Rollenänderung überprüft.



