Leichtgewichtige Architekturen mit Spring, JPA, Maven und Groovy
Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein...
Transcript of Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein...
![Page 1: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/1.jpg)
Leichtgewichtige Orchestrierung von Docker Containern Dr. Halil-Cem Gürsoy @hgutwit adesso AG - Dortmund
![Page 2: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/2.jpg)
Über mich
► Principal Architect @ adesso AG
► seit 15 Jahre Software-Entwicklung
> davor in wissenschaftlichem Umfeld
► Verteilte Enterprise-Systeme
► Persistenz / Build & Deployment
2
![Page 3: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/3.jpg)
![Page 4: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/4.jpg)
„Our highest priority is to satisfy
the customer through early and
continuous delivery of valuable software.“
Agile Manifesto Principles
![Page 5: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/5.jpg)
VM vs.Container
5
Quelle: http://docs.docker.com
![Page 6: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/6.jpg)
Application Images
6
www.flickr.com/photos/matijagrguric/4437187539/
Java Spring Boot
Dockerfile, Packer, Puppet, Chef …
![Page 7: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/7.jpg)
CD + Docker Workflow - supertrivial
7
Build Java
Project
mvn Repo
Server
DeployJava App v 1.0.0
Build Docker Image
Get Artifactv 1.0.0
Docker Registry
Push Image v 1.0.0
Create & Start Docker
Container
Docker Host
Stop / Kill Container
Pull Image v 1.0.0
![Page 8: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/8.jpg)
Build once - deploy many!
https://www.flickr.com/photos/jstar/2338025074
![Page 9: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/9.jpg)
www.flickr.com/photos/matijagrguric/4437187539/
DeployDev
Deploy Test
Deploy UAT
Deploy PP
Deploy Prod
Promote!
9
![Page 10: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/10.jpg)
![Page 11: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/11.jpg)
Application „Container“
11
https://www.flickr.com/photos/matijagrguric/4437187539
![Page 12: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/12.jpg)
Eine Anwendung = viele Container
► Eine Applikation besteht nicht nur aus einem Container
> ein Container isoliert nur einen Prozess
► Module / Services in eigenen Containern
> Stichwort Microservices
12
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
![Page 13: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/13.jpg)
Warum Orchestrierung?
► Container müssen miteinander kommunizieren
► Was, wenn Container auf verschiedene Server verteilt
werden?
13
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
![Page 14: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/14.jpg)
![Page 15: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/15.jpg)
https://www.flickr.com/photos/tomwahlin/with/3167491292/
![Page 16: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/16.jpg)
https://www.flickr.com/photos/ryandesiderio/1023387642
![Page 17: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/17.jpg)
Container Links
17
docker run –d –P --name db42 dbimage docker run –d –P --name app42 --link db42:db appimage --link [name]:[alias]
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
![Page 18: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/18.jpg)
Container Links
18
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
![Page 19: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/19.jpg)
https://www.flickr.com/photos/zunami/3780220955/
![Page 20: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/20.jpg)
► Ein eigenes Netzwerk für Docker aufziehen
► Tools gibt es … bestimmt ganz easy …
► Tunnel, Bridges, ….
► z.B. Handmade mit OpenVSwitch
> Auf jedem Docker Host wird Teil der IP-Range vergeben
► … oder mit Weave - powerstrip-weave
► … oder mit OpenContrail
Was können wir tun?
20
![Page 21: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/21.jpg)
OpenContrail
21
http://www.opencontrail.org/wp-content/uploads/2014/09/opencontrail-docker-figure-1.png
![Page 22: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/22.jpg)
https://www.flickr.com/photos/r_rose/102766969/
![Page 23: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/23.jpg)
Anforderung ist doch ganz simpel…
23
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
80
49367
Host A 10.20.30.40
Host B 10.20.30.41
![Page 24: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/24.jpg)
https://www.flickr.com/photos/timothymorgan/4420821913
![Page 25: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/25.jpg)
Anforderung ist doch ganz simpel…
25
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
80
49367
Host A 10.20.30.40
Host B 10.20.30.41
![Page 26: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/26.jpg)
Pure Docker nutzen
► docker run --add-host webserver:10.20.30.40
> fügt einen Eintrag in /etc/hosts hinzu
> z.B. einen weiteren Docker Host
► Port über Umgebungsvariablen
> docker run -e webserver_port:49367
► Nachteil
> Unflexibel
> größere Umgebungen sind nicht wartbar26
![Page 27: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/27.jpg)
https://www.flickr.com/photos/neilspicys/2348969927
![Page 28: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/28.jpg)
Docker Machine
► Gut um (mehrere) Docker Hosts anzulegen und zu starten
docker-machine create \ --driver digitalocean \ --digitalocean-access-token=$DIGITAL_OCEAN_TOKEN \ test-machine
► Kommunikation zw. Containern auf verschiedenen Hosts
damit noch nicht gelöst
► Also brauchen wir mehr…
28
![Page 29: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/29.jpg)
![Page 30: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/30.jpg)
Docker Swarm
► Docker Swarm ist ‚die‘ Cluster-Lösung von Docker
► Unterstützt das neue Overlay-Network
► Mit Docker Machine einfach anzulegen docker-machine create \ --swarm \ --swarm-master \ --swarm-discovery token://$SWARM_ID \ swarm-master
docker-machine create \ --swarm \ --swarm-discovery token://$SWARM_ID \ swarm-node-01
30
![Page 31: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/31.jpg)
Docker Swarm - Manager
► Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten
> Consul, etcd, Zookeeper, Datei, IP ranges etc.
► fungiert wie ein proxy, implementiert Docker Remote API
► Verwaltet das Starten der Container auf den Knoten
> abhängig von CPU und / oder Speicher Auslastung
> … oder Labels auf den Docker hosts
> … oder Affinität zu Ressourcen / andere Container
31
![Page 32: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/32.jpg)
Swarm Manager - Scheduler Strategies
► Scheduler arbeitet auf Basis von Strategies und Filter
► Aktuell drei Strategies zum Bewerten von Knoten:
> spread
– default, lastet gleichmäßig aus
> binpack - macht einen Knoten nach dem anderen voll
> random
► ‚naives’ Überprovisionieren möglich
32
![Page 33: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/33.jpg)
Swarm Manager - Scheduler Filter
► Der Scheduler bietet diverse Filter zur Knoten-Auswahl
> Constraint - Label auf einer Docker Engine
> Affinity - Zusammen mit einer definierten Ressource
> Port - Auf welchem Node ist Port xy noch frei?
> Dependency - bitte mit Container XY zusammen
> Health - nur auf gesunden Nodes
$ docker daemon --label storage=ssd $ docker run -d -P -e constraint:storage==ssd --name db mysql
33
![Page 34: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/34.jpg)
Ausflug - Swarm mit Overlay-Netzwerk
► Ab Docker 1.9 unterstützt libnetwork ein Overlay-Netwerk
> Netzwerk Node-überspannend möglich
► Virtuelles Netzwerk basierend auf vxlan
► Minimum Kernel 3.16
> Kernel-Upgrade bei Ubuntu 14.04 nötig (oder Debian 8)
► Consul oder Etcd oder ZooKeeper als K/V-Store
► ab Docker 1.10.0 über ‚embedded DNS‘
> in 1.9.x Einträge in /etc/hosts aller Container
34
![Page 35: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/35.jpg)
Ausflug - Swarm mit Overlay-Netzwerk
$ docker network create -d overlay multihost$ docker network ls NETWORK ID NAME DRIVER 36935a0674d4 multihost overlay
► Beim Start des Containers Netzwerk mitteilen:
$DOCKER run -d -P --net="multihost" elasticsearch
► libnetwork ist Plugin-basiert
> overlay, weave
► Swarm 1.0.x wird mit unterstützt
35
![Page 36: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/36.jpg)
http://github.com/hcguersoy/swarm-elastic-demo
https://www.flickr.com/photos/schwaber/3238977103
![Page 37: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/37.jpg)
Netzwerk ist nicht alles
► Flexibilität?
► Unabhängig von Docker usw. Einsatz von Service Discovery
in einer Microservice-Architektur überdenken
► ‚Brauche ich wirklich Service Discovery auch wenn ich ein
Overlay Netzwerk habe?‘
> Ja! Ja! Ja!
> In einem verteilten System bleiben die
Herausforderungen gleich, unabhängig von Docker usw.
37
![Page 38: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/38.jpg)
Netzwerk ist nicht alles
► Service Discovery einsetzen!
> Consul, etcd, SkyDNS 2, …
► Container werden im Service Discovery-System registriert
> z.B. automatisch mit Registrator (*)
> … oder „manuell“ z.B. per REST-Call
38
![Page 39: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/39.jpg)
Service Discovery einsetzen
► Zu Startzeit Konfigurationsdatei-Templates ‚befüllen‘
> z.B. mit confd oder consul-template
► … oder Umgebungsvariablen setzen
> u.a. consul-env
► Nachteil wenn Konfigurationen sich ändern
► DNS SRV Request
> Sowohl IP als auch Port, Auswahl aus mehreren
> Muss meist in Applikation behandelt werden
39
![Page 40: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/40.jpg)
Docker Compose
► Ehemals ‚Fig‘
► Python
► „Compose is a tool for defining and running multi-container
applications with Docker.“
► Gut geeignet um komplexe Infrastruktur für Entwickler
aufzubauen
40
![Page 41: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/41.jpg)
Docker Compose - Konfiguration
► Konfiguration über YAML-Dateien: myapp: build: . ports: - "8080:8080" volumes: - ./conf:/etc/myapp/conf links: - mysql mysql: image: mysql
►docker-compose up
41
![Page 42: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/42.jpg)
Docker Compose
► Es geht komplexer: Kubernetes auf Swarm etcd: image: gcr.io/google_containers/etcd:2.0.13 container_name: etcd command: ['/usr/local/bin/etcd', '--bind-addr=0.0.0.0:4001', '--data-dir=/var/etcd/data']
apiserver: image: gcr.io/google_containers/hyperkube:v1.0.7 container_name: apiserver ports: - "8080" command: ["/hyperkube", "apiserver", "--service-cluster-ip-range=172.17.17.1/24", "--address=0.0.0.0", "--etcd_servers=http://etcd:4001", "--cluster_name=kubernetes", "--v=2"]
controller: image: gcr.io/google_containers/hyperkube:v1.0.7 command: ["/hyperkube", "controller-manager", "--address=0.0.0.0", "--master=http://apiserver:8080", "--v=2"] environment: - "affinity:container==*apiserver*" ...
Quelle 'Swarm Frontend’ (https://github.com/docker/swarm-frontends)
42
![Page 43: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/43.jpg)
Docker Compose mit Swarm ?
► ‚Swarm is supported‘
► … mit Hilfe von Container-Affinity
► Eventually, Compose and Swarm aim to have full integration
… integration is currently incomplete(https://github.com/docker/compose/blob/master/SWARM.md)
► Multi-Host Netzwerk wird in 1.5.0 experimentell unterstützt
43
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/ www.flickr.com/photos/matijagrguric/4437187539/
www.flickr.com/photos/matijagrguric/4437187539/
![Page 44: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/44.jpg)
Alle Puzzleteile zusammen getragen….
► Docker Swarm als Scheduler
> mit Consul als K/V-Store für den Cluster
> …und zur Service Discovery
► Overlay-Netzwerk für Kommunikation zw. Containern
► Lose Kopplung!
44
![Page 45: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/45.jpg)
Was aber noch fehlt…
► Self Healing / Resilience
> in 1.10.x experimentell
► ‚Move‘ von laufenden Containern ohne Tools nicht möglich
► Auto Scaling
> was passiert wenn System unter Last steht?
► Übergreifendes Monitoring
45
![Page 46: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/46.jpg)
Alternativen?
► Es gibt viele weitere Orchestrierung-Lösungen
> maestro-ng
> Apache Mesos & Marathon
> Crane
> Rancher.io
> Spotify Helios
> ….
46
![Page 47: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/47.jpg)
http://www.flickr.com/photos/an_untrained_eye/6630719431
![Page 48: Leichtgewichtige Orchestrierung von Docker Containern€¦ · Docker Swarm - Manager Benötigt ein ‚Discovery Service‘ um die Knoten zu verwalten > Consul, etcd, Zookeeper, Datei,](https://reader036.fdocuments.net/reader036/viewer/2022070711/5ec80aca5713af0b0a7594d6/html5/thumbnails/48.jpg)
http://www.flickr.com/photos/tcmorgan/7372944070
[email protected] https://twitter.com/hgutwit
https://github.com/hcguersoy/swarm-elastic-demo