Docker ist die erste Wahl für die Anwendungsbereitstellung für ALLE verteilten Systeme. Die Verwaltung der Anwendung nach der Bereitstellung ist jedoch genauso wichtig wie die Bereitstellung selbst. Docker Swarm ist ein solches Verwaltungstool, das von Docker Inc. entwickelt wurde. In diesem Blog erkläre ich nicht nur, was Docker Swarm ist , sondern führe Sie auch durch die unten genannten Themen.
Lassen Sie mich eine kurze Einführung in Docker geben, damit alle auf dem gleichen Stand sind.
Was sind Docker und Docker-Container?
Docker ist ein Open-Source-Tool, das zur Automatisierung der Anwendungsbereitstellung in Form von leichtgewichtigen Containern verwendet wird. Und Docker-Container sind nicht nur leichtgewichtig, sondern machen die Anwendung auch plattformunabhängig. Die Anwendung, die auf Ihrem Computer läuft, läuft also genauso auf dem Computer Ihres Freundes!
Die Docker-Container lösen viele Probleme, mit denen virtuelle Maschinen konfrontiert sind. Daher gewinnt der Docker-Container das Spiel Docker-Container vs. virtuelle Maschinen jederzeit! Um es aufzuzählen: Docker-Container sind schneller, portabel, bieten Isolation, verbrauchen weniger Speicher usw.
Aber Docker-Container allein können nicht alles unabhängig voneinander erledigen. Und hier kommt ein Orchestrator ins Spiel. Sehen wir uns also an, wie Docker Swarm dabei hilft, Docker-Container besser zu verwalten.
Was ist Docker Swarm?
Docker Swarm ist nativ für die Docker-Plattform. Docker Swarm ist in Docker selbst integriert und wird bei der Installation von Docker installiert.
Docker Swarm ist ein kleines Verwaltungstool, das ein gutes Orchestrierungssystem für Docker-Anwendungen bietet. Docker Swarm verwandelt einen Pool von Docker-Hosts in einen einzigen virtuellen Server, der Clustering mit der integrierten Swarm-Orchestrierung ermöglicht. Im Wesentlichen können wir das Docker-Swarm-Modell nutzen, um einen Cluster von Knoten auf Docker effizient bereitzustellen, zu verwalten und zu skalieren.
Funktionen von Docker Swarm
Sehen Sie sich einige der herausragenden Funktionen des Docker-Swam-Modus an und erfahren Sie, warum wir ihn brauchen:
- Einfach und schnell: Der Swarm-Modus bietet Einfachheit und Geschwindigkeit für Entwicklung und Bereitstellung.
- Dezentraler Zugriff: Swarm macht es Organisationen ziemlich einfach, auf die Umgebung zuzugreifen und sie zu verwalten
- Hohe Sicherheit: Die Kommunikation zwischen dem Manager und den Worker-Knoten ist innerhalb des Schwarms hochsicher.
- Automatischer Lastausgleich: Wir haben auch eine Option zum automatischen Lastausgleich in Ihrer Umgebung, und Sie können hierfür Ihr eigenes Skript schreiben.
- Hohe Skalierbarkeit : Mit Lastausgleich geht eine hohe Skalierbarkeit einher.
- Rollback: Es ermöglicht Ihnen auch, Umgebungen auf vorherige sichere Umgebungen zurückzusetzen
Konzepte des Docker-Swarm-Modus
Wenn ich also von „ Docker Swarm“ spreche , beziehe ich mich eigentlich auf den Docker Swarm-Modus und nicht auf den veralteten Docker Swarm. Sehen wir uns einige der Schlüsselkonzepte des Swarm-Modus an:
Leistungen und Aufgaben
Wir verwenden Dienste, um unsere Docker-Container zu starten. Und sie können entweder global oder repliziert bereitgestellt werden.
- Globale Dienste werden verwendet, um Container zu überwachen, die auf einem Swarm-Knoten ausgeführt werden sollen.
- Ein replizierter Dienst hingegen dient dazu, die Anzahl ähnlicher Aufgaben anzugeben, die wir auf einem Hostcomputer benötigen.
- Mit dem Docker-Swarm-Modus wird die Skalierung zum Kinderspiel.
- Auf die Dienste kann von jedem beliebigen Knoten im selben Cluster zugegriffen werden.
- Ein Dienst ist die Beschreibung einer Aufgabe, während eine Aufgabe die Arbeit ausführt.
- Ein Entwickler erstellt mit Docker einen Dienst, der Aufgaben starten kann. Wenn eine Aufgabe jedoch einem Knoten zugewiesen wird, kann dieselbe Aufgabe keinem anderen Knoten zugewiesen werden.
Knoten
- Ein Knoten im Swarm-Modus ist eine Instanz der Docker-Engine.
- Es ist möglich, mehrere Knoten auf einem einzigen Server auszuführen. In der Produktion sind die Knoten jedoch auf verschiedene Geräte verteilt.
Die Architektur und Funktionsweise des Docker Swarm-Modus
Die Idee, wie Sie Docker Swarm nutzen, ist einfach: Sie deklarieren die Anwendungen als Stapel von Diensten und Docker erledigt den Rest. Die Schlüsselkomponenten eines Docker Swarm sind Docker-Knoten, Docker-Dienste und Docker-Aufgaben.
Es gibt zwei Arten von Docker-Knoten: den Manager-Knoten und den Worker-Knoten . Und ein Schwarm besteht aus mindestens einem Knoten, sei es eine physische oder eine virtuelle Maschine, auf der Docker Version 1.12 oder höher läuft.
Manager-Knoten
Der Managerknoten ist, wie der Name schon sagt, für die Aufgaben der Clusterverwaltung verantwortlich:
- So behalten Sie den Clusterstatus bei
- Terminplanung
- Und Bereitstellen von HTTP-API-Endpunkten im Swarm-Modus.
Aber für die Persistenz verwenden wir etwas, das Raft- Implementierung genannt wird. Die Manager pflegen einen konsistenten internen Status der Dienste und des gesamten Swarm-Clusters selbst. Die beste Vorgehensweise für Produktions-/Nicht-Testzwecke ist, mehr als einen Managerknoten zu implementieren.
Arbeiterknoten
Die Worker-Knoten sind nichts anderes als die Instanzen der Docker Engine, die zum Ausführen von Docker-Containern erstellt werden. Sie sind nicht an der Verwaltung von Aufgaben beteiligt. Ein Manager-Knoten kann ohne einen Worker-Knoten existieren; ein Worker kann nicht ohne einen Manager existieren. Ein Manager-Knoten ist standardmäßig auch ein Worker-Knoten.
Die Worker-Knoten kommunizieren per API über HTTP mit dem Manager-Knoten. Wie bereits erwähnt, können Dienste von jedem Knoten desselben Clusters bereitgestellt und abgerufen werden. Beim Erstellen eines Dienstes müssen Sie also das Container-Image angeben. Sie können Befehle und Dienste entweder global oder repliziert einrichten: Ein globaler Dienst wird auf jedem Swarm-Knoten ausgeführt, und bei einem replizierten Dienst weist der Manager-Knoten Aufgaben den Worker-Knoten zu.
Jetzt kommt der interessanteste Abschnitt. Ich zeige Ihnen, wie Sie einen Cluster erstellen, Knoten aktualisieren, einen Dienst starten und vieles mehr!
Demo zu Docker Swarm für Anfänger
Jetzt kommt der interessanteste Teil, praktische Erfahrung mit Docker Swarm! Ich zeige Ihnen, wie Sie einen Swarm-Cluster mit 1 Manager-Knoten und 2 Worker-Knoten einrichten. Sehen Sie sich die Voraussetzungen an, um loszulegen:
- Drei virtuelle Maschinen mit Ubuntu (oder einer anderen Linux-Distribution) oder
- Drei Amazon AWS ec2-Instanzen (ich werde ec2 verwenden).
Erfahren Sie, wie Sie ein kostenloses AWS-Konto erstellen . - Interesse, neue Sachen auszuprobieren 😇
Schritt 1: Docker installieren
Installieren Sie Docker auf allen drei Instanzen oder VMs mit dem folgenden Befehl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Mit dem folgenden Befehl können Sie überprüfen, ob es installiert ist:
Docker –Version
Schritt 2: Erstellen Sie einen Swarm Manager
Wir müssen einen Manager erstellen, der unsere Worker-Knoten verwaltet. Außerdem sollten Sie wissen, dass der Manager auch ein Worker-Knoten mit einigen Sonderberechtigungen ist.
docker swarm init –advertise-addr [private oder öffentliche IP-Adresse]
Verwenden Sie private IP-Adressen, wenn sich alle Instanzen/VMs im selben Netzwerk befinden. Andernfalls sollten Sie stattdessen die öffentliche IP verwenden.
Notiz:Stellen Sie sicher, dass Sie den oben ausgewählten Befehl kopieren, der im nächsten Schritt benötigt wird.
Schritt 3: Worker-Knoten hinzufügen
Der nächste Schritt besteht darin, unsere beiden Worker-Knoten mithilfe des zuvor generierten Tokens dem Swarm-Cluster hinzuzufügen.
docker swarm join –token <Token-ID> <IP:Port>
Arbeiter 1:
Schritt 5: Überprüfen Sie die Knoten
Lassen Sie uns nun den Status unseres Swarm-Clusters überprüfen. Führen Sie den folgenden Befehl aus.
Docker-Knoten ls
Hurra! Mission erfüllt. Wir haben erfolgreich einen Swarm-Cluster mit 1 Manager-Knoten und 2 Worker-Knoten erstellt. Warten Sie nicht länger und beginnen Sie mit der Bereitstellung Ihrer Anwendungen auf dem Swarm-Cluster aws certification.
Was ist der Unterschied zwischen Kubernetes und Docker Swarm?
Kubernetes und Docker Swarm sind die beiden am häufigsten verwendeten Open-Source-Plattformen mit ähnlichen Funktionen. Bei näherer Betrachtung sind jedoch verschiedene grundlegende Unterschiede zwischen der Funktionsweise dieser beiden Plattformen erkennbar. In der folgenden Tabelle finden Sie einen besseren Überblick.
Besonderheit | Kubernetes | Docker-Schwarm |
Anwendungsbereitstellung | Anwendungen können in K8s mithilfe unzähliger Mikroservices, Bereitstellungen und Pods bereitgestellt werden. | Anwendungen können ausschließlich als Microservices in einem Swarm-Cluster genutzt werden. |
Skalierbarkeit | Kubernetes fungiert bei der Arbeit mit verteilten Systemen eher als All-in-One-Framework. Es ist daher deutlich komplizierter, da es starke Garantien in Bezug auf den Clusterstatus und einen einheitlichen Satz von APIs bietet. Die Skalierung und Bereitstellung von Containern wird daher verlangsamt. | Docker Swarm kann Container viel schneller bereitstellen als Kubernetes, was schnellere Reaktionszeiten für die Skalierung nach Bedarf ermöglicht. |
Container-Einrichtung | Durch die Verwendung eigener YAML-, API- und Client-Definitionen unterscheidet sich Kubernetes von anderen Standard-Docker-Äquivalenten. Daher können Docker Compose oder Docker CLI nicht zum Definieren von Containern verwendet werden. Außerdem müssen YAML-Definitionen und -Befehle beim Plattformwechsel neu geschrieben werden. | Die Docker Swarm API bietet viele der bekannten Funktionen von Docker und unterstützt die meisten Tools, die mit Docker ausgeführt werden. Swarm kann jedoch nicht verwendet werden, wenn die Docker API bei einer bestimmten Operation fehlerhaft ist. |
Vernetzung | Kubernetes verfügt über ein flaches Netzwerkmodell, das es allen Pods ermöglicht, miteinander zu kommunizieren. Es gibt Netzwerkrichtlinien, die definieren, wie die Pods miteinander interagieren. Das Netzwerk wird normalerweise als Overlay implementiert und erfordert zwei CIDRS für die Dienste und die Pods. | Wenn ein Knoten einem Swarm-Cluster beitritt, erstellt er für jeden Host im Docker-Swarm ein Overlay-Netzwerk für Dienste. Außerdem wird ein Host-Only-Docker-Bridge-Netzwerk für Container erstellt. Dies gibt Benutzern die Wahl, während der Container-Datenverkehr verschlüsselt wird, um ein eigenes Overlay-Netzwerk zu erstellen. |
Verfügbarkeit | Kubernetes bietet eine besonders hohe Verfügbarkeit, da es alle Pods auf die Knoten verteilt. Dies wird erreicht, indem der Ausfall einer Anwendung absorbiert wird. Fehlerhafte Pods werden von Lastausgleichsdiensten erkannt, die sie anschließend deaktivieren. | Docker bietet außerdem eine Hochverfügbarkeitsarchitektur, da alle Dienste in Swarm-Knoten geklont werden können. Die Swarm-Manager-Knoten verwalten die Knotenressourcen des Workers und den gesamten Cluster. |
Lastverteilung | In Kubernetes werden Pods über Dienste bereitgestellt, sodass sie als Lastenausgleich in einem Cluster implementiert werden können. Für den Lastenausgleich wird im Allgemeinen ein Ingress verwendet. | Der Swarm-Modus verfügt über ein DNS-Element, mit dem eingehende Anfragen an einen Dienstnamen verteilt werden können. So können Dienste automatisch zugewiesen werden oder auf vom Benutzer vordefinierten Ports ausgeführt werden. |
Protokollierung und Überwachung | Es enthält integrierte Tools zur Verwaltung beider Prozesse. | Es sind keine Tools zur Protokollierung und Überwachung erforderlich. |
Benutzeroberfläche | Kubernetes verfügt über detaillierte Dashboards, die es auch technisch nicht versierten Benutzern ermöglichen, die Cluster effektiv zu steuern. | Alternativ erfordert ocker Swarm ein Drittanbietertool wie Portainer.io, um die Benutzeroberfläche bequem zu verwalten. |
Häufig gestellte Fragen
Antwort : Der Docker-Swarm-Modus ist noch aktiv und in Docker-CE enthalten. Es gibt jedoch keinen As-a-Service-Anbieter mehr für den Docker-Swarm-Modus.
Antwort : Wenn Sie bereits auf eine Microservice-Architektur umgestiegen sind oder dies planen, ist Kubernetes gut für Sie geeignet, da Sie wahrscheinlich bereits Software wie Docker verwenden, um Ihre Anwendung in Container zu packen. Wenn Sie aufgrund langsamer Entwicklungszeiten die Kundenanforderungen nicht erfüllen können, könnte Kubernetes hilfreich sein.
Antwort : Das Ausführen der Docker Engine im Swarm-Modus hat sich bei Produktionsarbeitslasten als erfolgreich erwiesen.
Antwort : Ich würde vorschlagen, dass Sie zuerst Docker lernen, anstatt gleich zu Kubernetes zu springen. Es gibt Verwirrung in Bezug auf Docker Swarm und seine Ähnlichkeiten mit Kubernetes. Kubernetes bietet ein Ökosystem zum Versenden von Docker-Containern.