連載
» 2016年11月28日 05時00分 UPDATE

実際に検証済み!OSS徹底比較(7)Docker PaaS環境管理編:OSSのDocker PaaS環境管理ソフト 注目の5製品徹底比較 2016年版 (5/7)

[森元敏雄,TIS]

Apache Mesosのプロフィール

 Apache Mesosはカリフォルニア大学バークレー校でDockerのクラスタマネジャーとして開発されたツールであり、現在はApacheソフトウェア財団のプロジェクトとなっている。MesosはDocker環境のクラスタリング、オーバーレイネットワークの接続およびDockerコンテナ起動時のリソース割り当てなどの制御を行う。

 Mesosで構成されたDockerクラスタ環境上で動作する関連製品としてMarathonChronosが提供されている。Marathonはオーケストレーションツールであり、クラスタ内に必要数のDockerコンテナを分散配置し、起動・停止の制御を行う。Chronosはcronに近いジョブの実行制御ツールで、Dockerコンテナの起動だけでなく、OS上の実行モジュールやコマンドなどを指定された順序と時刻で実行する制御を行う。

 ライセンスはApache License 2.0で、開発にはGo言語が使用されている。2016年8月時点の最新バージョンは、Mesosが2016年7月6日にリリースされたVer 1.0.0、Marathonが、2016年7月13日にリリースされたVer 1.1.2、Chronosが2015年8月28日にリリースされたVer 2.4.0となる。

機能概要

 MesosはRHEL/CentOS/Ubuntuなどの各種Linux、Yosemite以降のMac OS X、Windows Server 2012以降、Windows 10、CoreOS、RancherOSなどのDocker専用OSでも使用することが可能である。基本的にはインストール用のバイナリパッケージを使用する方法が一般的であり、Linuxであれば、リポジトリを追加し、yumコマンドやaptコマンドでインストールを行う形となる。今回の評価はCentOS 7.2上にMesos、Marathon、Chronosをインストールする形で検証を行っている。最小構成はMesosマスター兼ノード×1台で構成できるが、今回は別途、ノード×1台を追加した2台構成で行っている。

 Mesosのインストール方法は公式ガイドにも記載されているが、クリエーションラインの技術ブログ「Mesosphere チュートリアル01」に、複数サーバでクラスタ構成を取る方法が詳しく記載されており非常に参考になる。クラスタ構成を取る上では、通信を行うポート数が多く、ファイアウォールの開放が不十分だと正常に起動しない。必要なポートは事前に確認しておくことが必須となる。検証に使用した環境の構築手順は、以下の弊社技術ブログで公開しているので参考にしていただきたい。

参考リンク:Apache Mesos上でMarathonとChronosを動かしてみた(Tech Sketch/TIS)

 ブラウザでMesosマスターの5050ポートにアクセスすると、Mesosのダッシュボードが表示される。ノード×2台が存在し、合計のリソース値がどれくらいあるか管理されていることが分かる。

 ブラウザでMesosマスターの8080ポートにアクセスするとMarathonのダッシュボードが表示される。

 Marathonで実行するコンテナの情報については、json形式のデータファイルを使い、以下のようなcurlコマンドで事前登録する。

$ curl -X POST -H "Content-Type: application/json" http://10.255.202.93:8080/v2/apps -d@marathon-api.json
{
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "libmesos/ubuntu"
    }
  },
  "id": "ubuntu-marathon",
  "instances": 1,
  "cpus": 0.5,
  "mem": 256,
  "uris": [],
  "cmd": "while sleep 10; do date -u +%T; done"
}

 「Create Application」で起動するコンテナと同時起動数を指定すると、ノード内でロードバランスされた状態でコンテナが起動する。Marathonから明示的に同時起動数を削減しない限り、コンテナがダウンして数が減少すると、空いているノードに対して、自動的にコンテナを追加、起動する。

 ブラウザでMesosマスターの4400ポートにアクセスすると、Chronosのダッシュボードが表示される。

 Chronosで実行するジョブの情報については、json形式のデータファイルを以下のようなcurlコマンドで事前に登録する。

$ curl -L -H "Content-Type: application/json" -X POST  http://10.255.202.93:4400/scheduler/iso8601 -d@chronos-api.json
{ 
 "schedule": "R/2016-08-22T09:45:00Z/PT2M",
 "name": "mariadbjob",
 "container": {
   "type": "DOCKER",
   "image": "mariadb"
 },
 "command": "docker run –name mariadb –e MYSQL_ROOT_PASSWORD=root –d mariadb"
}

 MySQL用のChronosのjsonファイルのサンプルなども公開されており、カスタマイズして使用してみたのだが、現状のChronosではcontainerにtype/image以外の設定を行うとエラーになってしまった。そのため、例としてはあまり良くないのだが、command行で直接docker runを実行する形で対処している。

 登録されたジョブは指定日時になると自動的にChronosから実行されるが、ジョブの管理画面から手動で強制実行することも可能である。

優位性と劣位性

優位性

  1. LinuxやDocker専用OSやMacやWindowsなど利用できる範囲が広い
  2. TwitterやAirbnbなどの大規模利用の実績もある
  3. 利用者も多く、日本語の文献や記事も多い
  4. 国内外のベンダーによるサポートが手厚い

劣位性

  1. ログなどがあまり出力されないため、問題発生時の追跡が少し難しい

利用シチュエーション

  1. パブリッククラウドを含めた大規模Dockerクラスタ環境の運用
  2. Dockerクラスタ環境でのバッチ処理の実行制御

 Marathonの開発も行っているMesosphere社がApache Mesosの機能を強化した商用版である「Mesosphere」を提供しており、有償サポートも行っている。さらにパブリッククラウドでの利用を簡単にするため、AWSMicrosoft Azure向けのサービスも提供されている。 国内でも前述のクリエーションラインをはじめとする各社から有償サポートを受けることが可能だ。

 初期構築が若干難しいことや、Marathon、Chronosを定義するためのjsonファイルの作成などに学習時間が必要なことはあるが、参考文献やインターネット上の情報も多いため、解決は難しくないだろう。世界的企業での導入事例、実績もあり、安定した環境の実現が期待できる製品である。

Copyright© 2016 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

Touch Barという新UIを得た「MacBook Pro」、プレゼント!

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。