Docker ist ein Open-Source-Tool, mit dem Anwendungen mithilfe eines Containers erstellt, bereitgestellt und ausgeführt werden können. Der Container ermöglicht es Ihnen, eine Anwendung mit allen erforderlichen Abhängigkeiten zu packen und als einzelnes Paket zu versenden.
Docker Swarm ist ein Clustering-Tool zur Verwaltung des Docker-Hosts. Es ermöglicht Ihnen, eine Gruppe von Docker-Hosts zu einem einzigen logischen virtuellen Server zu machen. Auf diese Weise können Sie Ihre Anwendung horizontal skalieren und die Anzahl der Containerinstanzen erhöhen. Docker Swarm bietet sehr nützliche Funktionen, darunter Container-Selbstheilung, Lastenausgleich, Container-Skalierung nach oben und unten, Diensterkennung und fortlaufende Updates.
In diesem Beitrag zeigen wir Ihnen, wie Sie einen Docker Swarm-Cluster unter CentOS 8 einrichten.
Voraussetzungen
- Zwei Server mit CentOS 8.
- Ein Root-Passwort wird auf jedem Server konfiguriert.
Installieren Sie Docker auf beiden Knoten
Zunächst müssen Sie Docker auf beiden Knoten installieren. Standardmäßig ist die neueste Version von Docker nicht im Standard-Repository von CentOS 8 enthalten. Sie müssen also ein Docker-Repo in Ihrem System hinzufügen.
Sie können es mit dem folgenden Befehl hinzufügen:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Nachdem das Docker-Repository erstellt wurde, installieren Sie Docker mit dem folgenden Befehl:
dnf install docker-ce --nobest
Starten Sie nach der Installation von Docker den Docker-Dienst und ermöglichen Sie ihm, beim Systemneustart mit dem folgenden Befehl zu starten:
systemctl docker starten
systemctl docker aktivieren
Sie können den Status von Docker auch mit dem folgenden Befehl überprüfen:
Systemctl-Status-Docker
Sie sollten die folgende Ausgabe erhalten:
Überprüfen Sie nun die installierte Version von Docker mit dem folgenden Befehl:
docker --version
Sie sollten die folgende Ausgabe sehen:
Docker-Version 20.10.5, Build 55c4c88
Firewall konfigurieren
Als nächstes müssen Sie die Ports 2376, 2377, 7946 und 80 auf beiden Knoten durch die Firewall zulassen. Sie können sie mit dem folgenden Befehl zulassen:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add -port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall- cmd --permanent --add-port=4789/udp
Als nächstes laden Sie die Firewall neu, um die Änderungen zu übernehmen:
firewall-cmd --reload
Initialisieren Sie den Docker-Swarm-Cluster
Als Nächstes müssen Sie den Docker Swarm-Cluster auf dem Manager-Knoten initialisieren. Sie können dies mit dem folgenden Befehl tun:
docker swarm init --advertise-addr 45.58.32.185
Sie sollten die folgende Ausgabe erhalten:
Swarm initialisiert:aktuelle Knoten (cq8xpscsls2ctqhdha8lhdrph) wird nun ein manager.To einen Arbeiter zu diesem Schwarm hinzufügen, führen Sie den folgenden Befehl ein:Docker Schwarm beitreten --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377To einen Manager hinzufügen Führen Sie für diesen Schwarm „docker swarm join-token manager“ aus und folgen Sie den Anweisungen.
Sie können den in der obigen Ausgabe gezeigten Befehl im Docker-Worker-Knoten verwenden, um den Knoten mit dem Cluster zu verbinden.
Sie können die Informationen des Docker Swarm-Clusters mit dem folgenden Befehl überprüfen:
Docker-Info
Sie sollten die folgende Ausgabe erhalten:
Client:Kontext:default Debug Mode:false Plugins:app:Docker App (Docker Inc., v0.9.1-beta3) buildx:Build with BuildKit (Docker Inc., v0.5.1-docker)Server:Containers:0 Läuft:0 Angehalten:0 Gestoppt:0 Bilder:0 Serverversion:20.10.5 Speichertreiber:overlay2 Unterstütztes Dateisystem:xfs Unterstützt d_type:true Native Overlay Diff:true Protokollierungstreiber:json-file Cgroup-Treiber:cgroupfs Cgroup-Version:1 Plugins :Volume:local Network:bridge host ipvlan macvlan null overlay Log:awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm:active NodeID:cq8xpscsls2ctqhdha8lhdrph Is Manager:true ClusterID:m7jrgvuw1k7pvfd1qyc3mffpl Managers:1 Nodes:1.0 Default Address Pool:1 Nodes:1.0 Default Address Pool .0.0/8 Subnetzgröße:24 Datenpfadport:4789 Orchestrierung:Aufbewahrungslimit für Aufgabenverlauf:5 Raft:Snapshot-Intervall:10000 Anzahl alter Snapshots, die aufbewahrt werden sollen:0 Heartbeat-Tick:1 Wahl-Tick:10 Dispatcher:Heartbeat-Zeitraum:5 Sekunden CA Konfigurieren ation:Expiry Duration:3 Monate Force Rotate:0 Autolock Managers:false Root Rotation In Progress:false Node Address:45.58.32.185 Manager Addresses:45.58.32.185:2377
Sie können den Docker Swarm-Knoten jetzt mit dem folgenden Befehl überprüfen:
Docker-Knoten ls
Sie sollten die folgende Ausgabe erhalten:
ID HOSTNAME STATUS VERFÜGBARKEIT MANAGER STATUS ENGINE VERSIONcq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Worker-Knoten zum Docker-Swarm-Cluster hinzufügen
Als Nächstes müssen Sie den Worker-Knoten zum Docker Swarm-Manager-Knoten hinzufügen. Sie können dies mit dem folgenden Befehl auf dem Worker-Knoten tun:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377
Sie sollten die folgende Ausgabe erhalten:
Dieser Knoten ist einem Schwarm als Worker beigetreten.
Überprüfen Sie auf dem Docker Manager-Knoten den Worker-Knoten mit dem folgenden Befehl:
Docker-Knoten ls
Sie sollten sehen, dass der Worker-Knoten zum Docker Swarm hinzugefügt wurde:
cq8xpscsls2ctqhdha8lhdrph * masternode bereit aktiv Leader 20.10.5bipfv8sfm94a9po0uame5rd1n workernode bereit aktiv 20.10.5
Starten Sie einen Dienst in Docker Swarm
Hier erstellen wir einen neuen Nginx-Webservice und skalieren ihn mit zwei Containern. Sie können es erstellen, indem Sie den folgenden Befehl auf dem Manager-Knoten ausführen:
docker service create -p 80:80 --name webservice --replicas 2 nginx
Sie sollten die folgende Ausgabe erhalten:
agyxlaswxakrbboakkyydsh0Gesamtfortschritt:2 von 2 Aufgaben 1/2:läuft [=================================================>] 2/2:läuft [==================================================>] verifizieren:Dienst konvergiert
Sie können den Webservice nun mit folgendem Befehl prüfen:
docker service ls
Sie sollten die folgende Ausgabe sehen:
ID NAME MODE REPLICAS IMAGE PORTSSagyxlaswxakr Webservice repliziert 2/2 nginx:latest *:80->80/tcp
Sie können den laufenden Container auch mit dem folgenden Befehl überprüfen:
docker-ps
Sie sollten die folgende Ausgabe sehen:
CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMESc887cad1df2e nginx:latest "/docker-entrypoint.…" vor 32 Sekunden Up 30 Sekunden 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
Führen Sie den folgenden Befehl aus, um die Detailinformationen des Webdienstes abzurufen:
docker service ps webservice
Sie sollten die folgende Ausgabe sehen:
ID NAME IMAGE NODE GEWÜNSCHTER STATUS AKTUELLER STATUS FEHLER PORTSeye9zukwwrkq webservice.1 nginx:latest workernode Wird ausgeführt Wird vor 3 Minuten ausgeführt jelyj9gmeb7i webservice.2 nginx:latest masternode Wird ausgeführt Wird vor 3 Minuten ausgeführt
Docker Swarm überprüfen
An diesem Punkt haben wir einen Nginx-Container über die Cluster-Knoten einschließlich des Verwaltungsknotens bereitgestellt. Sie können jetzt über eine beliebige IP-Adresse des Worker-Knotens oder des Manager-Knotens auf Ihren Nginx-Webserver zugreifen:
Schlussfolgerung
In der obigen Anleitung haben Sie gelernt, wie Sie den Docker Swarm-Cluster unter CentOS 8 einrichten. Sie können jetzt beliebig viele Worker-Knoten zum Docker Swarm-Cluster hinzufügen und Ihre Anwendung skalieren.