docker ホスティングサービス 'arukas' での mesos + marathon...

55
さくらの Docker ホスティングサービス Arukas での Mesos+Marathon 活用について Mesos / Marathon Aug 4, 2016 Shuji Yamada ( 山田 修司 ) @uzyexe

Post on 15-Apr-2017

1.609 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

さくらのDockerホスティングサービス Arukas でのMesos+Marathonの活用について

Mesos / Marathon

Aug4,2016ShujiYamada(山田修司)

@uzyexe

Page 2: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

アジェンダ• Arukas のご紹介(5分)

• Mesos / Marathon の活用事例(15分)

• まとめ(5分)

Page 3: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

SHUJI YAMADA• さくらインターネット9年目• エンジニア• 学生時代には鯖の缶詰などを製造• データセンター運用スタッフ• バックボーンネットワーク運用• さくらのクラウド運用• Docker ホスティング Arukas 担当 <- 今ココ

(山田 修司)

@uzyexe

Page 4: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

What’s

Arukas?

Page 5: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

(C) Copyright 1996-2016 SAKURA Internet Inc.

Page 6: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

6

Run Dockerized Applications

450,000+ Dockerized Applications

Page 7: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

7

1500 Users

1700 Users

1950+ Users

900 Users

2016/04 2015/05 2016/06 Today

Users

Growth

Page 8: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

• 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

Page 9: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Development Test Production

Version Control CI/CD Deploy

DockerfileDocker Image CloudOn-Premise

Registry

Page 10: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Development Test Production

Version Control CI/CD Deploy

DockerfileDocker Image

Registry

Page 11: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

User Control Panel

Client

Compose

Container Hosting

Onpremises

Infrastructure

Orchestrator

or

or Volume

Netwroking

Logging

Monitoring

Integrations

Registry

Cloud

API

Page 12: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

複数コンテナを管理Dockerコンテナを直感的に操作できるWEBコントロールパネルを使っ

て、複数台のコンテナでも簡単に管理することができます。

12

Page 13: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

機動的なスケール簡単・高速なスケールイン・スケールアウト機能によって、

必要なリソースに応じて、オンデマンドで必要なリソースを提供します。

13

Page 14: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

高品質な国産サービスコンテナ用に独自設計されたインフラと高品質なネットワーク回線を利用

して、Dockerコンテナをすぐに利用開始することができます。

14

Page 15: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

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が実現できます。

その他

Page 16: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Infrastructure

Operating System

Orchestrator/Container Scheduler

Container

Bins/Libs

App 1

Container

Bins/Libs

App 2

Container

Bins/Libs

App 3

APACHEZookeeper

Page 17: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Docker on Mesos with Marathon

Page 18: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos• クラスタリソース管理フレームワーク。

• 2009年にカリフォルニア大学バークレー校で開発。

• Twitter、Airbnb、Apple、NETFLIX などで採用。

• Apache のトップレベルプロジェクトの一つ。

• コンテナの実行をサポート。 (Docker、AppC)

• Mesosphere、Microsoft が開発協力。

Page 19: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos の構成要素• Mesos Master

• Mesos Slave

• Framework

Page 20: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos Master• Mesos Slave の管理

• Mesos Frameworks の管理

• リソースの割当と最適配置

Page 21: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos Slave• Mesos Master に従事

• Master から受信したコマンドを実行

• CPU と RAM 情報を Master に通知

• Executor を実行する

Page 22: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Framework• Scheduler + Executor

• Hadoop, Marathon, Chronos, etc...

• Scheduler として Master に Task の起動を指示

• Executor として Slave 上の Task を管理

Page 23: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

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)

Page 24: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Framework

Scheduler

Executor

Task

Task Status

Launch Status

Resource Offer

Launch Task

Task Status

Mesos

Page 25: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos

Key Point100%

AuroraHadoop Marathon

100%

FREE FREEHadoop

AuroraMarathon

Page 26: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos

