さくらの Docker ホスティングサービス Arukas での Mesos+Marathon の 活用について Mesos / Marathon Aug 4, 2016 Shuji Yamada ( 山田 修司 ) @uzyexe
さくらのDockerホスティングサービス Arukas でのMesos+Marathonの活用について
Mesos / Marathon
Aug4,2016ShujiYamada(山田修司)
@uzyexe
アジェンダ• Arukas のご紹介(5分)
• Mesos / Marathon の活用事例(15分)
• まとめ(5分)
SHUJI YAMADA• さくらインターネット9年目• エンジニア• 学生時代には鯖の缶詰などを製造• データセンター運用スタッフ• バックボーンネットワーク運用• さくらのクラウド運用• Docker ホスティング Arukas 担当 <- 今ココ
(山田 修司)
@uzyexe
What’s
Arukas?
(C) Copyright 1996-2016 SAKURA Internet Inc.
6
Run Dockerized Applications
450,000+ Dockerized Applications
7
1500 Users
1700 Users
1950+ Users
900 Users
2016/04 2015/05 2016/06 Today
Users
Growth
• Infrastructure as Code • Continuous Integration (CI/CD) • Secure Signing/Trust • +++
• Trusted Registries • Access Control • Policies • +++
• Container Management • Deploy and Scaling • Metrics/Monitoring/Logging • +++
Ship RunBuild
What’sContainer as a Service
Development Test Production
Version Control CI/CD Deploy
DockerfileDocker Image CloudOn-Premise
Registry
Development Test Production
Version Control CI/CD Deploy
DockerfileDocker Image
Registry
User Control Panel
Client
Compose
Container Hosting
Onpremises
Infrastructure
Orchestrator
or
or Volume
Netwroking
Logging
Monitoring
Integrations
Registry
Cloud
API
複数コンテナを管理Dockerコンテナを直感的に操作できるWEBコントロールパネルを使っ
て、複数台のコンテナでも簡単に管理することができます。
12
機動的なスケール簡単・高速なスケールイン・スケールアウト機能によって、
必要なリソースに応じて、オンデマンドで必要なリソースを提供します。
13
高品質な国産サービスコンテナ用に独自設計されたインフラと高品質なネットワーク回線を利用
して、Dockerコンテナをすぐに利用開始することができます。
14
LATEST RELEASES最新リリース
internationalization (i18n)Arukasのコントロールパネルが国際化に対応しました。
Webブラウザの言語設定が英語の場合、説明や項目などが英語表示されます。
API対応パブリックAPIを公開しました。ユーザーは、それぞれのオペレーションに応じたプ
ログラマブルなAPI制御を実現することができるようになりました。
CLI対応コマンドライン操作に対応するGolang製バイナリをリリースしました。コマンドラインからの迅速な操作や、Golangモジュールとしての再利用が可能になりました。
Terraform for Arukas
i18n
API Support
CLI Support
システム構成管理ツールTerraformに対応するArukasのサードパーティプラグインが有志によってリリースされました。Infrastructre as Codeが実現できます。
その他
Infrastructure
Operating System
Orchestrator/Container Scheduler
Container
Bins/Libs
App 1
Container
Bins/Libs
App 2
Container
Bins/Libs
App 3
APACHEZookeeper
Docker on Mesos with Marathon
Mesos• クラスタリソース管理フレームワーク。
• 2009年にカリフォルニア大学バークレー校で開発。
• Twitter、Airbnb、Apple、NETFLIX などで採用。
• Apache のトップレベルプロジェクトの一つ。
• コンテナの実行をサポート。 (Docker、AppC)
• Mesosphere、Microsoft が開発協力。
Mesos の構成要素• Mesos Master
• Mesos Slave
• Framework
Mesos Master• Mesos Slave の管理
• Mesos Frameworks の管理
• リソースの割当と最適配置
Mesos Slave• Mesos Master に従事
• Master から受信したコマンドを実行
• CPU と RAM 情報を Master に通知
• Executor を実行する
Framework• Scheduler + Executor
• Hadoop, Marathon, Chronos, etc...
• Scheduler として Master に Task の起動を指示
• Executor として Slave 上の Task を管理
Mesos Slave
MarathonExecutor
Mesos Master(leader)
TaskTask
Mesos Slave
ChronosExecutor
TaskTask
Mesos Slave
MarathonExecutor
ChronosExecutor
TaskTask TaskTask
MarathonScheduler
ChronosScheduler Zookeeper
quorum
Mesos Master(standby)
Mesos Master(standby)
Framework
Scheduler
Executor
Task
Task Status
Launch Status
Resource Offer
Launch Task
Task Status
Mesos
Mesos
Key Point100%
AuroraHadoop Marathon
100%
FREE FREEHadoop
AuroraMarathon
Mesos
Key Point
FREE
1 2 3
4 5 6
7 8 9
Mesos
Key Point
FREE
1 2 3
4 5 6
7 8 9
Marathon• Mesos Frameworks の一つ
• ハードウェア/ソフトウェア障害を自動処理
• Task (Application) の常時稼働を保証
• ヘルスチェック(TCP, HTTP, Command)
• スケジューリング機能
Marathon の機能• Docker Support
• ストレージボリューム対応 (local disk, EBS)
• スケールイン、スケールアウト
• Web UI
• Event Subscription
• REST API
What’s use
Mesos with Marathon for..
Mesos+Marathon• 大規模なアプリケーション環境向け構成
• リソースの最適配置
• コンテナで各種アプリの稼働に対応
• JSON API によるプログラマブルな管理が可能
• 非ベンダーロックイン
• マルチテナント対応 ※ Advanced ACL groups は DC/OS only...
Mesos Slave
MarathonExecutor
Mesos Master(leader)
TaskTask
Mesos Slave
MarathonExecutor
TaskTask
Zookeeperquorum
Mesos Master(standby)
Mesos Master(standby)
Mesos Slave
MarathonExecutor
TaskTask
...
MarathonSchedulerMarathonSchedulerMarathonScheduler
Mesos Slave
Docker Containerizer
Mesos Master(leader)
TaskContainer
Mesos Slave
Docker Containerizer
TaskContainer
Zookeeperquorum
Mesos Master(standby)
Mesos Master(standby)
Mesos Slave
Docker Containerizer
TaskContainer
...
MarathonSchedulerMarathonSchedulerMarathonScheduler
Marathon
JSON API Request
Container
libcontainer
exec driver (native)
Mesos Master
rootfs (overlayfs...)
other drivers...
docker daemondocker.sock
network driver
graph driver
Mesos/Marathon
Docker Engine
Registries(DockerHub)
Mesos Slave
Mesos/Marathon vs. Kubernetes?
Use Kubernetes for...• 簡単セットアップ
• シングルテナント向け
• 簡潔な構成向け
• Kubernetes 本体の機能に強く依存
• Container Only
Use Mesos/Marathon for...• Framework の追加に対応
• プログラマブルな機能追加に対応
• ヘビー級に汚れる見込みの環境向け(独自の機能拡張が可能)
Scalable, Resource-sharing, Fault-tolerant, Reliable
service discovery & load balancing tool
marathon-lb
Delete Domain
Mesos Slave
MarathonExecutor
Mesos Master(leader)
Zookeeperquorum
MarathonScheduler
marathon-lb
HAProxy
configure
Arukas API
TaskTask
Edit Domain
Add Domain
DNS Service(Route53, DNSimple...)
User Access
RequestJSON API
polling and
Auto-generate configure
HTTPS
JSON API
marathon-lb VHOST
AppAppAppAppApp
App or DB or PaaS or etc...
Load Balancing
Scale-OutInstances: 5
VHOST: https://*.example.com(Endpoint)
Blue-Green Deployment
Version 2
Version 1
Endpoint (marathon-lb) Apps
UpdateVersion 2
Version 1
AppsEndpoint (marathon-lb)
Mesos with Marathon
Monitoring
注意点• Zookeeper と Mesos Master は、5ノード以上でのクラスタリングがおすすめ。
• Mesos Slave ノードの iowait などに注意。
• クラスタ崩壊したときの復旧対策は必要。
悩みどころ• 各種アップデート作業
• アップデート後に動かなくなりやすい。
• 原因は様々・・・。
• 現状はアップデート職人芸の世界。
悩みどころ• リソース制御が完璧とはいえない。
• Mesos は具体的な使用中リソースを認識しない。(ざっくり決め打ちでリソースを予約することになる。)
• 各種リソースのオーバーコミット率はざっくり検討するしかない
• CPU使用率も cgroups でざっくり制限するしかない。
• Volume quota は zfs や btrfs なら Docker がサポート。
用途に応じた選択を• Mesos + Mesos Framework
• Kubernetes
• Docker Swarm
• OpenStack
• OpenStack on Kubernetes
• OpenStack on Kubernetes on OpenStack...
まとめ• 信頼性の高いクラスタ管理フレームワーク。
• どこでも動かせる。
• コンテナでも動く。
• まずは動かしてみよう。
でも、面倒なんでしょう?
https://github.com/uzyexe/mesos-marathon-demo
mesos/marathon 一発起動Docker Compose で、
Thank you!