Docker Swarm ist ein Tool, mit dem Sie einen Cluster von Docker-Hosts bereitstellen können. Es ist ein natives Clustering-Tool, das von Docker bereitgestellt wird und Hochverfügbarkeit und Leistung für Ihre Anwendung bietet, indem es auf alle Knoten innerhalb des Schwarmclusters verteilt wird.
In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie mit Ubuntu 16.04 einen Swarm Cluster erstellen. Wir erstellen einen Schwarmcluster mit 2 Ubuntu-Servermaschinen, 1 Serverknoten als Manager und 1 weiteren als Worker. Und dann werden wir versuchen, den einfachen Nginx-Dienst im Schwarm-Cluster bereitzustellen.
Voraussetzungen
- 2 oder mehr – Ubuntu 16.04 Server
- manager 132.92.41.4
- worker01 132.92.41.5
- Root-Rechte
Was werden wir tun?
- Hosts konfigurieren
- Installieren Sie Docker-ce
- Docker Swarm-Initialisierung
- Bereitstellen des ersten Dienstes für den Cluster
Schritt 1 - Hosts konfigurieren
Bevor wir Pakete für den Swarm-Cluster installieren, konfigurieren wir die Hosts-Datei auf beiden Servern.
Führen Sie die folgenden Befehle auf allen Servern aus, „manager“ und „worker01“.
Bearbeiten Sie die Datei „/etc/hosts“ mit dem vim-Editor.
vim /etc/hosts
Fügen Sie die folgende Konfiguration am Ende der Zeile hinzu.
132.92.41.4 manager
132.92.41.5 worker01
Speichern und beenden.
Pingen Sie jetzt alle Knoten mit 'hostname' anstatt mit der IP-Adresse.
ping -c 3 manager
ping -c 3 worker01
Und stellen Sie sicher, dass es auf allen Hosts funktioniert.
Schritt 2 – Docker-ce installieren
Um den Schwarmcluster zu erstellen, müssen wir Docker auf allen Serverknoten installieren. In diesem Schritt installieren wir die Docker-ce Community Edition auf den Servern manager und worker01.
Installieren Sie Docker-ce-Abhängigkeiten mit dem folgenden apt-Befehl.
sudo apt install apt-transport-https software-properties-common ca-certificates -y
Fügen Sie nun den Docker-Schlüssel und das Docker-ce-Repository zu unseren Servern hinzu.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list
Aktualisieren Sie das Repository und installieren Sie Docker-ce-Pakete mit dem folgenden apt install-Befehl.
sudo apt update
sudo apt install docker-ce -y
Nachdem die Installation abgeschlossen ist, starten Sie den Docker-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start docker
systemctl enable docker
Docker-ce ist jetzt auf unseren Serverknoten installiert.
Als Nächstes konfigurieren wir Docker so, dass es als normaler Benutzer oder Nicht-Root-Benutzer ausgeführt wird.
Erstellen Sie einen neuen Benutzer namens „mohammad“ und fügen Sie ihn der Gruppe „docker“ hinzu.
useradd -m -s /bin/bash mohammad
sudo usermod -aG docker mohammad
Melden Sie sich jetzt beim Benutzer „mohammad“ an und führen Sie den Docker-Befehl „hello-world“ wie unten beschrieben aus.
su - mohammad
docker run hello-world
Und Sie erhalten das Hello World von Docker, wie unten gezeigt.
Schritt 3 – Schwarmcluster erstellen
In diesem Schritt erstellen wir den Schwarmcluster unserer Knoten. Und um die Schwarm-Cluster-Knoten zu erstellen, müssen wir den Schwarmmodus auf dem „Manager“-Knoten initialisieren und dann den „Worker01“-Knoten mit dem Cluster verbinden.
Initialisieren Sie den Docker Swarm-Modus, indem Sie den Docker-Befehl unten auf dem „Manager“-Knoten ausführen.
docker swarm init --advertise-addr 132.92.41.4
Und Sie erhalten das unten gezeigte Ergebnis.
Sie werden sehen, dass „Join-Token“ vom „Manager“-Knoten generiert wurde.
Als nächstes müssen wir den Knoten „worker01“ zum Cluster „manager“ hinzufügen. Und dazu benötigen wir ein 'Join-Token' vom Cluster-'Manager'-Knoten, also schreiben Sie es auf Ihre Notiz.
Führen Sie den docker swarm join-Befehl auf dem „worker01“-Knoten aus.
docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377
Jetzt erhalten Sie das unten gezeigte Ergebnis.
Der Knoten „worker01“ wurde dem Cluster hinzugefügt.
Überprüfen Sie dies, indem Sie den folgenden Befehl auf dem „Manager“-Knoten ausführen.
docker node ls
Jetzt sehen Sie, dass der Knoten „worker01“ dem Schwarmcluster hinzugefügt wurde.
Der Schwarm-Cluster wurde erstellt.
Schritt 4 – Bereitstellen des ersten Dienstes im Cluster
In diesem Schritt werden wir unseren ersten Dienst erstellen und für den Schwarmcluster bereitstellen. Wir möchten einen neuen Dienst-Nginx-Webserver erstellen, der auf dem Standard-HTTP-Port 80 ausgeführt wird, und ihn dann dem Port 8080 auf dem Hostserver zur Verfügung stellen und dann versuchen, den nginx-Dienst innerhalb des Schwarmclusters zu replizieren.
Dienst erstellen
Erstellen Sie einen neuen Nginx-Dienst mit dem Namen „my-web“ und stellen Sie den HTTP-Port des Containers dem Port 8080 auf dem Host zur Verfügung.
docker service create --name my-web --publish 8080:80 nginx:1.13-alpine
Und wenn es erstellt ist, überprüfen Sie es mit dem Docker-Dienstbefehl unten.
docker service ls
Und Sie erhalten das unten gezeigte Ergebnis.
Der Nginx-Dienst wurde erstellt und im Schwarmcluster als Dienst namens „my-web“ bereitgestellt, er basiert auf Nginx Alpine Linux, stellt den HTTP-Port des Containerdienstes dem Port „8080“ auf dem Host zur Verfügung und es hat nur 1 Repliken.
Repliken und Skalieren des Dienstes
Jetzt werden wir Kopien für den Dienst „my-web“ erstellen. Wir werden 2 Kopien des Dienstes „my-web“ erstellen, sodass der Dienst auf den Knoten „manager“ und „worker01“ zugänglich ist.
Führen Sie den folgenden Befehl aus, um den Dienst „my-web“ zu replizieren.
docker service scale my-web=2
Und wenn es fertig ist, überprüfen Sie es erneut mit dem Befehl docker service.
docker service ls
Und jetzt hat der Server 2 Replikate.
Öffnen Sie Ihren Webbrowser und geben Sie die IP-Adresse des Manager-Knotens mit Port 8080 ein.
http://manager:8080/
Und Sie erhalten die Nginx-Standardseite.
Unten sehen Sie das Ergebnis des Knotens „worker01“.
http://worker01:8080/
Der Swarm-Cluster wurde erstellt und der Nginx-Dienst wurde vollständig in unserem Swarm-Cluster bereitgestellt.