Key Point

FREE

1 2 3

4 5 6

7 8 9

Page 27: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos

Key Point

FREE

1 2 3

4 5 6

7 8 9

Page 28: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Page 29: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Marathon• Mesos Frameworks の一つ

• ハードウェア/ソフトウェア障害を自動処理

• Task (Application) の常時稼働を保証

• ヘルスチェック(TCP, HTTP, Command)

• スケジューリング機能

Page 30: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Marathon の機能• Docker Support

• ストレージボリューム対応 (local disk, EBS)

• スケールイン、スケールアウト

• Web UI

• Event Subscription

• REST API

Page 31: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

What’s use

Mesos with Marathon for..

Page 32: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Page 33: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos+Marathon• 大規模なアプリケーション環境向け構成

• リソースの最適配置

• コンテナで各種アプリの稼働に対応

• JSON API によるプログラマブルな管理が可能

• 非ベンダーロックイン

• マルチテナント対応 ※ Advanced ACL groups は DC/OS only...

Page 34: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos Slave

MarathonExecutor

Mesos Master(leader)

TaskTask

Mesos Slave

MarathonExecutor

TaskTask

Zookeeperquorum

Mesos Master(standby)

Mesos Master(standby)

Mesos Slave

MarathonExecutor

TaskTask

...

MarathonSchedulerMarathonSchedulerMarathonScheduler

Page 35: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

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

Page 36: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

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

Page 37: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos/Marathon vs. Kubernetes?

Page 38: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Use Kubernetes for...• 簡単セットアップ

• シングルテナント向け

• 簡潔な構成向け

• Kubernetes 本体の機能に強く依存

• Container Only

Page 39: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Use Mesos/Marathon for...• Framework の追加に対応

• プログラマブルな機能追加に対応

• ヘビー級に汚れる見込みの環境向け(独自の機能拡張が可能)

Page 40: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Scalable, Resource-sharing, Fault-tolerant, Reliable

Page 41: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

service discovery & load balancing tool

marathon-lb

Page 42: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

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

Page 43: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

marathon-lb VHOST

AppAppAppAppApp

App or DB or PaaS or etc...

Load Balancing

Scale-OutInstances: 5

VHOST: https://*.example.com(Endpoint)

Page 44: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Blue-Green Deployment

Version 2

Version 1

Endpoint (marathon-lb) Apps

UpdateVersion 2

Version 1

AppsEndpoint (marathon-lb)

Page 45: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Mesos with Marathon

Monitoring

Page 46: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Page 47: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Page 48: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

注意点• Zookeeper と Mesos Master は、5ノード以上でのクラスタリングがおすすめ。

• Mesos Slave ノードの iowait などに注意。

• クラスタ崩壊したときの復旧対策は必要。

Page 49: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

悩みどころ• 各種アップデート作業

• アップデート後に動かなくなりやすい。

• 原因は様々・・・。

• 現状はアップデート職人芸の世界。

Page 50: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

悩みどころ• リソース制御が完璧とはいえない。

• Mesos は具体的な使用中リソースを認識しない。(ざっくり決め打ちでリソースを予約することになる。)

• 各種リソースのオーバーコミット率はざっくり検討するしかない

• CPU使用率も cgroups でざっくり制限するしかない。

• Volume quota は zfs や btrfs なら Docker がサポート。

Page 51: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

用途に応じた選択を• Mesos + Mesos Framework

• Kubernetes

• Docker Swarm

• OpenStack

• OpenStack on Kubernetes

• OpenStack on Kubernetes on OpenStack...

Page 52: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

まとめ• 信頼性の高いクラスタ管理フレームワーク。

• どこでも動かせる。

• コンテナでも動く。

• まずは動かしてみよう。

Page 53: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

でも、面倒なんでしょう?

Page 54: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

https://github.com/uzyexe/mesos-marathon-demo

mesos/marathon 一発起動Docker Compose で、

Page 55: Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)

Thank you!