Container sind Rudeltiere – sie treten meistens in größeren Mengen auf.

Docker

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