Ausrollen von Multi-Tier-Applikationen mit Docker

25
Ausrollen von Multi-Tier-Applikationen mit Docker DB Open Source Workshop, Frankfurt 26. November 2015 Mattias Giese System Management & Monitoring Architect B1 Systems GmbH [email protected] B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Transcript of Ausrollen von Multi-Tier-Applikationen mit Docker

Page 1: Ausrollen von Multi-Tier-Applikationen mit Docker

Ausrollen von Multi-Tier-Applikationenmit DockerDB Open Source Workshop, Frankfurt 26. November 2015

Mattias GieseSystem Management & Monitoring Architect

B1 Systems [email protected]

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Page 2: Ausrollen von Multi-Tier-Applikationen mit Docker

Vorstellung B1 Systems

gegründet 2004primär Linux/Open Source-Themennational & international tätigüber 70 Mitarbeiterunabhängig von Soft- und Hardware-HerstellernLeistungsangebot:

Beratung & ConsultingSupportEntwicklungTrainingBetriebLösungen

dezentrale Strukturen

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 2 / 25

Page 3: Ausrollen von Multi-Tier-Applikationen mit Docker

SchwerpunkteVirtualisierung (XEN, KVM & RHEV)Systemmanagement (Spacewalk, Red Hat Satellite, SUSEManager)Konfigurationsmanagement (Puppet & Chef)Monitoring (Nagios & Icinga)IaaS Cloud (OpenStack & SUSE Cloud & RDO)Hochverfügbarkeit (Pacemaker)Shared Storage (GPFS, OCFS2, DRBD & CEPH)Dateiaustausch (ownCloud)Paketierung (Open Build Service)Administratoren oder Entwickler zur Unterstützung des Teamsvor Ort

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 3 / 25

Page 4: Ausrollen von Multi-Tier-Applikationen mit Docker

Agenda

Docker – Kurzer ÜberblickMaschinen erstellen mit docker-machinemehrere Maschinen ansprechen mit docker-swarmApplikationsszenarien abbilden und implementieren mitdocker-compose

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 4 / 25

Page 5: Ausrollen von Multi-Tier-Applikationen mit Docker

Docker – Kurzer Überblick

„Old“ technology wrapped in some Hipster . . .

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 5 / 25

Page 6: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-machine

baut Maschinen für den Einsatz mit Dockerviele Treiber:

VirtualBoxVMwareDigitalOceanAzureAWS...

kann auch bestehende Maschine konfigurieren (generic)automatische „Absicherung“ der Hosts(Authentifizierung/Autorisierung via TLS Zertifikate)

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 6 / 25

Page 7: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-machine

Maschine auf VirtualBox mit dem Namen „foobar“ erzeugen$ docker-machine create -d virtualbox foobar1

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 7 / 25

Page 8: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-machine

Verbindung zur Maschine# docker-machine env foobar1export DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/home/mattias/.docker/

machine/machines/foobar1"export DOCKER_MACHINE_NAME="foobar1"

# Run this command to configure your shell:# eval "$(docker-machine env foobar1)"

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 8 / 25

Page 9: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm

„Wrapper“-API für DockerDiscovery via Docker Hub integrierteigene Discovery möglich:

statische Datei mit Host:Port ZeilenAngabe auf Kommandozeileetcd, Consul, ZooKeeper, . . .

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 9 / 25

Page 10: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm Docker Hub

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 10 / 25

Page 11: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm etcd

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 11 / 25

Page 12: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Discovery via Docker Hub

Discovery Token erstellen:$ docker run swarm create4754c10117f48dc759ec2f0989d1bdad

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 12 / 25

Page 13: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Swarm Node

Swarm Node$ docker run -d swarm join --addr=docker_ip:2375 \

token://4754c10117f48dc759ec2f0989d1bdad

Docker muss via TCP lauschen!

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 13 / 25

Page 14: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Swarm Manager

Swarm Manager$ docker run -d swarm manager \

token://4754c10117f48dc759ec2f0989d1bdad

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 14 / 25

Page 15: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm via docker-machine

Master/Node$ docker-machine create -d virtualbox \

--swarm --swarm-master \--swarm-discovery \token://4754c10117f48dc759ec2f0989d1bdad \swarm-master

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 15 / 25

Page 16: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm via docker-machine

Weiterer Node$ docker-machine create -d virtualbox \

--swarm --swarm-master \--swarm-discovery \token://4754c10117f48dc759ec2f0989d1bdad \swarm-node1

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 16 / 25

Page 17: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Scheduler Strategies

Strategies:spread (Default)binpackrandom

In Abhängigkeit von RAM, CPU und laufenden Containern

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 17 / 25

Page 18: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Constraints/Affinity Filter

Labels: Beispiele: ssd, rz15, production(docker -d --label foo=bar)

Host Facts: operatingsystem, provider, storagedriver, . . .weitere Filter: image, container, node

implizit: net namespace, volumes, ports

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 18 / 25

Page 19: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – Beispiele

Beispiele:$ docker run -d -p 80:80 -e affinity:image==~nginx \

nginx www1

$ docker run -d -e constraint:stage!=production ...

$ docker run -d -e affinity:container==drunk_edison ...

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 19 / 25

Page 20: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – HA

mehrere docker-swarm Master möglichMaster wird dynamisch gewählt (Raft)Kommandos werden automatisch repliziert

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 20 / 25

Page 21: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-swarm – HA

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 21 / 25

Page 22: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-compose

„The artist formerly known as fig“Simple YAML „Sprache“ zur Beschreibung des Anwendungsfallsbaut Images, startet Container nach Beschreibung

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 22 / 25

Page 23: Ausrollen von Multi-Tier-Applikationen mit Docker

Beispiel: docker-compose – YAMLdatabase:

build: mysql/volumes:

- /var/lib/mysqlexpose:

- "3306"environment:

- DB_ADMIN_USER=admin- DB_ADMIN_PASS=admin

owncloud:build: httpd/links:

- database:dbvolumes:

- /srv/www/htdocs/owncloud/data- /srv/www/htdocs/owncloud/config

ports:- "80:80"

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 23 / 25

Page 24: Ausrollen von Multi-Tier-Applikationen mit Docker

docker-compose – Demonstration

https://github.com/mattiasgiese/committerconf2015-docker

B1 Systems GmbH Multi-Tier-Applikationen mit Docker 24 / 25

Page 25: Ausrollen von Multi-Tier-Applikationen mit Docker

Vielen Dank für Ihre Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an [email protected]

oder +49 (0)8457 - 931096

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development