Slide 1

Slide 1 text

Orchestration for Sysadmins Andrea Luzzardi / Victor Vieux Software Engineers @ docker

Slide 2

Slide 2 text

Agenda • Introduction to Docker Swarm • Integrating Swarm with Mesos • Swarm Fault Tolerance: Replication • Provisioning Swarm with Docker Machine

Slide 3

Slide 3 text

“Running containers on multiple hosts.”

Slide 4

Slide 4 text

Swarm in a nutshell • Exposes several Docker Engines as a single virtual Engine • Serves the standard Docker API • Extremely easy to get started • Batteries included but swappable

Slide 5

Slide 5 text

Timeline Oct Nov Dec Jan Feb Jun Proof of Concept DockerCon EU Open Repository First Release Candidate Swarm Beta Release Global Hack Day Open Proposal 0.2.0 Release 0.3.0 Release Apr

Slide 6

Slide 6 text

Setting up Swarm • Create a cluster: - $ swarm create • Add nodes to a cluster: - $ swarm join --advertise= token:// • Start Swarm: - $ swarm manage -H token:// Or you can use your own etcd, zookeeper or consul

Slide 7

Slide 7 text

Swarm Scheduler : 2 steps • Apply filters to exclude nodes - ports - constraints - affinities - health - dependencies • Use a strategy to rank and pick the best node - spread - binpack - random

Slide 8

Slide 8 text

Swarm Scheduler • Resource Management - Memory, CPU, Network $ docker run -m 1g -c 2 -p 80:80 ... • Fine-grained tuning - Constraints $ docker run -e constraint:region==us-east ... - Affinities $ docker run -e affinities:constainer!=redis* ... - Soft Constraints / Affinities

Slide 9

Slide 9 text

“Batteries Included but Swappable”

Slide 10

Slide 10 text

Docker Swarm + Mesos • Experimental • Docker Swarm act as a Mesos Framework • In collaboration with • Only one flag to change: - $> swarm manage -c mesos-experimental • Contributions are welcome: - github.com/docker/swarm/tree/master/cluster/mesos

Slide 11

Slide 11 text

Mesos Cluster + Mesos CLI Mesos Slaves + + + + + + + + + + + + + Mesos Masters Marathon

Slide 12

Slide 12 text

Mesos Cluster + Docker Swarm + Mesos CLI Mesos Slaves + + + + + + + + + + + + + Mesos Masters Marathon Docker CLI

Slide 13

Slide 13 text

Mesos Cluster + Docker Swarm + Mesos CLI Mesos Slaves + + + + + + + + + + + + + Mesos Masters Marathon Docker CLI shipyard kitematic compose

Slide 14

Slide 14 text

BY

Slide 15

Slide 15 text

Swarm Manager Replication

Slide 16

Slide 16 text

Replication Docker CLI Swarm Cluster • Swarm Manager is a Single Point of Failure API Request Manage

Slide 17

Slide 17 text

Replication Docker CLI Swarm Cluster • Upon failure it becomes impossible to manage the cluster • Cluster continues to run un-managed API Request Manage

Slide 18

Slide 18 text

Replica Replication Primary Docker CLI Swarm Cluster Forward API Request Manage Replica • One primary, many replicas • Leader Election built on top of Consul, etcd, ZooKeeper • Replicas forward API calls to primary • CLI can talk to any instance

Slide 19

Slide 19 text

Replica Replication Primary Docker CLI Swarm Cluster Forward API Request Manage Replica • Replicas monitor health of primary instance • Leader gets re-elected upon primary failure

Slide 20

Slide 20 text

Primary Replica Replication Replica Docker CLI Swarm Cluster Forward API Request Manage • One replica promoted to primary • Other replicas notified of leadership update • CLI can continue talking to same instance

Slide 21

Slide 21 text

“From Zero to Docker”

Slide 22

Slide 22 text

Machine in a nutshell • Host management for a container centric world • Provisions Virtual Machines • Installs & Manages Docker Engine • Swarm Cluster Provisioning

Slide 23

Slide 23 text

Machine Provisioning 5 Local Providers 9 Cloud Providers 7 Operating Systems

Slide 24

Slide 24 text

Machine Management • Install, Configure & Upgrade Docker Engine - docker-machine upgrade node-{1,2,3} • PKI Management - TLS Encryption & Authentication by default - CA generation, Key signing and Re-keying - Seamless integration: Auto-configure the CLI • Bring Your Own Machine - Generic Driver

Slide 25

Slide 25 text

Machine Operations • Operate - List, Start, Stop and Kill machines • Debug - docker-machine ssh node-2 • Script - docker-machine toolkit: ip, url, …

Slide 26

Slide 26 text

Machine Clustering • Integration with Docker Swarm • Provision Swarm management nodes • Pre-configure machines to join a Swarm cluster • Tweak Swarm options

Slide 27

Slide 27 text

Demo https://github.com/aluzzardi/swarm-replication-demo

Slide 28

Slide 28 text

Thank you, Questions? Andrea Luzzardi - @aluzzardi Victor Vieux - @vieux