Der Docker Swarm-Modus ist das Orchestrierungs- und Clustering-Tool eines Containers zur Verwaltung des Docker-Hosts. Der Docker Swarm-Modus ist der native Teil der Docker-Engine. Das bedeutet, dass Sie außer der Docker-Engine nichts installieren müssen, da der Docker-Schwarmmodus Teil der Docker-Engine ist.
Der Docker-Schwarmmodus wird mit Docker 1.12 eingeführt. Einige der Hauptvorteile des Docker-Schwarmmodus sind die Container-Selbstheilung , Load-Balancing , Container-Skalierung undskalieren , Diensterkennung und laufende Updates . In den letzten paar Artikeln haben wir die folgenden Themen diskutiert
- So installieren Sie Docker unter CentOS 7
- So erstellen Sie Docker-Container-Images mit Dockerfile
In diesem Artikel erklären wir Ihnen, wie Sie den Docker Swarm-Modus unter CentOS 7.x / RHEL 7.x installieren und konfigurieren. Für die Demonstration werde ich 3 CentOS 7.x verwenden oder RHEL 7.x Server, auf denen ich die Docker-Engine installieren werde. Davon fungieren zwei Server als Docker Engine oder Worker-Knoten und einer wird als Manager fungieren . In meinem Fall verwende ich Folgendes:
- dkmanager.example.com (172.168.10.70 ) – Es fungiert als Manager, der die Docker-Engine oder Hosts oder Worker-Knoten verwaltet, und es fungiert auch als Docker-Engine.
- workernode1.example.com ( 172.168.10.80 ) – fungiert als Docker-Engine oder Worker-Knoten
- workernode2.example.com ( 172.168.10.90 ) – fungiert als Docker-Engine oder Worker-Knoten
Aktualisieren Sie die folgenden Zeilen in der Datei /etc/hosts auf allen Servern
172.168.10.70 dkmanager.example.com dkmanager172.168.10.80 workernode1.example.com workernode1172.168.10.90 workernode2.example.com workernode2
Schritt:1 Docker Engine auf allen Hosts installieren
Legen Sie zuerst das Docker-Repository fest und führen Sie dann den Befehl below auf allen Hosts aus.
[[email protected] ~]# yum install yum-utils –y[[email protected] ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/ docker-ce.repo[[email protected] ~]# yum install docker-ce docker-ce-cli containerd.io –y[[email protected] ~]# systemctl docker starten[[email protected] ~]# systemctl docker aktivieren
Wiederholen Sie die obigen Schritte für workernode1 und workernode2
Hinweis:Zum Zeitpunkt der Erstellung dieses Artikels war die Docker-Version 1.13 verfügbar.
Schritt:2 Firewall-Ports auf Manager- und Worker-Knoten öffnen
Öffnen Sie die folgenden Ports in der Betriebssystem-Firewall im Docker Manager mit den folgenden Befehlen
[[email protected] ~]# firewall-cmd --permanent --add-port=2376/tcpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=2377/tcpsuccess[ [email protected] ~]# firewall-cmd --permanent --add-port=7946/tcpsuccess[[email protected]ager ~]# firewall-cmd --permanent --add-port=7946/udpsuccess[[email protected ] ~]# firewall-cmd --permanent --add-port=4789/udpsuccess[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcpsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#
Starten Sie den Docker-Dienst im Docker-Manager neu
[[email protected] ~]# systemctl docker neu starten
Öffnen Sie die folgenden Ports auf jedem Worker-Knoten und starten Sie den Docker-Dienst neu
~]# firewall-cmd --permanent --add-port=2376/tcp~]# firewall-cmd --permanent --add-port=7946/tcp~]# firewall-cmd --permanent -- add-port=7946/udp~]# firewall-cmd --permanent --add-port=4789/udp~]# firewall-cmd --permanent --add-port=80/tcp~]# firewall-cmd - -reload~]# systemctl Docker neu starten
Schritt:3 Initialisieren Sie den Schwarm oder Cluster mit dem Befehl „docker swarm init“
Führen Sie den folgenden Befehl vom Manager-Knoten (dkmanager) aus, um den Cluster zu initialisieren.
[[email protected] ~]# docker swarm init --advertise-addr 172.168.10.70
Dieser Befehl macht unseren Knoten zu einem Manager-Knoten und wir geben auch die IP-Adresse des Managers im obigen Befehl bekannt, damit der Slave- oder Worker-Knoten dem Cluster beitreten kann.
Führen Sie den folgenden Befehl aus, um den Managerstatus zu überprüfen und eine Liste der Knoten in Ihrem Cluster anzuzeigen
[[email protected] ~]# docker node lsID HOSTNAME STATUS VERFÜGBARKEIT MANAGER STATUSn64oy2sml1w188ps109mai67b * dkmanager.example# .com Ready Active protected>[email]Wir können auch die „Docker-Info verwenden ” Befehl, um den Status des Schwarms zu überprüfen
Schritt:3 Worker-Knoten zu Schwarm oder Cluster hinzufügen
Um dem Schwarm oder Cluster Worker-Knoten hinzuzufügen, führen Sie den Befehl aus, den wir erhalten, wenn wir den Schwarm initialisieren. Beispielbefehl wird in Schritt 3 gezeigt
[[email protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Dieser Knoten ist einem Schwarm als Worker beigetreten.[[email][protectemail ]~ ed[protected] ~]# docker swarm join --token SWMTKN-1-4jjyu1btmdky0ou6gl2dwgt24bolpsdn5yd77pohmcnmz0s288-11xwcvzjar29fskkhfvlzsmhr 172.168.10.70:2377Dieser Knoten ist einem Schwarm als Worker beigetreten.[[email protected] ~]#Überprüfen Sie den Knotenstatus mit dem Befehl „docker node ls ” vom Docker-Manager
Zu diesem Zeitpunkt läuft unser Docker-Swarm-Modus oder -Cluster mit zwei Worker-Knoten. Im nächsten Schritt werden wir sehen, wie man einen Dienst definiert.
Schritt:4 Dienst im Docker Swarm-Modus starten
Im Docker-Schwarmmodus werden Container durch das Wort tasks ersetzt und Tasks (oder Container) werden gestartet und als Dienst bereitgestellt. Nehmen wir an, ich möchte einen Dienst mit dem Namen „Webserver“ erstellen mit fünf Containern und möchten sicherstellen, dass der gewünschte Status von Containern innerhalb des Dienstes fünf ist.
Führen Sie die folgenden Befehle nur vom Docker-Manager aus.
[[email protected] ~]# docker service create -p 80:80 --name webserver --replicas 5 httpd7hqezhyak8jbt8idkkke8wizi[[email protected] ~]#Der obige Befehl erstellt einen Dienst mit dem Namen „webserver“, in dem der gewünschte Status von Containern oder Aufgaben 5 ist und Container vom Docker-Image „httpd“ gestartet werden “. Container werden über die Clusterknoten bereitgestellt, d. h. dkmanager , workernode1 und workernode2
Listen Sie den Docker-Dienst mit dem folgenden Befehl auf
[[email protected] ~]# docker service lsID NAME MODE REPLIKAS IMAGE7hqezhyak8jb Webserver repliziert 5/5 httpd:latest[[email protected] ~]#Führen Sie den folgenden Befehl aus, um den Status Ihres Dienstes „Webserver“
anzuzeigen[[email protected] ~]# docker service ps webserver
Gemäß der obigen Ausgabe können wir sehen, dass Container über die Cluster-Knoten hinweg bereitgestellt werden, einschließlich des Manager-Knotens. Jetzt können wir über die folgenden URLs von jedem Worker-Knoten und Docker Manager aus auf die Webseite zugreifen:
http:// 172.168.10.70 oder http://172.168.10.80 oder http://172.168.10.90
Schritt:5 Testen Sie jetzt die Selbstheilung des Containers
Die Container-Selbstheilung ist das wichtige Merkmal des Docker-Schwarmmodus. Wie der Name schon sagt, stellt der Manager sicher, dass mindestens 5 Container für den Dienst „Webserver“ ausgeführt werden müssen, wenn etwas mit dem Container schief geht. Lassen Sie uns den Container von workernode2 entfernen und sehen, ob ein neuer Container gestartet wird oder nicht.
[[email protected] ~]# docker ps[[email protected] ~]# docker rm a9c3d2172670 -f
Überprüfen Sie nun den Dienst vom Docker-Manager und sehen Sie, ob ein neuer Container gestartet wird oder nicht
[[email protected] ~]# docker service ps webserver
Gemäß der obigen Ausgabe können wir sehen, dass ein neuer Container auf dem dkmanager-Knoten gestartet wird, weil einer der Container auf workernode2 entfernt wurde
Schritt:6 Container hoch- und herunterskalieren, die einem Dienst zugeordnet sind
Im Docker-Schwarmmodus können wir Container oder Aufgaben hoch- und herunterskalieren. Lassen Sie uns die Container für den Dienst „Webserver“ auf 7 hochskalieren ‘
[[email protected] ~]# docker service scale webserver=7webserver scaled to 7[[email protected] ~]#Überprüfen Sie den Dienststatus erneut mit den folgenden Befehlen
Lassen Sie uns den Container für den Service-Webserver auf 4 herunterskalieren
[[email protected] ~]# docker service scale webserver=4webserver scaled to 4[[email protected] ~]#Überprüfen Sie den Dienst erneut mit den folgenden Befehlen
Das ist alles für diesen Artikel. Ich hoffe, Sie haben eine Idee, wie Sie den Docker-Swarm-Modus unter CentOS 7.x und RHEL 7.x installieren und konfigurieren. Bitte zögern Sie nicht, Ihr Feedback und Ihre Kommentare zu teilen 🙂