Upload
masahito-zembutsu
View
6.179
Download
3
Embed Size (px)
Citation preview
忙しい人の
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 AuroraChronos…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 AuroraChronos…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 AuroraChronos…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 AuroraChronos…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 AuroraChronos…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 AuroraChronos…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 AuroraChronos…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 Mesoshttp://mesos.apache.org/documentation/latest/frameworks/
DevOps ツール
http://vamp.io
長期実行サービス
http://aurora.apache.org
https://github.com/mesosphere/marathon
Marathon
Singularity
http://getsingularity.com
SSSPhttps://github.com/mesosphere/sssp
ビッグデータ処理
http://chapel.cray.com/
Dparkhttps://github.com/douban/dpark
Exelixihttps://github.com/mesosphere/exelixi
Hadoop on Mesoshttps://github.com/mesos/hadoop http://spark.apache.org/
Stormhttps://github.com/mesos/storm
Hamahttps://wiki.apache.org/hama/
MPICH2 Hydrahttps://github.com/mesosphere/mesos-hydra
バッチ処理
Chronoshttps://github.com/mesos/chronos
Jenkinshttps://github.com/jenkinsci/mesos-plugin
JobServer
GoDocker
Clook
データ・ストレージDCOS Cassandra
https://github.com/mesosphere/dcos-cassandra-service
http://www.alluxio.org/
Elasticsearch Mesos frameworkhttps://github.com/mesos/elasticsearch
Hypertablehttps://code.google.com/p/hypertable/wiki/Mesos
mr-redis
https://github.com/mesos/mr-redis
システム基盤のリソースを意識せず、様々な処理に注力できる
Mesos
19
Mesos概要と背景
/3
Apache Mesos
クラスタ・マネージャ分散システム(としてのソフトウェア)を実行する
ための管理システムであり、障害耐性・スケーラブル
分散システム・カーネルデータセンタのための小さな(マイクロ)カーネル
かつ、メタ(汎用)スケジューラ
オープンソースApache License 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 (Message Passing Interfece) などの
クラスタ・コンピューティングのプラットフォームを指向
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
26https://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 TASKTASKTASK
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 TASKTASK
TASK
TASKframeworks
マスタが各スレーブにタスクを割り振ります
そもそも、なぜ 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 の方向性と一致
Apache Mesos 単体でネックになっていた諸問題を解決
47色合いも似てるね!(関係無い)
×課題
“スケールが大変”課題
“実行環境のセットアップが面倒”
48
Dockerと愉快な仲間達
Build Run開 発 ・ 構 築 移 動 実 行
Ship
“Build, Ship, Run, Any App Anywhere”
Docker Engine for Linux / Commercial SupportDocker 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 TASKTASK
TASK TASK TASK TASK
54
Mesos のリソース処理手順
55
Mesos のリソース処理手順
ExecutorとしてのDocker
MesosはPluggable(取り付け・取り外し可能)フレームワークも処理系統も固定されない拡張性
そもそも Docker ありきではないDockerコンテナのスケジューラではない
スタート地点は、リソースの効率的な管理
Marathon のようなフレームワークと連携し、
長期間稼働するサービスにも適用可能に
56
57
Marathon
/3
58
Marathon
Mesos 上で動作するフレームワークの1つAPI を持つため、自動化処理の応用も得意
オープンソースのライセンス(Apache License v2.0)
https://mesosphere.github.io/marathon/
コンテナ・オーケストレーション・プラットフォームフレームワーク自身の可用性
Mesos コンテナ(cgroup)とDocker の両方に対応
きれいなUI
サービス・ディスカバリと負荷分散
REST API
…などなど
59
60Mesos 自身、このような管理画面を持ちますが
61フレームワークも管理画面をもつ場合があります。
Mesos+Marachon を試すには?
CentOS 7.2 の場合rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-2.noarch.rpmyum -y install mesos mesosphere-zookeeper marathon chronosfirewall-cmd --add-port=2181/tcp –permanentfirewall-cmd --add-port=4400/tcp –permanentfirewall-cmd --add-port=5050/tcp –permanentfirewall-cmd --add-port=8080/tcp –permanentfirewall-cmd –reloadsystemctl start zookeepersystemctl start mesos-mastersystemctl start mesos-slavesystemctl 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 AuroraChronos…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 Mesoshttp://mesos.apache.org/documentation/latest/frameworks/
DevOps ツール
http://vamp.io
長期実行サービス
http://aurora.apache.org
https://github.com/mesosphere/marathon
Marathon
Singularity
http://getsingularity.com
SSSPhttps://github.com/mesosphere/sssp
ビッグデータ処理
http://chapel.cray.com/
Dparkhttps://github.com/douban/dpark
Exelixihttps://github.com/mesosphere/exelixi
Hadoop on Mesoshttps://github.com/mesos/hadoop http://spark.apache.org/
Stormhttps://github.com/mesos/storm
Hamahttps://wiki.apache.org/hama/
MPICH2 Hydrahttps://github.com/mesosphere/mesos-hydra
バッチ処理
Chronoshttps://github.com/mesos/chronos
Jenkinshttps://github.com/jenkinsci/mesos-plugin
JobServer
GoDocker
Clook
データ・ストレージDCOS Cassandra
https://github.com/mesosphere/dcos-cassandra-service
http://www.alluxio.org/
Elasticsearch Mesos frameworkhttps://github.com/mesos/elasticsearch
Hypertablehttps://code.google.com/p/hypertable/wiki/Mesos
mr-redis
https://github.com/mesos/mr-redis
何か気になるところはありますか?
質疑応答
66
参考資料
Apache Mesos
http://mesos.apache.org/
Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center
http://mesos.berkeley.edu/mesos_tech_report.pdf
Marathon: A container orchestration platform for Mesos and DC/OS
https://mesosphere.github.io/marathon/
67