Wenn Sie Ihren Entwicklungsworkflow containerisiert haben, werden Sie zustimmen, dass Docker eine der besten Optionen für die Versionskontrolle ist. Docker Swarm ist jedoch eine der Funktionen von Docker, die zum Orchestrieren komplexer Apps verwendet werden.

Der Arbeitsmechanismus von Docker Swarm kann zunächst schwer zu knacken sein. Aber keine Sorge, wir werden es in diesem Artikel aufschlüsseln. Was ist also Docker Swarm? Warum verwenden? Und wie funktioniert es?

Was ist Docker Swarm und wie funktioniert es?

Docker Swarm bezieht sich auf eine Gruppe von Docker-Hosts (Computern), die als Cluster vernetzt sind, um bestimmte Aufgaben zu erfüllen. Jeder Docker-Host in diesem Cluster ist ein Knoten, auch Worker-Knoten genannt.

Um eine effiziente Aufgabenverteilung zu gewährleisten, benötigen Sie einen Manager-Knoten. Idealerweise beginnt eine Initialisierung im Docker Swarm-Modus mit dem Manager-Knoten, und nachfolgende Knoten werden zu Arbeitern.

Als Bediener müssen Sie nur mit dem Manager-Knoten interagieren, der Anweisungen an die Arbeiter weiterleitet. Die Worker-Knoten erhalten ausnahmslos eine Aufgabenzuweisung vom Manager-Knoten und führen sie entsprechend aus.

instagram viewer

Der Manager-Knoten kann jedoch auch an der Aufgabenausführung (als Arbeiter) teilnehmen oder sich direkt der Verwaltung stellen. Sie können die Aufgabenplanung auf dem Manager verhindern, indem Sie seinen Status von ändern aktiv zu Abfluss. Ihre Entscheidung, diese Doppelfunktion zuzuweisen, kann jedoch von mehreren Faktoren abhängen. Im Wesentlichen möchten Sie sicherstellen, dass es über genügend Ressourcen verfügt, um mehrere Rollen zu übernehmen, bevor Sie dies tun.

Knoten fallen aus. Der Manager-Knoten überwacht also aktiv den Zustand jedes Worker-Knotens und aktiviert einen ausfalltoleranten Mechanismus, um die Aufgabe von einem ausgefallenen Knoten auf einen anderen umzuplanen.

Was aber, wenn auch der Manager-Knoten abstürzt? Interessanterweise läuft der Schwarm weiter. Der einzige Fallstrick ist, dass Sie nicht mehr mit dem Manager-Knoten kommunizieren können, um den Cluster zu steuern.

Der übliche ausfallsichere Ansatz, um dies zu verhindern, besteht darin, die Manager-Rolle vielen Knoten zuzuweisen (Docker empfiehlt maximal sieben pro Cluster). Sie können dann den primären Manager-Knoten daraus auswählen. Wenn der primäre Manager abstürzt, übernimmt einer der Standby-Manager die Rolle.

Sie müssen sich jedoch keine Gedanken über den Rollenwechsel zwischen Knoten oder die Statusverwaltung in einem Cluster machen. Dafür sorgt der im Docker SwarmKit eingebaute Raft Consensus Algorithmus (eine fehlertolerante Methode).

Warum Docker Swarm verwenden?

Docker Swarm ist praktisch für die Bereitstellung komplexer Anwendungen mit Aussichten auf hohe Skalierbarkeit. Einer der wichtigsten Anwendungsfälle ist die Dezentralisierung von Microservices. Jeder Microservice teilt dann einen ähnlichen Container mit denen auf anderen Worker-Knoten.

Ein weiterer Grund für die Verwendung von Docker Swarm ist, dass mehrere Hosts Aufgaben gleichzeitig in einem Cluster ausführen. Dies steht im Gegensatz zu Docker Compose, mit dem Sie nur mehrere Container auf einer Docker-Engine ausführen können.

Dieses skalierbare Attribut von Docker Swarm ermöglicht eine konsistente Verfügbarkeit von Apps ohne Latenz. Es ist sogar einer der Gründe, warum Sie es wollen Wählen Sie Docker gegenüber anderen Virtualisierungstools.

Und dazu kommt noch? Im Gegensatz zu einzelnen Docker-Containern, bei denen ein Container stoppt, wenn er ausfällt, verteilt Docker Swarm Aufgaben automatisch neu auf die verfügbaren Worker-Knoten, wenn einer ausfällt.

Docker Swarm speichert auch ein Backup jedes Zustands. So können Sie neue Schwarmkonfigurationen immer wieder in den Zustand einer früheren zurückversetzen. Angenommen, der Manager-Knoten eines vorherigen Schwarms schlägt fehl; Sie können einen neuen Cluster mit mehr Manager-Knoten starten und ihn zurücksetzen, um die Konfiguration des vorherigen anzupassen.

Es ist auch wichtig zu erwähnen, dass die Interaktion zwischen dem Manager-Knoten und den Worker-Knoten sicher ist.

Docker hat viele Alternativen, und einer der nächsten ist Kubernetes. Docker Swarm ist jedoch einfach zu bedienen und stärker automatisiert. Während Sie beispielsweise die Last in einigen anderen Orchestrierungstools wie Kubernetes möglicherweise manuell ausgleichen müssen, bietet Docker Swarm einen automatischen Lastausgleich, der DevOps das Leben erleichtert.

