docker swarm 0.2.0

Post on 16-Jul-2015

3.391 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduction to Swarma Docker-native clustering system

@aluzzardi - @vieux - @abronan

Alexandre Beslic@abronan

Introduction

Demo

Upcoming features

Q&A

Today

Docker CLI

Docker CLI

Docker CLI

With Docker Swarm

Docker CLI

Docker CLI

Swarm

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

TimelineOct

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

Swarm 0.2.0

• Docker REST API (>85%)

• Resource management (CPU, Mem, Networking)

• Advanced scheduling with constraints and affinities

• Multiple Discovery Backends (hub, etcd, consul, zookeeper)

• TLS: Encryption & Authentication

Setup using the hosted discovery service

• Create a cluster:

$ swarm create

• Add nodes to a cluster:

$ swarm join --add=<node_ip> token://<token>

• Start Swarm

$ swarm manage --addr=<swarm_ip> token://<token>

Or you can use your own etcd, zookeeper or consul

Contributions are welcome ☺ :

Swarm Scheduler

2 steps:

• 1- Apply filters to exclude nodes

- ports

- constraints - affinity

- health - dependency

• 2- Use a strategy to pick the best node

- binpack

- spread

- random Contributions are welcome ☺ :

Resource Management

• Memory

$ docker run -m 1g …

• CPU

$ docker run -c 1 …

• Ports

$ docker run -p 80:80 …

• More to come, ex: network interfaces

Constraints

• Standard constraints induced from docker info

docker run -e “constraint:operatingsystem==*fedora*” …

docker run -e “constraint:storagedriver==*aufs*” …

• Custom constraints with host labels

docker -d --label “region==us-east”

docker run -e “constraint:region==us-east” …

• Pin a container to a specific host

docker run –e “constraint:node==ubuntu-2” …

Affinities

• Containers affinities

docker run --name web nginx

docker run -e “affinity:container==web” logger

• Containers Anti-affinities

docker run --name redis-master redis

docker run --name redis-slave -e “affinity:container!=redis*” …

• Images affinities

docker run -e “affinity:image==redis” redis

Soft Affinities

• Containers soft affinities

docker run -d --name redis5 -e affinity:container!=~redis* redis

Swarm Beta: Integrations

• Fully integrated with Machine$ machine create -d azure --swarm --swarm-discovery token://<token> …

• Partially integrated with Compose$ DOCKER_HOST=<swarm_addr> compose up

• Mesos & DCOS integration has started in collaboration with Mesosphere. $ swarm manage -c mesos zk://<zookeeper_addr>/swarm

DemoScheduling containers on Swarm

Demo

hdd ssd

Docker CLI

Docker CLI= RAM: 4GB

CPU: 1coreSwarm

us-east us-west

Swarm Beta: Upcoming features

• Support for K/V backends (consul, etcd, zookeeper)

• High Availability with replicated state between multiple Managers

• Attempt at Re-scheduling on Node failure

• Networking (libnetwork integration into docker)

On-failure rescheduling

On-failure rescheduling

Docker CLI

Docker CLI

Swarm

Node Failure

On-failure rescheduling

Docker CLI

Docker CLI

Swarm

Node Failure

High Availability, State replication

Docker CLI

Docker CLI

Swarm

Docker CLI

Swarm

Node Failure

Docker CLI

Docker CLI

Swarm

Node Failure

Manager backup instances

Docker CLI

ManagerBackupBackup

Manager backup instances

Docker CLI

ManagerBackupBackup

Failure

Manager backup instances

Docker CLI

ManagerBackup Manager

Failure Swap

Mesos Integration

Mesos cluster

+ + +

Mesos CLI

Marathon

Mesos cluster + Docker Swarm

+ + +

Docker CLI

Mesos CLI

Marathon

Mesos cluster + Docker Swarm

+ + +

Docker CLI

Mesos CLI

DockerCompose

Marathon

http://github.com/docker/swarm

#docker-swarm on freenode

@aluzzardi - @vieux - @abronan

Thank You. Questions?

top related