Docker Swarm ATIX AG

Docker Swarm: Container im Rudel

Willkommen bei Docker Swarm! Container gedeihen wie Rudeltiere in großer Zahl, aber ihre Verteilung auf die Server ist entscheidend. Docker Swarm, das seit Version 1.12 in die Docker Engine integriert ist, eignet sich hierfür hervorragend. Erfahren Sie mehr über Manager- und Worker-Knoten, Dienstvarianten, Lastausgleich und Skalierbarkeit. Dies ist Teil 3 unserer Docker/Rancher-Reihe, in der wir uns mit der verteilten Umgebung von Docker Swarm beschäftigen.

Container sind Rudeltiere – sie treten meistens in größeren Mengen auf. Container sind Rudeltiere – sie treten meistens in größeren Mengen auf. Nachdem aber jede Maschine ab einer gewissen Menge an seine Grenzen stößt, möchte man die Container auf mehreren Servern verteilen. Um die Container auf einem Cluster zu verteilen, gibt es mehrere Möglichkeiten. Eine davon stellt Docker Swarm dar.

Ursprünglich wurde Docker Swarm als Erweiterung zur Verfügung gestellt, aber seit Version 1.12 ist es direkt in der Docker Engine enthalten. Damit lassen sich die Container nicht nur auf mehrere Server verteilen, sondern es bringt auch noch einige Features mit.

Bei Docker Swarm wird zwischen zwei Servertypen (=nodes) unterschieden: manager-nodes und worker-nodes. Während die worker-nodes, wie der Name schon vermuten lässt, die Arbeit verrichten, werden manager-nodes benutzt um neue Container zu starten. Die manager-nodes verteilen dann die neu zu startenden Container auf der worker-nodes, sodass alle Server möglichst gleichmäßig ausgelastet sind. Somit entsteht eine große Docker-Umgebung auf mehrere Server verteilt, die leicht erweitert werden können.Zudem werden auch bei den Diensten verschiedene Varianten dem Namen nach eingeführt: tasks, welche die Aufgabe an die manager-nodes darstellen neue Container zu starten; services, die aus einem Container bestehen, der auf einem der Server läuft; replica services – erst mal wie ein normaler Container, aber in mehrfacher Ausführung des gleichen Servers, die über den Cluster verteilt werden; und zu guter Letzt global services, die aus einem Container bestehen, der auf jedem node im Netzwerk einmal laufen soll. Für die replica servers wird üblicherweise ein Loadbalancer eingeführt, der die Aufgaben gleichmäßig auf die Container verteilt um somit die Last möglichst weitflächig im Netzwerk zu verteilen. Die Skalierung, also die Anzahl wie oft ein bestimmter Container bestehen soll, lässt sich auch nach dem Start des Containers noch anpassen.
Mit einer großen erweiterbaren Docker-Umgebung lassen sich sehr viele Container starten und somit viele Applikationen in Containern betreiben. Zusätzlich besteht durch die Skalierung und das Loadbalancing die Möglichkeit Lasten und Traffic auf mehrere Server zu verteilen. Da die Docker Swarm Verwaltung wie auch Docker über die Kommandozeile funktioniert, ist es schwer bei einem großen Cluster mit vielen Containern den Überblick zu bewahren.

Dies ist Teil 3 aus einer Reihe von Blogbeiträgen zum Thema Docker/Rancher.

Teil 1 bietet einen Überblick zu Docker und Container-Umgebungen

Teil 2 erklärt die Funktionen einer Docker Registry und docker-compose

Teil 3 stellt Docker Swarm mit einer Docker Umgebung verteilt über mehrere Hosts vorhanden

Teil 4 zeigt Rancher als Orchestrierungstool für Docker (und andere Containerumgebungen)

Teil 5 enthält kurze Informationen zu den Rancher-Funktionen eines Katalogs und rancher-compose

Docker-Schulung

Dieser Kurs ist für Teilnehmer:innen gedacht, die keine oder wenig Erfahrung mit Docker besitzen. Begonnen wird mit einer Einführung in Container, um einen gemeinsamen Wissensstand sicherzustellen. Danach erstellen die Teilnehmer:innen mittels GitLab eine containerisierte Anwendung. Mit dieser Infrastruktur lernen sie, Images zu bauen: zuerst ganz von Hand, schließlich vollautomatisch. Zuletzt lernen die Teilnehmer:innen Docker-Alternativen kennen und erstellen ihre Images beispielsweise mit Buildah oder kaniko.

The following two tabs change content below.

ATIX-Crew

Der ATIX-Crew besteht aus Leuten, die in unterschiedlichen Bereichen tätig sind: Consulting, Development/Engineering, Support, Vertrieb und Marketing.