Die Docker Swarm-Architektur

Die Docker Swarm-Architektur dreht sich um Dienste, Knoten und Aufgaben. Jeder hat jedoch eine Rolle bei der erfolgreichen Ausführung des Stacks zu spielen.

Dienstleistungen

Der Docker Swarm-Dienst beschreibt die Konfiguration des Docker-Images, das alle Container in einem Schwarm ausführt. Es enthält Informationen zu den Aufgaben in einem Cluster. Beispielsweise könnte ein Dienst eine beschreiben Dockerisiertes SQL-Server-Setup.

Wenn Sie einen Dienst ausführen, zwingt er den Manager-Knoten, mit seinen Konfigurationen zu synchronisieren. Der Manager-Knoten führt dann die restlichen Worker-Knoten basierend auf den angegebenen Einstellungen im Dienst aus.

Dienste in Docker Swarm können global oder repliziert sein.

Der Unterschied zwischen ihnen besteht darin, dass globale Dienste nur eine Aufgabe für alle Knoten in einem Cluster definieren, replizierte Dienste die Anzahl der Aufgaben pro Knoten angeben.

Knoten

Ein Knoten in Docker Swarm ist eine Instanz der gesamten Docker-Laufzeit, auch bekannt als Docker-Engine. Schwarmknoten können physische oder virtuelle Maschinen sein. Stellen Sie sich dies als ein Netzwerk von Computern vor, auf denen ähnliche Prozesse (Container) ausgeführt werden.

Typischerweise erstrecken sich Knoten jedoch über mehrere Computer und Server, auf denen die Docker-Engine in realen Anwendungen ausgeführt wird. Und wie bereits erwähnt, kann ein Knoten je nach Rolle entweder ein Manager- oder ein Worker-Knoten sein.

Der Manager-Knoten hört auf den Herzschlag des Schwarms und steuert die Worker-Knoten, die Aufgaben ausführen, die ihnen vom Manager-Knoten zugewiesen wurden. Wie bereits erwähnt, können Sie mehr als einen Manager-Knoten in einem Schwarm haben. Versuchen Sie jedoch idealerweise, die Anzahl auf weniger als sieben zu begrenzen, da das Hinzufügen zu vieler Manager-Knoten die Schwarmleistung verringern könnte.

Aufgaben

Eine Aufgabe definiert die jedem Knoten in einem Docker Swarm zugewiesene Arbeit. Im Hintergrund beginnt die Aufgabenplanung in Docker Swarm, wenn ein Orchestrator Aufgaben erstellt und sie an einen Planer übergibt, der einen Container für jede Aufgabe instanziiert.

Der Manager-Knoten verwendet dann den Planer zum Zuweisen und erneuten Zuweisen von Aufgaben zu Knoten, wie erforderlich und im Docker-Dienst angegeben.

Docker-Schwarm vs. Docker Compose: Was sind die Unterschiede?

Docker Compose und Docker Swarm werden häufig synonym verwendet. Obwohl beide das Ausführen mehrerer Container beinhalten, sind sie unterschiedlich.

Während Sie mit Docker Compose mehrere Container auf einem einzigen Host ausführen können, verteilt Docker Swarm diese auf mehrere Docker-Engines in einem Cluster.

Sie verwenden Docker Compose, wenn Sie separate Container für jeden Dienst in Ihrer App erstellen müssen. Wenn also eine Komponente abstürzt, stört sie die anderen nicht. Wenn jedoch der Hostcomputer ausfällt, stürzt auch die gesamte App ab.

Docker Swarm hilft Ihnen jedoch dabei, viele Container auf geclusterten Knoten auszuführen. Jede Komponente Ihrer App befindet sich also auf mehreren Knoten. Und wenn ein Knoten, der eine App-Komponente verarbeitet, abstürzt, weist der Schwarm seine Aufgabe einem anderen Knoten innerhalb des Clusters zu und plant die laufenden Aufgaben neu, um Ausfallzeiten zu vermeiden.

Während Docker Compose möglicherweise Ausfallzeiten hat, stellt Docker Swarm mithilfe von Backup-Servern (Worker-Knoten) sicher, dass Ihre App weiterläuft. Docker 1.13 unterstützt jedoch die Docker Compose-Bereitstellung im Swarm-Modus mit der Docker-Stack bereitstellen Befehl.

Docker Swarm hilft Ihnen bei der Bereitstellung komplexer Apps

Die Containerisierung hat virtuelle Maschinen im Softwaredesign für Continuous Integration und Continuous Delivery (CI/CD) übertrumpft. Daher ist es von Vorteil, wenn Sie das Wesentliche des Docker Swarm-Mechanismus verstehen, wenn Sie ein unschätzbarer DevOps-Experte werden möchten.

Sie wissen wahrscheinlich, wie man einen Docker-Container hochfährt oder sogar ein Docker Compose für mehrere Container auf einem Host ausführt. Aber Docker Swarm ist praktischer für die Bereitstellung von Apps mit komplexer Architektur. Es unterteilt Prozesse in Einheiten, verbessert den Laufzeitzugriff und reduziert oder eliminiert sogar die Wahrscheinlichkeit von Ausfallzeiten.