Um mit Rancher neue Stacks (=Applikationen bestehend aus mehreren Containern) zu starten, gibt es mehrere Möglichlichkeiten. Während es möglich ist, wie bei Docker die einzelnen Container über die Kommandozeile zu starten oder über docker-compose (siehe Teil 2), gibt es mit Rancher noch zusätzliche einfachere Möglichkeiten. In der Weboberfläche gibt es die Möglichkeit jeden Container einzeln zu erstellen – ähnlich wie ein interaktives zusammenstellen einer docker-compose-Datei. Die elegantere und einfachere Variante ist die Verwendung von rancher-compose.
Dabei wird eine docker-compose.yml verwendet und eine zusätzliche rancher-compose.yml angelegt. Die Erweiterung enthält die Skalierung, Konfiguration des Load-Balancers und der Health-Checks. Sofern die zusätzlichen Rancher-Tools nicht benötigt werden, kann die Erweiterung auch weggelassen werden. Dabei ist aber zu beachten, dass Rancher erst seit Version 1.2 (erschienen Dezember 2016) auf die gleiche Syntax-Version wie docker-compose (Version 2) umgestellt hat, weshalb vorher vom Aufbau der compose-dateien Unterschiede bestanden. Dadurch waren nicht alle docker-compose-Dateien automatisch mit Rancher kompatibel. Seit Rancher Version 1.2. ist dies aber nichtmehr der Fall und die entsprechenden docker-compose-Dateien können optional durch rancher-compose-Dateien ergänzt werden.
Die Erweiterung enthält die Skalierung, Konfiguration des Load-Balancers und der Health-Checks. Sofern die zusätzlichen Rancher-Tools nicht benötigt werden, kann die Erweiterung auch weggelassen werden. Dabei ist aber zu beachten, dass die Syntax von docker-compose inzwischen üblicherweise in Version 2 verwendet wird, während Rancher nur Version 1 versteht. Dadurch sind nicht alle docker-compose-Dateien automatisch mit Rancher kompatibel. Allerdings soll dies durch ein baldiges Update behoben werden.Um die rancher-compose zu verwenden, gibt es drei Möglichkeiten: die Ausführung über die Kommandozeile auf dem Rancher-Server in dem Verzeichnis in dem die beiden yml-Dateien liegen, hochladen der yml-Dateien in der Weboberfläche oder das kopieren bzw. schreiben der yml-Dateien direkt in der Weboberfläche. In der Weboberfläche ist es auch möglich von jedem laufenden Stack die aktuelle Konfiguration als docker-compose.yml und rancher-compose.yml zu exportieren.Um das Beispiel aus Teil 2 mit einem WordPress-Blog neu aufzugreifen, wird im folgenden das Beispiel in einer Rancher-Compose Version gezeigt. Dabei ist neben der Datenbank ein Loadbalancer hinzugefügt worden. Dieser ist bei einem einzelnen WordPress-Container eigentlich überflüssig, aber somit kann die Anzahl der WordPress-Container jederzeit hochskaliert werden und über den Load-Balancer wird die Last auf alle vorhandenen Container verteilt. Der WordPress-Blog selbst ist dann unter der Adresse des Servers mit dem Load-Balancer erreichbar, auch wenn der WordPress-Container selbst auf einem anderen Host läuft.docker-compose.yml:
Kostenloses E-Book
Infrastructure Automation mit Linux und Open Source Tools
Das kostenlose E-Book zeigt praxisnah, wie Sie mit Linux und Open-Source-Tools wiederkehrende Aufgaben vereinfachen, Fehler reduzieren und skalierbare IT-Prozesse aufbauen. Jetzt entdecken.
version: '2'
services:
WordPress:
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_PASSWORD: wordpress
links:
- database:database
Loadbalancer:
image: rancher/lb-service-haproxy:v0.4.6
ports:
- 80:80/tcp
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_USER: wordpress
MYSQL_DATABASE: wordpress
rancher-compose.yml:
version: '2'
services:
WordPress:
scale: 2
start_on_create: true
Loadbalancer:
scale: 1
start_on_create: true
lb_config:
certs: []
port_rules:
- hostname: ''
path: ''
priority: 1
protocol: http
service: WordPress
source_port: 80
target_port: 80
health_check:
response_timeout: 2000
healthy_threshold: 2
port: 42
unhealthy_threshold: 3
interval: 2000
database:
scale: 1
start_on_create: true
In diesem Beispiel existieren zwei WordPress-Container auf die der Loadbalancer die Anfragen verteilt.
Zusätzlich kann in der Rancher-Oberfläche ein Katalog mit vorkonfigurierten Stacks verwendet werden. Für diese Stacks kann festgelegt werden welche Parameter noch angegeben werden müssen und alles andere ist bereits vorkonfiguriert. Es besteht ein übersichtlicher Katalog der Rancher-Community für bestimmte Stacks, die häufig verwendet werden oder auch sehr gut zum Testen von Rancher verwendet werden können.
Neben dem Community-Katalog kann aber auch ein eigener Katalog über GitHub erstellt und eingebunden werden. Damit kann auch in einem internen Netz ein Katalog von vorkonfigurierten Stacks erstellt werden, die häufig verwendet werden bzw. bei denen der Großteil der Konfiguration nicht geändert wird. Damit lässt sich in den meisten Fällen ein ganzer Programm-Stack noch einfacher starten als über rancher-compose und benötigt auch nicht Vorkenntnisse welche Konfigurationsparameter für den Betrieb nötig sind.
Dies ist Teil 5 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)