Mesos on coreOS

55
Mesos on CoreOS Docker Seoul Meetup #4 / Sep 5, 2015 by @subicura (김충섭)

Transcript of Mesos on coreOS

Page 1: Mesos on coreOS

Mesos on CoreOS Docker Seoul Meetup #4 / Sep 5, 2015

by @subicura (김충섭)

Page 2: Mesos on coreOS

@subicuraPurpleworks Developer Ruby on Rails AngularJS, ReactJS CoreOS, Docker Openframeworks, OpenGL

Page 3: Mesos on coreOS

• Deploy • Capistrano • Docker • CoreOS • Mesos • Mesos on CoreOS

• Demo

Page 4: Mesos on coreOS

!DEPLOY

Page 5: Mesos on coreOS

1. CAPISTRANORemote multi-server automation tool

Page 6: Mesos on coreOS

!1. Get latest source

2. Install dependencies 3. Restart

Page 7: Mesos on coreOS

!1. Get latest source

2. Install dependencies 3. Restart

Page 8: Mesos on coreOS

Failed to install dependencies!!

Why???

conflicting library version ruby version is too old gcc version is too old

8080 port already in use unknown error…

Page 9: Mesos on coreOS

Googling!!

Page 10: Mesos on coreOS

successfully deploy!!

but,

migration to another server or scale out?

Page 11: Mesos on coreOS
Page 12: Mesos on coreOS

2. DOCKERnew container technology

Page 13: Mesos on coreOS

Docker is an open platform for building, shipping and running distributed applications.

Page 14: Mesos on coreOS

before(capistrano)

!

Page 15: Mesos on coreOS

!after(docker)

!Docker Images

Page 16: Mesos on coreOS

before

$ cd$ git clone git://github.com/sstephenson/rbenv.git .rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc$ exec $SHELL$ mkdir -p ~/.rbenv/plugins$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build$ git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash$ rbenv install 2.2.2$ rbenv global 2.2.2$ ruby install bundler……

Page 17: Mesos on coreOS

after

docker run -p 80:80 app

Page 18: Mesos on coreOS

MySQL Postgresql MongoDB

Redis RabbitMQ

Nginx Rails Application

Let’s start to make docker image!

Page 19: Mesos on coreOS

http://www.slideshare.net/MichaelDucy/the-future-of-everything-37344357

The Future of Everything

http://www.slideshare.net/MichaelDucy/the-future-of-everything-37344357

Page 20: Mesos on coreOS

How to deploy to remote server?

Page 21: Mesos on coreOS

docker -H $TARGET_DEPLOY_TCP pull $DOCKER_REGISTRY_NAME:latest docker -H $TARGET_DEPLOY_TCP stop $DOCKER_APP_NAMEdocker -H $TARGET_DEPLOY_TCP rm $DOCKER_APP_NAMEdocker -H $TARGET_DEPLOY_TCP run -d --name $DOCKER_APP_NAME \ -p 80:80 \ -p 443:443 \ -v /data/www:/var/www/upload \ $DOCKER_REGISTRY_NAME:latest

Docker Host

docker daemon

Page 22: Mesos on coreOS

centurion

Page 23: Mesos on coreOS

3. CoreOSfor container

Page 24: Mesos on coreOS

CoreOS is designed to give you compute

capacity that is dynamically scaled and managed

Page 25: Mesos on coreOS

A Minimal Operating System Painless Updating

Docker Containers Clustered By Default

Page 26: Mesos on coreOS

A highly-available key value store

/services/web/web_1 172.17.8.101:49155

valuekey

directory

Page 27: Mesos on coreOS

Fleet

Distributed init system

Page 28: Mesos on coreOS
Page 29: Mesos on coreOS

Great tools Great features

Powerful

Page 30: Mesos on coreOS

Require install agent (*not ansible) Too many feature

Page 31: Mesos on coreOS

Fleet is enough?

Page 32: Mesos on coreOS

Fleet

Distribute systemd = low-level Difficult cluster resource management

(No check CPU/Memory/Storage) Lack of health check option

Lack of rolling restarts strategy Lack of GUI tool

Page 33: Mesos on coreOS

4. MesosA distributed systems kernel

Page 34: Mesos on coreOS

Program against your datacenter like it’s a single pool of resources

Page 35: Mesos on coreOS

http://techcrunch.com/2014/06/09/mesosphere-grabs-10m-in-series-a-funding-to-transform-datacenters/

Page 36: Mesos on coreOS

Mesos began as a research project in the UC Berkeley RAD Lab

Twitter, Facebook, Apple, Airbnb, Netflix, eBay, … using mesos

efficient resource isolation and sharing across distributed applications

supports a high availability mode (with Marathon)

support docker (from 0.20.0)

UI available

Job Scheduler (with Chronos)

support Hadoop, Kafka, Spark

Page 37: Mesos on coreOS

mesos (with marathon)

fleet

configuration JSON low-level shell command

cluster resource management

yes no

health check http with many option process check

rolling restart strategy

yes no

GUI yes no

Page 38: Mesos on coreOS

Mesos on CoreOS

Page 39: Mesos on coreOS

bootstrapping a cluster system

Fleet

Page 40: Mesos on coreOS

DEMO

Page 41: Mesos on coreOS

Master

Slave

Slave

Slave

zookeeper mesos master(5050) marathon(8080)

Page 42: Mesos on coreOS

Master

Slave

Slave

Slave

mesos slave

mesos slave

mesos slave

zookeeper mesos master(5050) marathon(8080)

Page 43: Mesos on coreOS

echo test

Deploy and manage containers

Page 44: Mesos on coreOS

echo test

web server x 3

Deploy and manage containers

Page 45: Mesos on coreOS

echo test

web server x 3

fleet-ui

Deploy and manage containers

Page 46: Mesos on coreOS

Service Discovery

Page 47: Mesos on coreOS

172.17.8.101:31524

172.17.8.102:31512

172.17.8.103:31533

Page 48: Mesos on coreOS

172.17.8.101:31524

172.17.8.102:315

172.17.8.103:315

/services ㄴwhoami ㄴ1 - 172.17.8.101:31524 ㄴ2 - 172.17.8.102:31512 ㄴ3 - 172.17.8.103:31533

Registrator

Page 49: Mesos on coreOS

Master

Slave

Slave

Slave

mesos slave

mesos slave

mesos slave

registrator

registrator

registrator

zookeeper mesos master(5050) marathon(8080)

Page 50: Mesos on coreOS

172.17.8.101:31524

172.17.8.102:315

172.17.8.103:315

/services

"

CHANGE!?

Page 51: Mesos on coreOS

confd

172.17.8.101:31524

172.17.8.102:315

172.17.8.103:315

/services

"

CHANGE!?

Update Config

Reloadwhoami.sample.com -172.17.8.101:31524 -172.17.8.102:31512 -172.17.8.103:31533

Page 52: Mesos on coreOS

Master

Slave

Slave

Slave

mesos slave

mesos slave

mesos slavenginx-confd(80)

registrator

registrator

registrator

zookeeper mesos master(5050) marathon(8080)

Page 53: Mesos on coreOS

Thank you!

Page 54: Mesos on coreOS

Reference

✓ https://www.docker.com/ ✓ http://coreos.com ✓ http://mesos.apache.org/ ✓ https://mesosphere.github.io/marathon/ ✓ https://github.com/gliderlabs/registrator ✓ https://github.com/kelseyhightower/confd

Page 55: Mesos on coreOS

Sample Source

✓ https://github.com/subicura/mesos-on-coreos