Rancher: Neue Container für die (Server-)Farm – schnell und einfach

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:

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)

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.