Mesos on coreOS

Click here to load reader

  • date post

    13-Apr-2017
  • Category

    Technology

  • view

    6.134
  • download

    0

Embed Size (px)

Transcript of Mesos on coreOS

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

    by @subicura ()

  • @subicura

    Purpleworks Developer Ruby on Rails AngularJS, ReactJS CoreOS, Docker Openframeworks, OpenGL

  • Deploy Capistrano Docker CoreOS Mesos Mesos on CoreOS

    Demo

  • !DEPLOY

  • 1. CAPISTRANORemote multi-server automation tool

  • !1. Get latest source

    2. Install dependencies 3. Restart

  • !1. Get latest source

    2. Install dependencies 3. Restart

  • 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

  • Googling!!

  • successfully deploy!!

    but,

    migration to another server or scale out?

  • 2. DOCKERnew container technology

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

  • before(capistrano)

    !

  • !after(docker)

    !Docker Images

  • 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

  • after

    docker run -p 80:80 app

  • MySQL Postgresql MongoDB

    Redis RabbitMQ

    Nginx Rails Application

    Lets start to make docker image!

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

    The Future of Everything

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

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

  • How to deploy to remote server?

  • 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

  • centurion

  • 3. CoreOSfor container

  • CoreOS is designed to give you compute

    capacity that is dynamically scaled and managed

  • A Minimal Operating System Painless Updating

    Docker Containers Clustered By Default

  • A highly-available key value store

    /services/web/web_1 172.17.8.101:49155

    valuekey

    directory

  • Fleet

    Distributed init system

  • Great tools Great features

    Powerful

  • Require install agent (*not ansible) Too many feature

  • Fleet is enough?

  • 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

  • 4. MesosA distributed systems kernel

  • Program against your datacenter like its a single pool of resources

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

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

  • 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

  • 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

  • Mesos on CoreOS

  • bootstrapping a cluster system

    Fleet

  • DEMO

  • Master

    Slave

    Slave

    Slave

    zookeeper mesos master(5050) marathon(8080)

  • Master

    Slave

    Slave

    Slave

    mesos slave

    mesos slave

    mesos slave

    zookeeper mesos master(5050) marathon(8080)

  • echo test

    Deploy and manage containers

  • echo test

    web server x 3

    Deploy and manage containers

  • echo test

    web server x 3

    fleet-ui

    Deploy and manage containers

  • Service Discovery

  • 172.17.8.101:31524

    172.17.8.102:31512

    172.17.8.103:31533

  • 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

  • Master

    Slave

    Slave

    Slave

    mesos slave

    mesos slave

    mesos slave

    registrator

    registrator

    registrator

    zookeeper mesos master(5050) marathon(8080)

  • 172.17.8.101:31524

    172.17.8.102:315

    172.17.8.103:315

    /services

    "

    CHANGE!?

  • 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

  • Master

    Slave

    Slave

    Slave

    mesos slave

    mesos slave

    mesos slavenginx-confd(80)

    registrator

    registrator

    registrator

    zookeeper mesos master(5050) marathon(8080)

  • Thank you!

  • 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

  • Sample Source

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

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