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

Post on 15-Apr-2017

1.609 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

さくらの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!

top related