Next Generation Container Networking CaaS mit Swarm, Consul, Consul-Template und Registrator Präsentation für den Linux Stammtisch am 07.06.2016 Ihr Captain auf der Brücke - Florian Maier, ATIX AG
3rd Party Networking • Aus der Not heraus wurden mehrere Lösungen von Drittanbietern veröffentlicht • Weaveworks – Weave • Google - Kubernetes • CoreOS - flannel • Nachteil: Externe Projekte die low-level mit Docker interagieren • Eine offizielle Schnittstelle musste her
• Open Source seit April 2015, 650 PRs, 600 ⭐ • Eines der wenigen Docker Projekte ohne Logo • Native Go Implementierung • Ziele sind besserer Netzwerk Support, Plug & Play Networking, Multi-Host Networking und Support für mehrere Betriebssysteme Next Generation - libnetwork
Docker clustern mit Swarm • Swarm ist eine Open Source Cluster Software für Docker • Mit Swarm sind alle Docker Hosts in einem Cluster über ein Gesamtsystem verwaltbar
Kommunikation im Cluster • Swarm benötigt ein Serviceverzeichnis um IP und Port der Docker Hosts abzulegen • Unterstützt werden verschiedene Key/Value Stores
Consul ist ein verteiltes, hochverfügbares System und stellt die folgenden Dienste zur Verfügung: • Serviceverzeichnis • Key/Value store • HTTP-API • DNS-Service • ACLs • uvm…. Features von Consul
$ docker run -d swarm:1.1.3 join –addr=10.1.1.231:2375 \ consul://10.1.8.32:8500/dc1 – swarm:1.1.3 (Docker Swarm Minion Container) – --addr=<Public IP Docker Host>:<Docker HTTP API PORT> – consul://<Public IP Consul Host>:<port>/<datacenter> Registrierung des Hosts bei Consul
Registrierung Docker daemon Consul Host Consul daemon Docker daemon Docker daemon Docker daemon Host / VM Host / VM Swarm Cluster Registrierung bei Consul
Liste der Nodes anfordern Docker daemon Consul Host Consul daemon Docker daemon Docker daemon Docker daemon Host / VM Host / VM Swarm Cluster Registrierung Swarm Manager Rolle Docker daemon manager Manager / Hop Docker daemon
• Zuerst müssen wir den gewünschten Service dokumentieren / registrieren • Dann können sich die einzelnen Services via Service Discovery finden Docker daemon Docker daemon Docker daemon Docker daemon Docker daemon Docker daemon Verteilte Anwendungen
Service Discovery Mechanismen sind eine Kernkomponente der meisten verteilten Systeme und Serviceorienterter Architekturen (SOA). Die Kernfrage ist dabei immer: Wie erhalten Clients die IP Adresse und den Port für einen Service der auf mehreren Hosts existiert. Service Discovery
• Registrator ist eine Open Source « Service Registry Bridge » für Docker • Services in Containern werden automatisch gemäß der konfigurierten Ports und Metadaten registriert oder entfernt • Registrator wird dabei auf allen Swarm Nodes ausgeführt Registrierung von Services mit Registrator
Lastverteilung und Eintrittspunkte Adressieren wir klassisch mit einem Loadbalancer, aber mit einer Konfiguration die aus dem Consul KV automatisch aktualisiert wird. Doc ker dae mo n Doc ker dae mo n Doc ker dae mo n
• Der Consul-Template Daemon fragt die Daten bei Consul ab und aktualisiert die angegebenen Templates im Dateisystem • Die Ausführung kann dabei überall erfolgen (Container, VM, etc.) • Nach der erfolgreichen Ausführung können beliebige Befehle getriggert werden Consul Template