SlideShare a Scribd company logo
忙しい人の
5分で分かるMesos
アプリケーションエンジニアでもわかる Docker と Mesos 勉強会
2016年11月18日(金)
さくらインターネット株式会社
Technology Evangelist 前佛雅人
@zembutsu
M e s o s っ て 何 だ ( 哲 学 )
2
本スライドの想定は
「 Mesos って聞いたことあるけど、
よくわかんない 」
「 Apache Mesosって何だ? 」
といった疑問を持つ読者であり
Mesos の概念や背景を知るための資料です
メ ソ ス
ア パ ッ チ メ ソ ス
3
4
管理対象のサーバが1台だけなら
ソフトウェア設定やシステム・リソース管理も
なんとかなるでしょう。
5
ですが、対象が
6
対象が……
7
なんということでしょう。こんなに増えてしまいました。
こんな分散環境で、どのようにリソースを管理していけばよいのか……。
8
そこでMesosの出番です!
複数サーバ上の処理とリソースを、マスタがまとめて管理します。
Mesos マスタ
Mesos スレーブ群のクラスタ
Mesos
エージェント
(スレーブ)
9
エージェントを追加・削除するだけで、システム規模の変更もお手軽に。
10
Mesos Master
Mesos Slave群
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
そして、Mesosとは分散環境におけるメタ・スケジューラです。
11
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos は API があるため、フレームワークを通して制御できます。
様々なタスクをこなすためのリソースを Mesos に要求します。
12
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
スケジュールとは、どのサーバで何のタスク(処理)を実行するか決めること。
サーバの空きリソースや実行可能なプログラムをマスタが管理します。
13
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Mesosマスタを例えると、審判のようなもの、でしょうか。
14
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Zookeeper Quorum
マスタを冗長化してデータ複製できるので、もしもの時も安心。
15
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Executor
Zookeeper Quorum
タスクを処理(実行)
あとは各スレーブが、よしなにタスクを処理して、結果をマスタに返します。
16
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Executor
Zookeeper Quorum
タスクを処理(実行)
注目を浴びつつあるのは、処理部分が Docker イメージに対応したところ。
Containerlizer
17
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Executor
Zookeeper Quorum
タスクを処理(実行)
Containerlizer
そして、処理結果はフレームワークに還る。これが Mesos の大きな流れ。
18
と愉快なフレームワークたち
Software Projects Built on Mesos
http://mesos.apache.org/documentation/latest/frameworks/
DevOps ツール
http://vamp.io
長期実行サービス
http://aurora.apache.org
https://github.com/mesosphere/marathon
Marathon
Singularity
http://getsingularity.com
SSSP
https://github.com/mesosphere/sssp
ビッグデータ処理
http://chapel.cray.com/
Dpark
https://github.com/douban/dpark
Exelixi
https://github.com/mesosphere/exelixi
Hadoop on Mesos
https://github.com/mesos/hadoop http://spark.apache.org/
Storm
https://github.com/mesos/storm
Hama
https://wiki.apache.org/hama/
MPICH2 Hydra
https://github.com/mesosphere/mesos-hydra
バッチ処理
Chronos
https://github.com/mesos/chronos
Jenkins
https://github.com/jenkinsci/mesos-plugin
JobServer
GoDocker
Clook
データ・ストレージ
DCOS Cassandra
https://github.com/mesosphere/dcos-cassandra-service
http://www.alluxio.org/
Elasticsearch Mesos framework
https://github.com/mesos/elasticsearch
Hypertable
https://code.google.com/p/hypertable/wiki/Mesos
mr-redis
https://github.com/mesos/mr-redis
システム基盤のリソースを意識せず、様々な処理に注力できる
Mesos
19
Mesos概要と背景
/3
Apache Mesos
クラスタ・マネージャ
分散システム(としてのソフトウェア)を実行する
ための管理システムであり、障害耐性・スケーラブル
分散システム・カーネル
データセンタのための小さな(マイクロ)カーネル
かつ、メタ(汎用)スケジューラ
オープンソース
ApacheLicense 2.0
20
http://mesos.apache.org/
Cluster Manager
Distributed system kernel
Open Source Software
発表から現在までの経緯
研究論文発表
Apache Incubation Project
Apache Top Project
Docker コンテナ対応
v1.0 リリース (2016年7月27日)
21
GitHub 上の古いリリース
https://github.com/apache/mesos/releases?after=
release-0.9.0-incubating-RC4
Mesosの登場背景
学術研究成果(2010)*
HadoopやMPI(MessagePassingInterfece)などの
クラスタ・コンピューティングのプラットフォームを指向
Mesos は分散リソースを管理
どのコンピュータで、どれだけのリソース(CPU,メモリ,
ディスク容量)を使うのかを決定する仕組み
22
* Mesos: A Platform for fine-grained Resource Sharing in the data center
http://mesos.berkeley.edu/mesos_tech_report.pdf
23
24
25
26
https://blog.twitter.com/2013/mesos-graduates-from-apache-incubation
27
アーキテクチャ
/3
Mesosが目指すもの
拡張縮小可能かつ弾力的である
効率的な共有クラスタのためのフレームワーク
リソース要求に対し、ポリシーに従ってリソースを割り当てる仕組み
最小限のインターフェースを定義するだけで、スケジューリングと処理(execution)が可能
28
Scalable and resilient core
10,000
ノードでも大丈夫!
Mesos は何をするのか?
“分散システム群のkernel”の役割
Linuxカーネルのような、分散システム(データセンタ)そのものを抽象化
全てのマシン上で動作し、アプリケーションを実行
スケジューリング機能
リソースの状況に合わせて、タスクを管理し、
どこでアプリケーションを実行するかを決定
フレームワーク連携
Mesosはシステム管理するプラットフォーム
29
“What is Mesos? A distributed systems kernel”
Scheduling
Mesos Slave Mesos Slave Mesos Slave Mesos Slave
誰にタスクを
割り当てようかな? TASK
TASK
frameworks
Mesos マスタ
スレーブ スレーブ スレーブ スレーブ
Mesos は何をするのか?
“分散システム群のkernel”の役割
Linuxカーネルのような、分散システム(データセンタ)そのものを抽象化
全てのマシン上で動作し、アプリケーションを実行
スケジューリング機能
リソースの状況に合わせて、タスクを管理し、
どこでアプリケーションを実行するかを決定
フレームワーク連携
Mesosはシステム管理するプラットフォーム
30
“What is Mesos? A distributed systems kernel”
Scheduling
Mesos Slave Mesos Slave Mesos Slave Mesos Slave
CPU
ヒマです
メモリ
少なし
氏にそう
…。
働くって
青春だ!
誰にタスクを
割り当てようかな? TASK
TASK TASKTASK
TASK
TASK
TASK
frameworks
スレーブがノードに自身のリソースを伝えます
Mesos は何をするのか?
“分散システム群のkernel”の役割
Linuxカーネルのような、分散システム(データセンタ)そのものを抽象化
全てのマシン上で動作し、アプリケーションを実行
スケジューリング機能
リソースの状況に合わせて、タスクを管理し、
どこでアプリケーションを実行するかを決定
フレームワーク連携
Mesosはシステム管理するプラットフォーム
31
“What is Mesos? A distributed systems kernel”
Scheduling
Mesos Slave Mesos Slave Mesos Slave Mesos Slave
CPU
ヒマです オタワ
氏にそう
…。
働くって
青春だ!
誰にタスクを
割り当てようかな?
TASK TASK TASK
TASK
TASK
TASK TASK
TASK
TASK
TASK
frameworks
マスタが各スレーブにタスクを割り振ります
そもそも、なぜ Mesos なのか?
アプリケーションの実行環境を分けたい
リソースを効率的に活用したい
仮想化やクラウドの活用により、実行環境は分けつつ、効率的に使いたい
歴史的な経緯
32
33
物理サーバだけの時代
とある物理サーバ
CPU メモリ ディスク
オペレーティングシステム
ミドルウェアやライブラリA B C
アプリ
1
34
物理サーバだけの時代
とある物理サーバ
故障すると大変
CPU メモリ ディスク
調達・管理コストの課題
基本、ハードウェア固定
オペレーティングシステム
ミドルウェアやライブラリA B C
アプリ
1
リソース有効活用のしづらさ
35
仮装化技術の時代
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
サーバが増減できるよ、やったね!
36
仮装化技術の時代
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
時間
リ
ソ
ー
ス
使
用
率
時間 時間
サーバが増減できるよ、やったね!
アプリケーション アプリケーション アプリケーション
37
仮装化技術の時代
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
OS
ミドルウェア
アプリケーション
時間
リ
ソ
ー
ス
使
用
率
時間 時間
サーバが増減できるよ、やったね!
アプリケーション アプリケーション アプリケーション
うーん、この無駄
38
思い描く理想
サーバ1台で3台分の仕事ができるよ、やったね!
39
分かっちゃいるけど
どうするんだこれ?
とある管理者の
憂鬱
40
分かっちゃいるけど
どうするんだこれ?
• クラスタを効率的に管理するには?
• システムの冗長性を担保するには?
• スケールアップ・スケールダウンを
簡単にするには?
とある管理者の
憂鬱
41
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS OS OS
時間
リ
ソ
ー
ス
使
用
率
時間 時間
Mesosでクラスタがんばるぞい!
Mesosの出番
Apache Mesos
42
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS OS OS
時間
リ
ソ
ー
ス
使
用
率
時間 時間
効率的に使えるよ、やったね!
Mesosの出番
Apache Mesos
アプリ アプリアプリ アプリ アプリアプリ
43
とある仮想サーバA とある仮想サーバB とある仮想サーバC
OS OS OS
時間
リ
ソ
ー
ス
使
用
率
時間 時間
効率的に使えるよ、やったね!
Mesosの出番
Apache Mesos
アプリ アプリアプリ アプリ アプリアプリアプリ アプリ
動くアプリが増えるね!!
アプリ
44
分かっちゃいるけど
どうするんだこれ?
その2
とある管理者の
憂鬱
45
分かっちゃいるけど
どうするんだこれ?
その2
• アプリケーションのセットアップ・削除を
簡単に行うには?
• スケールアップ・スケールダウンを
簡単にするには?
とある管理者の
憂鬱
46
お ま た せ
なぜ Docker なのか?
環境の“分離” と“効率的”なアプリ実行を両立
Dockerイメージとコンテナの考え方が、Mesosの方向性と一致
ApacheMesos単体でネックになっていた諸問題を解決
47色合いも似てるね!
(関係無い)
×
課題
“スケールが大変”
課題
“実行環境のセットアップが面倒”
48
Dockerと愉快な仲間達
Build Run開 発 ・ 構 築 移 動 実 行
Ship
“Build, Ship, Run, Any App Anywhere”
Docker Engine for Linux / Commercial Support
Docker for Mac, Windows, Windows Server 2016
Docker Trusted Registry
Docker Hub
Universal Control Plane
Toolbox
Kitematic
Dev
(開発)
Ops
(運用)
49
計算機
計算資源
演算装置 記憶領域 保存装置
オペレーティングシステム
ミドルウェア
アプリケーション
入力装置
出力装置 ソフトウェア
ハードウェア
50
計算機
計算資源
演算装置 記憶領域 保存装置
オペレーティングシステム
ミドルウェア
アプリケーション
入力装置
出力装置 ソフトウェア
ハードウェア
Dockerイメージにファイルをまとめ、
Dockerコンテナとして、アプリケーションを実行
Docker 登場背景との共通点
物理から仮想化への流れ
課題:デプロイ時間が遅い、コストがかかる、無駄なリソースが必要、スケールしづらい
ハイパーバイザ型仮想化基盤の登場により、1台のサーバ上で複数の仮想マシンを動かせる
仮想化、そしてクラウド・コンピューティング
仮想化はリソースの共有が便利、スケールもしやすい
必要な時に、必要なだけのリソース増減を行いやすい
使った分だか支払う料金体系
新たな課題
たくさんのアプリケーションを動かすには、より多くのリソースの必要性
アプリケーションのポータビリティ(移植性)は保証されない
51
52
Apache Mesos のアーキテクチャ
53
Apache Mesos のアーキテクチャ
TASK TASK
TASK
TASK TASK TASK TASK
54
Mesos のリソース処理手順
55
Mesos のリソース処理手順
ExecutorとしてのDocker
MesosはPluggable(取り付け・取り外し可能)
フレームワークも処理系統も固定されない拡張性
そもそも Docker ありきではない
Dockerコンテナのスケジューラではない
スタート地点は、リソースの効率的な管理
Marathonのようなフレームワークと連携し、
長期間稼働するサービスにも適用可能に
56
57
Marathon
/3
58
Marathon
Mesos 上で動作するフレームワークの1つ
APIを持つため、自動化処理の応用も得意
オープンソースのライセンス(ApacheLicensev2.0)
https://mesosphere.github.io/marathon/
コンテナ・オーケストレーション・プラットフォーム
フレームワーク自身の可用性
Mesosコンテナ(cgroup)とDockerの両方に対応
きれいなUI
サービス・ディスカバリと負荷分散
RESTAPI
…などなど
59
60
Mesos 自身、このような管理画面を持ちますが
61
フレームワークも管理画面をもつ場合があります。
Mesos+Marachon を試すには?
CentOS 7.2 の場合
rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpm
yum -y install mesos mesosphere-zookeeper marathon chronos
firewall-cmd --add-port=2181/tcp –permanent
firewall-cmd --add-port=4400/tcp –permanent
firewall-cmd --add-port=5050/tcp –permanent
firewall-cmd --add-port=8080/tcp –permanent
firewall-cmd –reload
systemctl start zookeeper
systemctl start mesos-master
systemctl start mesos-slave
systemctl start marathon
ブラウザから http://<host>:5050/ にアクセスすると、Mesos の UI
ブラウザから http://<host>:8080/ にアクセスすると、Marathon の UI
62
まとめ
Mesos は効率的にクラスタのリソースを管理
Docker 連携でお互いの弱点を補う
フレームワークを載せ替えて、様々な処理
Marathon はフレームワークの1つ
63
64
Mesos Master
Mesos Slave群
処理(Executor) APIフレームワーク
Marathon
Apache Aurora
Chronos
…etc
汎用スケジューラ
meta-scheduler
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
タスクをスケジュール
リソース要求
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
Mesos Slave Mesos Slave
Mesos Slave Mesos Slave Mesos Slave
Mesos Slave
俺がルール
ブックだ!!
Executor Containerlizer 拡大縮小可能かつ効率的リソース利用
プラガブル
Pluggable
障害耐性
Zookeeper Quorum
タスクを処理(実行)
65
と愉快なフレームワークたち
Software Projects Built on Mesos
http://mesos.apache.org/documentation/latest/frameworks/
DevOps ツール
http://vamp.io
長期実行サービス
http://aurora.apache.org
https://github.com/mesosphere/marathon
Marathon
Singularity
http://getsingularity.com
SSSP
https://github.com/mesosphere/sssp
ビッグデータ処理
http://chapel.cray.com/
Dpark
https://github.com/douban/dpark
Exelixi
https://github.com/mesosphere/exelixi
Hadoop on Mesos
https://github.com/mesos/hadoop http://spark.apache.org/
Storm
https://github.com/mesos/storm
Hama
https://wiki.apache.org/hama/
MPICH2 Hydra
https://github.com/mesosphere/mesos-hydra
バッチ処理
Chronos
https://github.com/mesos/chronos
Jenkins
https://github.com/jenkinsci/mesos-plugin
JobServer
GoDocker
Clook
データ・ストレージ
DCOS Cassandra
https://github.com/mesosphere/dcos-cassandra-service
http://www.alluxio.org/
Elasticsearch Mesos framework
https://github.com/mesos/elasticsearch
Hypertable
https://code.google.com/p/hypertable/wiki/Mesos
mr-redis
https://github.com/mesos/mr-redis
何か気になるところはありますか?
質疑応答
66
参考資料
 ApacheMesos
http://mesos.apache.org/
 Mesos:APlatformforFine-GrainedResourceSharingintheDataCenter
http://mesos.berkeley.edu/mesos_tech_report.pdf
 Marathon:AcontainerorchestrationplatformforMesosandDC/OS
https://mesosphere.github.io/marathon/
67

More Related Content

忙しい人の5分で分かるMesos入門 - Mesos って何だ?