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

311 views

Published on

アプリケーションエンジニアでもわかる Docker と Mesos 勉強会
https://sakura-kanto.doorkeeper.jp/events/53777
2016年11月18日(金)
発表資料

本スライドの想定は
「 Mesos って聞いたことあるけど、よくわかんない 」
「 Apache Mesosって何だ? 」
といった疑問を持つ読者であり
Mesos の概念や背景を知るための資料です

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
311
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. 忙しい人の 5分で分かるMesos アプリケーションエンジニアでもわかる Docker と Mesos 勉強会 2016年11月18日(金) さくらインターネット株式会社 Technology Evangelist 前佛雅人 @zembutsu M e s o s っ て 何 だ ( 哲 学 )
  2. 2. 2 本スライドの想定は 「 Mesos って聞いたことあるけど、 よくわかんない 」 「 Apache Mesosって何だ? 」 といった疑問を持つ読者であり Mesos の概念や背景を知るための資料です メ ソ ス ア パ ッ チ メ ソ ス
  3. 3. 3
  4. 4. 4 管理対象のサーバが1台だけなら ソフトウェア設定やシステム・リソース管理も なんとかなるでしょう。
  5. 5. 5 ですが、対象が
  6. 6. 6 対象が……
  7. 7. 7 なんということでしょう。こんなに増えてしまいました。 こんな分散環境で、どのようにリソースを管理していけばよいのか……。
  8. 8. 8 そこでMesosの出番です! 複数サーバ上の処理とリソースを、マスタがまとめて管理します。 Mesos マスタ Mesos スレーブ群のクラスタ Mesos エージェント (スレーブ)
  9. 9. 9 エージェントを追加・削除するだけで、システム規模の変更もお手軽に。
  10. 10. 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. 11. 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. 12. 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. 13. 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. 14. 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. 15. 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. 16. 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. 17. 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. 18. 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. 19. 19 Mesos概要と背景 /3
  20. 20. Apache Mesos クラスタ・マネージャ 分散システム(としてのソフトウェア)を実行する ための管理システムであり、障害耐性・スケーラブル 分散システム・カーネル データセンタのための小さな(マイクロ)カーネル かつ、メタ(汎用)スケジューラ オープンソース ApacheLicense 2.0 20 http://mesos.apache.org/ Cluster Manager Distributed system kernel Open Source Software
  21. 21. 発表から現在までの経緯 研究論文発表 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
  22. 22. 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. 23. 23
  24. 24. 24
  25. 25. 25
  26. 26. 26 https://blog.twitter.com/2013/mesos-graduates-from-apache-incubation
  27. 27. 27 アーキテクチャ /3
  28. 28. Mesosが目指すもの 拡張縮小可能かつ弾力的である 効率的な共有クラスタのためのフレームワーク リソース要求に対し、ポリシーに従ってリソースを割り当てる仕組み 最小限のインターフェースを定義するだけで、スケジューリングと処理(execution)が可能 28 Scalable and resilient core 10,000 ノードでも大丈夫!
  29. 29. 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 マスタ スレーブ スレーブ スレーブ スレーブ
  30. 30. 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 スレーブがノードに自身のリソースを伝えます
  31. 31. 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 マスタが各スレーブにタスクを割り振ります
  32. 32. そもそも、なぜ Mesos なのか? アプリケーションの実行環境を分けたい リソースを効率的に活用したい 仮想化やクラウドの活用により、実行環境は分けつつ、効率的に使いたい 歴史的な経緯 32
  33. 33. 33 物理サーバだけの時代 とある物理サーバ CPU メモリ ディスク オペレーティングシステム ミドルウェアやライブラリA B C アプリ 1
  34. 34. 34 物理サーバだけの時代 とある物理サーバ 故障すると大変 CPU メモリ ディスク 調達・管理コストの課題 基本、ハードウェア固定 オペレーティングシステム ミドルウェアやライブラリA B C アプリ 1 リソース有効活用のしづらさ
  35. 35. 35 仮装化技術の時代 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション サーバが増減できるよ、やったね!
  36. 36. 36 仮装化技術の時代 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション 時間 リ ソ ー ス 使 用 率 時間 時間 サーバが増減できるよ、やったね! アプリケーション アプリケーション アプリケーション
  37. 37. 37 仮装化技術の時代 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション OS ミドルウェア アプリケーション 時間 リ ソ ー ス 使 用 率 時間 時間 サーバが増減できるよ、やったね! アプリケーション アプリケーション アプリケーション うーん、この無駄
  38. 38. 38 思い描く理想 サーバ1台で3台分の仕事ができるよ、やったね!
  39. 39. 39 分かっちゃいるけど どうするんだこれ? とある管理者の 憂鬱
  40. 40. 40 分かっちゃいるけど どうするんだこれ? • クラスタを効率的に管理するには? • システムの冗長性を担保するには? • スケールアップ・スケールダウンを 簡単にするには? とある管理者の 憂鬱
  41. 41. 41 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS OS OS 時間 リ ソ ー ス 使 用 率 時間 時間 Mesosでクラスタがんばるぞい! Mesosの出番 Apache Mesos
  42. 42. 42 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS OS OS 時間 リ ソ ー ス 使 用 率 時間 時間 効率的に使えるよ、やったね! Mesosの出番 Apache Mesos アプリ アプリアプリ アプリ アプリアプリ
  43. 43. 43 とある仮想サーバA とある仮想サーバB とある仮想サーバC OS OS OS 時間 リ ソ ー ス 使 用 率 時間 時間 効率的に使えるよ、やったね! Mesosの出番 Apache Mesos アプリ アプリアプリ アプリ アプリアプリアプリ アプリ 動くアプリが増えるね!! アプリ
  44. 44. 44 分かっちゃいるけど どうするんだこれ? その2 とある管理者の 憂鬱
  45. 45. 45 分かっちゃいるけど どうするんだこれ? その2 • アプリケーションのセットアップ・削除を 簡単に行うには? • スケールアップ・スケールダウンを 簡単にするには? とある管理者の 憂鬱
  46. 46. 46 お ま た せ
  47. 47. なぜ Docker なのか? 環境の“分離” と“効率的”なアプリ実行を両立 Dockerイメージとコンテナの考え方が、Mesosの方向性と一致 ApacheMesos単体でネックになっていた諸問題を解決 47色合いも似てるね! (関係無い) × 課題 “スケールが大変” 課題 “実行環境のセットアップが面倒”
  48. 48. 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. 49. 49 計算機 計算資源 演算装置 記憶領域 保存装置 オペレーティングシステム ミドルウェア アプリケーション 入力装置 出力装置 ソフトウェア ハードウェア
  50. 50. 50 計算機 計算資源 演算装置 記憶領域 保存装置 オペレーティングシステム ミドルウェア アプリケーション 入力装置 出力装置 ソフトウェア ハードウェア Dockerイメージにファイルをまとめ、 Dockerコンテナとして、アプリケーションを実行
  51. 51. Docker 登場背景との共通点 物理から仮想化への流れ 課題:デプロイ時間が遅い、コストがかかる、無駄なリソースが必要、スケールしづらい ハイパーバイザ型仮想化基盤の登場により、1台のサーバ上で複数の仮想マシンを動かせる 仮想化、そしてクラウド・コンピューティング 仮想化はリソースの共有が便利、スケールもしやすい 必要な時に、必要なだけのリソース増減を行いやすい 使った分だか支払う料金体系 新たな課題 たくさんのアプリケーションを動かすには、より多くのリソースの必要性 アプリケーションのポータビリティ(移植性)は保証されない 51
  52. 52. 52 Apache Mesos のアーキテクチャ
  53. 53. 53 Apache Mesos のアーキテクチャ TASK TASK TASK TASK TASK TASK TASK
  54. 54. 54 Mesos のリソース処理手順
  55. 55. 55 Mesos のリソース処理手順
  56. 56. ExecutorとしてのDocker MesosはPluggable(取り付け・取り外し可能) フレームワークも処理系統も固定されない拡張性 そもそも Docker ありきではない Dockerコンテナのスケジューラではない スタート地点は、リソースの効率的な管理 Marathonのようなフレームワークと連携し、 長期間稼働するサービスにも適用可能に 56
  57. 57. 57 Marathon /3
  58. 58. 58
  59. 59. Marathon Mesos 上で動作するフレームワークの1つ APIを持つため、自動化処理の応用も得意 オープンソースのライセンス(ApacheLicensev2.0) https://mesosphere.github.io/marathon/ コンテナ・オーケストレーション・プラットフォーム フレームワーク自身の可用性 Mesosコンテナ(cgroup)とDockerの両方に対応 きれいなUI サービス・ディスカバリと負荷分散 RESTAPI …などなど 59
  60. 60. 60 Mesos 自身、このような管理画面を持ちますが
  61. 61. 61 フレームワークも管理画面をもつ場合があります。
  62. 62. 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
  63. 63. まとめ Mesos は効率的にクラスタのリソースを管理 Docker 連携でお互いの弱点を補う フレームワークを載せ替えて、様々な処理 Marathon はフレームワークの1つ 63
  64. 64. 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. 65. 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. 66. 何か気になるところはありますか? 質疑応答 66
  67. 67. 参考資料  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

×