Rancher: Dirigieren eines Container-Rudels

Um Container insbesondere auf Clustern übersichtlich und einfach zu verwalten wurde Rancher entwickelt. Rancher wurde primär für Docker entwickelt und bildet über Cattle einen Cluster aus mehreren Servern (=Hosts) auf denen Docker läuft, aber auch Docker Swarm, Kubernetes und Mesos werden unterstützt. 

In diesem Artikel wird auf diese Container-Umgebungen aber nicht weiter eingegangen, sondern der Fokus auf die Orchestrierung von Docker mit Rancher gelegt.

Der Rancher-Server zur Verwaltung läuft selbst in einem Docker-Container und wird wie ein normaler Docker-Container gestartet. Anschließend können die Server (=Hosts) über den Rancher-Agent mit dem Server verbunden werden, wobei auch die Rancher-Agents aus einem Docker-Container bestehen. Der Rancher-Server lässt sich mit folgendem Befehl leicht starten und ist anschließend unter der entsprechenden Server-IP und in diesem Fall Port 80 erreichbar:

sudo docker run -d --restart=unless-stopped -p 80:8080 rancher/server

Sobald der Rancher-Server sein Container-Image heruntergeladen und gestartet hat, dauert es normalerweise weniger als eine Minute bis die Weboberfläche unter der IP des Servers erreichbar ist. Anschließend können die Hosts hinzugefügt werden. Dazu kann man sich den entsprechenden Befehl aus der grafischen Oberfläche kopieren, da neben der Server-IP auch ein Server-Token benötigt wird um den Host anschließend der richtigen Umgebung in Rancher zuzuordnen und Zugang zu bekommen. Der Befehl dafür hat dann folgende Struktur:

 

sudo docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.1.3 /v1/scripts/

Sobald der entsprechende Rancher-Agent-Container heruntergeladen und gestartet worden ist, taucht der neue Host in der Rancher-Oberfläche nach wenigen Sekunden auf und erkennt auch alle bereits laufenden Docker-Container auf diesem. Dabei lassen sich auch Docker-Hosts mit unterschiedlichen Betriebssystemen zusammenschließen – die einzige Anforderung besteht darin, dass die Hosts mindestens 1 GB RAM zur Verfügung haben sollten und Docker mindestens in der Version 1.10.3 vorliegt.

Skalierung von Containern

Ähnlich zu Docker Swarm bietet Rancher die Möglichkeit Container mehrfach zu starten und diese über einen Loadbalancer (über HAProxy) gleichmäßig auszulasten. Somit lässt sich auch die Anzahl der Container mit weniger Klicks anpassen um auf temporär veränderte Anforderungen zu reagieren.

Außerdem bringt Rancher zwei Formen von Health-Checks mit. Diese Health-Checks überprüfen in regelmäßigen Abständen ob der Container noch antwortet und je nach Konfiguration, wird bei Ausfall eines Containers ein neuer Container im Cluster gestartet um den ausgefallenen zu ersetzen. In Kombination mit vielen Hosts lässt sich somit ein High-Availability-System konfigurieren in dem vereinzelte Serverausfälle abgefangen werden können und die Dienste der Container aufrecht erhalten.

Rolling Upgrades der Container

Da Container in der Regel auch durch Updates angepasst werden müssen, gibt es in Rancher die Möglichkeit die Container in definierten Schritten upzugraden. Dabei ist bei einigen auch möglich die neue Version zu starten während die alte Version noch läuft. Sobald die neue Version eines Containers erfolgreich gestartet wurde, kann das Upgrade bestätigt werden und der Container mit der alten Version wird gestoppt und gelöscht. Sollte die neue Version nicht starten oder das Upgrade abgebrochen werden, wird automatisch die alte Version wieder gestartet, wenn diese bis zu dem Zeitpunkt beendet wurde. Dadurch können Downtimes bei Upgrades stark reduziert oder sogar vermieden werden.

Benutzerfreundliche Web-GUI

Der große Vorteil gegenüber Docker Swarm ist die grafische Weboberfläche von Rancher über die der ganze Cluster verwaltet werden kann. Trotz der Weboberfläche bleibt die Möglichkeit der Verwaltung über die Kommandozeile bestehen, allerdings können fast alle Aufgaben über die GUI schneller und einfacher gelöst werden und es besteht eine deutliche höhere Übersichtlichkeit der laufenden Prozesse, deren Status und die Auslastung der Container und Server.

Für den Zugriff auf die Rancher-Oberfläche können verschiedene Nutzerverwaltungen eingerichtet werden. Rancher unterstützt zum Beispiel OpenLDAP, GitHub aber auch lokal erstellte Benutzerkonten und -gruppen sind möglich. Dabei können auch unterschiedliche Clusterumgebungen eingerichtet und den entsprechenden Nutzern nur eingeschränkte bis zu read-only-Berechtigungen eingeräumt werden. Somit kann Rancher von mehreren Benutzergruppen gleichzeitig genutzt aber nicht jeder Nutzer kann auch beliebig Container starten oder stoppen.

Mit Rancher kann also ein großer Cluster mit sehr vielen Containern verwaltet und bleibt dabei übersichtlich und die Kompetenzen können auf unterschiedliche Benutzer verteilt werden, was bei Docker Swarm nicht so einfach möglich ist.

Dies ist Teil 4 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

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.