docker paas

60
Docker PaaS ( Mesos+AWS ) Oskars Gavriševs @2015

Upload: okars-gavrisevs

Post on 11-Apr-2017

361 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Docker PaaS

Docker PaaS ( Mesos+AWS )

Oskars Gavriševs@2015

Page 2: Docker PaaS

Agenda :

● Overview of Docker Paas solutions in market.

● Mesos in details.

● Torture of Mesos high availability.

● Lessons learned from AWS deployment.

Page 3: Docker PaaS
Page 4: Docker PaaS

Docker PaaS

Page 5: Docker PaaS

Docker PaaS• Kubernetes ( By Google )

• Mesos ( By Apache Foundation )

----------------------------------------------------

• EC2 Container Service ( By Amazone )

• CoreOS ( By 3x devs )

• Stratos ( By Apache )

• Rancher ( By Rancher Labs )

• SmartOS

Page 6: Docker PaaS
Page 7: Docker PaaS
Page 8: Docker PaaS

Kubernetes concepts. • Pods

• Masters

• Minions

• Replication controllers

• Service

• Labels

• Kubelets

Page 9: Docker PaaS

Minions !

Page 10: Docker PaaS

Kubernetes architecture.

Page 11: Docker PaaS

Kubernetes minion.

Page 12: Docker PaaS

Kubernetes on open source pills .

Page 13: Docker PaaS
Page 14: Docker PaaS

Amazon EC2 container service (ECS) , concepts.

• Cluster

• Container instance

• Task definition

• Task

• Service

Page 15: Docker PaaS

ECS architecture.

Page 16: Docker PaaS

ECS disadvantages.

• Scheduling algorithm is not transparent.

• Limited docker functionality (No “Host” networking).

• Only one container per one host with ELB.

• No Labels.

• No Health checks.

Page 17: Docker PaaS

ECS, know how.

• How one container can start other container on same host ?

Page 18: Docker PaaS

ECS, know how (2).

Page 19: Docker PaaS
Page 20: Docker PaaS

CoreOS

Page 21: Docker PaaS
Page 22: Docker PaaS

Rancher

Page 23: Docker PaaS
Page 24: Docker PaaS

Mesos in details

Page 25: Docker PaaS

Mesos Architecture

Page 26: Docker PaaS

Mesos Master(s)

• High availability

• Masters form quorum.

• Leader election.

• Register frameworks, nodes.

• Min. 3x masters (1x off), 5x recommended ( 2x off )

Page 27: Docker PaaS

Mesos Slaves

● Provides resources.

● Can consist of multiple executors.

● Executors executes tasks.

Page 28: Docker PaaS

Mesos Frameworks

Page 29: Docker PaaS

Mesos Frameworks (2)

Marathon ( Long running services )

Hadoop ( Big Data Processing )

Chronos / Jenkins ( Batch scheduling )

ElasticSearch ( Data storage )

* http://mesos.apache.org/documentation/latest/frameworks/

Page 30: Docker PaaS

What so special with this mesos ?

Page 31: Docker PaaS

High availability

• If master fails tasks can continue to run.

• New leader election.

• Failed master can recover jobs.

Page 32: Docker PaaS

Health checks

Page 33: Docker PaaS

Component disconnection handling

• Slave disconnects from Zookeeper (don’t know which master is leader).

Page 34: Docker PaaS

Component disconnection handling (1)

• Master disconnects from Zookeeper (enters leaderless state).

Page 35: Docker PaaS

Warning suicidal master !

Page 36: Docker PaaS

Component disconnection handling(2)

• Slave doesn’t respond to master.

Page 37: Docker PaaS

Component disconnection handling(3)

• Master disconnects from nodes.

Page 38: Docker PaaS

Component disconnection handling(4)

• Leading master dies.

Page 39: Docker PaaS

Better resource utilization

Page 40: Docker PaaS

Better resource utilization (2)

Page 41: Docker PaaS

Mesos API

• http://master:5050/master/state.json

Page 42: Docker PaaS

Task labels.

Page 43: Docker PaaS

Constrains

Page 44: Docker PaaS

DEMO

Page 45: Docker PaaS

CPU / Meme / Disk quotas

Page 46: Docker PaaS

CPU / Meme / Disk quotas (2)

Page 47: Docker PaaS

DEMO

Page 48: Docker PaaS

Marathon

Page 49: Docker PaaS

Marathon docker scaling

• Scale up / down with one click.

Page 50: Docker PaaS

Marathon port mapping and LB

Page 51: Docker PaaS

DEMO

Page 52: Docker PaaS

Chronos

Page 53: Docker PaaS

Job dependencies

Page 54: Docker PaaS

DEMO

Page 55: Docker PaaS
Page 56: Docker PaaS

Lessons learned

Page 57: Docker PaaS

Lessons

• Unable to deploy on AWS ECS due to ‘host != networking’.

Page 58: Docker PaaS

Lessons (2)

• It's almost impossible to pass dynamic variables to container.

Page 59: Docker PaaS

https://github.com/ogavrisevs/Mesos-Docker-Cluster

Page 60: Docker PaaS