SlideShare a Scribd company logo
Masahito Zembutsu @zembutsu
Technology Evangelist; Creationline , Inc.
Tokyo, Feb 28, 2015
Open Source Conference 2015 Tokyo Spring
Open Cloud Campus #osc15tk
Apache Aurora の始めかた
Apache Aurora introduction and tutorial
Apache Aurora の始めかた
2 / 46
今日の内容
• なぜ Apache Aurora なのか?
• Apache Aurora とは?
• チュートリアルを試すには?
• まとめ
Topics
Auroraを実際に使うときの
日本語の情報が少ないため、
自分が分からなかった所を
整理してみました。
Apache Aurora の始めかた
3 / 46
まとめ
• AuroraはApache Mesos上で動くフレームワーク
Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化
• “Job” 単位で ”Task” “Process”を管理する概念
ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定
• コードでサービスやインフラを定義
設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行
Conclusion
バッチだけでなくサービスや
cronで実行するコマンドを
「Job」と定義して使います。
どうして Aurora なのか?
Motivation
1
Apache Aurora の始めかた
5 / 46
稼働率 =
MTBF
MTBF+MTTR
平均故障間隔
Meam Time Between Failures
平均修理時間
Meam Time to Repaire
Availability
MTBFよりMTTRを減らす
というアプローチが最近の
オーケストレーションかな?
障害対応を楽にする自動化
(`・ω・́)
自分にとって自動化は仕事を
楽にしたいというポジティブ
なものよりも・・・
もうあんな思いはイヤだ!
(‘A`)
障害で厭な気分をしたくない
ネガティブな所が根っこに…
何とか良いものがないか?
というのが最近の興味です。
https://blog.twitter.com/2015/all-about-apache-aurora
そんな折 witter 社ブログで
Aurora を知ったのが契機で
サービスの安定稼働のために
使えるのでは?と考えます。
Dockerに対応したことも
興味を惹かれました。
動機不純です。
Apache Aurora の始めかた
9 / 46
投稿の要点
• 一万台規模に数百人のエンジニアが毎日デプロイ
自動化は極めて重要な課題
• サービスの維持には更新・便利さ・障害と直面
クラスタを安定稼働させるシステムとして、Apache Mesos をクラスタ監視に使う
• Twitter 社で 2010 年から開発
Bill Farmer 氏が開発開始。2013年にはオープンソースとして公開
• V.0.7.0 は Docker 対応
Apache Aurora とは?
Introduction
2
Apache Aurora の始めかた
11 / 46
Apache Aurora
• http://aurora.incubator.apache.org/
オープンソースの開発コミュニティ、Apache License v2.0
• Apache Mesos 上で動作するスケジューラ
“Apache Aurora is a Mesos framework for long-running services and cron jobs.”
• “Job”をPython形式のファイルで管理
同じ処理の繰り返し、コードで管理できる
Apache Aurora の始めかた
12 / 46
Apache Mesos とは?
• 分散システムの管理 kernel という位置付け
APIでリソース管理やスケジューリングを行い、アプリケーションを動かす
• リソースを抽象化
CPU、メモリ、ストレージ
• 耐障害性、スケーラビリティを備える
Zookeeper で Master-Slave の冗長化
http://mesos.apache.org/
Apache Aurora の始めかた
13 / 46
例えば、複数の物理・仮想サーバがあったとして
Apache Aurora の始めかた
14 / 46
アプリケーション A アプリケーション B
アプリケーション毎に、サーバの役割は固定されがち
Apache Aurora の始めかた
15 / 46
Apache Mesos
アプリケーション A アプリケーション B
それを、Mesos は必要とするリソースを抽象化します
Apache Aurora の始めかた
16 / 46
アプリケーション A アプリケーション B
この Mesos の仕組みを利用するのが Aurora
Zookeeper が
Mesos Master
クラスタを管理Mesos
Master
スタンバイ
Master
スタンバイ
Master
Mesos
Slave
TaskA
Mesos
Slave
TaskA
Mesos
Slave
TaskB
Mesos
Slave
TaskB
Apache Aurora の始めかた
17 / 46
Job
Task 1 Task 2 Task N
Process 1,1
Process 1,2
Process 1,M
…
…
Process 2,1
Process 2,2
Process 2,M
…
Process N,1
Process N,2
Process N,M
…
Aurora
N個のTaskを管理
Mesos
M個のProcessを管理
Thermos
ジョブ、とは?
Apache Aurora の始めかた
19 / 46
Job
Task Process
Process
Task Process
Process
ジョブはこのような概念です
Apache Aurora の始めかた
20 / 46
Job『Webサーバ運用』
Task:環境構築
Task:本番稼働
Task:削除
Process: wgetでコードを取得
Process: gunzipで展開
Process: 設定ファイルの配置
Process: デーモンとして起動(ループ)
Process: プロセス停止
Process: ログファイル待避
Process: 不要ファイル削除
具体的な利用シーン例
Apache Aurora の始めかた
21 / 46
Job『カレー大作戦』
Task:資材調達
Task:調理
Task:食す
Process: スーパーに行く
Process: 食材を買う、スパイスを買う
Process: お金を払う
Process: 家に持ち帰る
Process: 肉を炒める
Process: 野菜を切る
Process: 煮込む
Process: 御飯を炊く
Process: スパイスを調整する
Process: 食器を用意
Process: 盛り付ける
Process: ニコニコ顔で完食する
Process: 片付ける
カレーに例えると・・・
Apache Aurora の始めかた
22 / 46
他のフレームワークと比較
Apache Aurora Marathon Choronos
Job処理 ○ ○ ×
Cron風Job処理 ○ × ○
コードでの管理 ○ × ×
GUI管理画面 △ ( モニタのみ ) ○ ○
API ○ ○ ○
JSON REST I/F × ○ ○
開発言語 Java Scala Scala
URL http://aurora.incubator.apache.org/ https://mesosphere.github.io/marathon/ https://github.com/mesos/chronos
Apache Aurora を試すには?
Let’s start tutorial
3
Apache Aurora の始めかた
24 / 46
動作理解に便利なチュートリアル
• http://aurora.incubator.apache.org/documentation/latest/tutorial/
• 例:“Hello world” を実行するスケジューラ
Aurora はジョブ、Mesos はタスク、Themos はプロセスを管理するのを学ぶ
• 環境構築に Vagrant を使用
ローカル PC の VirtualBox 上で、実行環境を自動構築
• 任意のジョブ・タスク・プロセスを生成可
Apache Mesos・Apache Aurora は動作済みなので、動作確認に専念
Apache Aurora の始めかた
25 / 46
OS ( Windows / MacOS X )
Oracle VM VirtualBox
Vagrant
git, vagrant up
操作
Aurora 動作環境の仮想マシン
vagrant ssh
ログイン
Mesos
Master
Mesos
Slave
Observer Scheduler
http://192.168.33.7:5050 http://192.168.33.7:5051 http://192.168.33.7:8081 http://192.168.33.7:1338
ソースコード
仮想マシンイメージ
.aurora
Apache Aurora の始めかた
26 / 46
Tutorial 環境構築手順
1. VagrantとVirtualBox のセットアップ
https://www.vagrantup.com/downloads.html
2. レポジトリ取得
3. Vagrantd でクラスタ起動、ログイン
$ git clone http://git.apache.org/incubator-aurora.git
$ cd incubator-aurora
$ vagrant up
$ vagrant ssh
非常に簡単です。Vagrantで
自動的に Apache Mesos や
Aurora 環境を構築します。
Apache Aurora の始めかた
27 / 46
Scheduler - http://192.168.33.7:8081 Observer - http://192.168.33.7:1338
Mesos Master - http://192.168.33.7:5050 Mesos Slave - http://192.168.33.7:5051
Apache Mesos を含む各種
インターフェースに対して
アクセスできます。
Apache Aurora の始めかた
28 / 46
ジョブ作成
• ジョブとして実行する “hello_world.py” 作成
import sys
import time
def main(argv):
SLEEP_DELAY = 10
# Python ninjas - ignore this blatant bug.
for i in xrang(100):
print("Hello world! The time is now: %s. Sleeping for %d secs" % (
time.asctime(), SLEEP_DELAY))
sys.stdout.flush()
time.sleep(SLEEP_DELAY)
if __name__ == "__main__":
main(sys.argv)
ファイルを作成します。
公式チュートリアルはこの
Python ですが他のものでも
大丈夫です。
Apache Aurora の始めかた
29 / 46
Aurora 設定用ファイル
• “hello_world.aurora”
pkg_path = '/vagrant/hello_world.py'
import hashlib
with open(pkg_path, 'rb') as f:
pkg_checksum = hashlib.md5(f.read()).hexdigest()
install = Process(
name = 'fetch_package',
cmdline = 'cp %s . && echo %s && chmod +x hello_world.py' % (pkg_path, pkg_checksum))
hello_world = Process(
name = 'hello_world',
cmdline = 'python hello_world.py')
hello_world_task = SequentialTask(
processes = [install, hello_world],
resources = Resources(cpu = 1, ram = 1*MB, disk=8*MB))
jobs = [
Service(cluster = 'devcluster',
environment = 'devel',
role = 'www-data',
name = 'hello_world',
task = hello_world_task)
]
拡張子は「.aurora」
内部の記述方法は Phthon
形式ですが、言語を知らなく
ても記述そのものは単純です。
Apache Aurora の始めかた
30 / 46
Aurora 設定
• “hello_world.aurora”
pkg_path = '/vagrant/hello_world.py'
import hashlib
with open(pkg_path, 'rb') as f:
pkg_checksum = hashlib.md5(f.read()).hexdigest()
install = Process(
name = 'fetch_package',
cmdline = 'cp %s . && echo %s && chmod +x hello_world.py' % (pkg_path, pkg_checksum))
hello_world = Process(
name = 'hello_world',
cmdline = 'python hello_world.py')
hello_world_task = SequentialTask(
processes = [install, hello_world],
resources = Resources(cpu = 1, ram = 1*MB, disk=8*MB))
jobs = [
Service(cluster = 'devcluster',
environment = 'devel',
role = 'www-data',
name = 'hello_world',
task = hello_world_task)
]
Apache Aurora の始めかた
31 / 46
はじめてのジョブ実行
• “aurora” コマンドで実行
vagrant@aurora:~$ aurora job create devcluster/www-data/devel/hello_world /vagrant/hello_world.aurora
INFO] Creating job hello_world
INFO]
INFO] Checking status of devcluster/www-data/devel/hello_world
Job create succeeded: job url=http://aurora.local:8081/scheduler/www-data/devel/hello_world
操作は CLI で実行します。
Apache Aurora の始めかた
32 / 46
http://192.168.33.7:8081/scheduler
ジョブがスケジューラに対し
登録されたことがわかります
Apache Aurora の始めかた
33 / 46
クリックすると,ジョブ詳細
確認ができます
Apache Aurora の始めかた
34 / 46
ですが、このチュートリアル
失敗します。。。
(敢えて失敗する流れです)
Apache Aurora の始めかた
35 / 46
画面を辿ると、標準エラーの
内容が確認できます。
純粋に文法上の間違いです。
Apache Aurora の始めかた
36 / 46
もう一度 hello_word.py を
編集して、「xrange」と
正しい記述にします。
Apache Aurora の始めかた
37 / 46
それから「aurora job
update devcluster/www-
data/devel/hello_world
/vagrant/hello_world.aur
ora」でジョブを更新すると
正常に「active」なタスクに
なります。
Apache Aurora の始めかた
38 / 46
Apache Aurora の始めかた
39 / 46
標準出力も、正常な結果が
このように表示されます。
Apache Aurora の始めかた
40 / 46
ポイント
• Auroraは、プレームワークの実行環境を提供
設定ファイルのなかで「Job」「Task」「Process」を定義
• 「Job」で「Task」を抽象化
• 「Task」は「Process」の抽象化
Apache Aurora の始めかた
41 / 46
Process Object の定義
• Themos システムでの挙動
bashで実行可能な形式
• 属性
➡ ‘name’ … Unix ファイル名と同じルール、重複不可
➡ ‘cmdline’… bashコマンド
➡ ‘max_failures’… 最大失敗回数 defaut:1
➡ ‘daemon’…Trueはそのまま実行、default:False
➡ ‘ephemeral’…プロセス再実行までの時間、default:15s
➡ ‘final’…最後に実行されるProcess、default:False
Apache Aurora の始めかた
42 / 46
Task オブジェクトの定義
• Task で定義した内容が Mesos で処理
• 重要なkey
➡ ‘name’ … タスク名称
➡ ‘processes’…タスクで実行されるプロセス一覧
➡ ‘resources’ … 計算資源
• cpu – 浮動小数、タスクが必要とするコア数
• ram – タスクが必要な RAM バイト数
• disk – タスクが必要とするディスクバイト数
Apache Aurora の始めかた
43 / 46
次に読むべき文章
• Configuration Tutorial
➡ http://aurora.incubator.apache.org/documentation/latest/configuration-tutorial/
• Aurora User Guide
➡ http://aurora.incubator.apache.org/documentation/latest/user-guide/
まとめ
conclusion
4
Apache Aurora の始めかた
45 / 46
まとめ
• AuroraはApache Mesos上で動くフレームワーク
Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化
• “Job” 単位で ”Task” “Process”を管理する概念
ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定
• コードでサービスやインフラを定義
設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行
Conclusion
あとはチュートリアルを試す
だけならとても簡単です。
Apache Aurora の始めかた
46 / 46
参考資料
• All about Apache Aurora | Twitter Blogs
➡ https://blog.twitter.com/2015/all-about-apache-aurora
• User Guide
➡ http://aurora.incubator.apache.org/documentation/latest/user-guide/
• Introduction to Apache Mesos
➡ http://www.slideshare.net/charmalloc/introductionapachemesosjstein20140714
• Datacenter Computing with Apache Mesos - BigData DC
➡ http://www.slideshare.net/pacoid/datacenter-computing-with-apache-mesos

More Related Content

What's hot (20)

DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
Shigeru Tatsuta
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
NTT DATA Technology & Innovation
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
 
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
Takuya Takaseki
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
コミュニティと人の縁
コミュニティと人の縁コミュニティと人の縁
コミュニティと人の縁
Takuya Okamoto
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
 
Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介
ThinkIT_impress
 
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」
Recruit Technologies
 
Git超入門_座学編.pdf
Git超入門_座学編.pdfGit超入門_座学編.pdf
Git超入門_座学編.pdf
憲昭 村田
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
Akihiro Kuwano
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Koichiro Matsuoka
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
Shigeru Tatsuta
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
NTT DATA Technology & Innovation
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
Takuya Takaseki
 
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
コミュニティと人の縁
コミュニティと人の縁コミュニティと人の縁
コミュニティと人の縁
Takuya Okamoto
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
 
Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介Docker国内外本番環境サービス事例のご紹介
Docker国内外本番環境サービス事例のご紹介
ThinkIT_impress
 
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」
Recruit Technologies
 
Git超入門_座学編.pdf
Git超入門_座学編.pdfGit超入門_座学編.pdf
Git超入門_座学編.pdf
憲昭 村田
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
Akihiro Kuwano
 

Viewers also liked (20)

Docker on Mesos with OpenVNet
Docker on Mesos with OpenVNetDocker on Mesos with OpenVNet
Docker on Mesos with OpenVNet
skipping classes
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
Masahito Zembutsu
 
IBM Containers の紹介
IBM Containers の紹介IBM Containers の紹介
IBM Containers の紹介
Hideaki Tokida
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
 
Rancher.ioを試してみる
Rancher.ioを試してみるRancher.ioを試してみる
Rancher.ioを試してみる
Takaaki Fukai
 
Dockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんかDockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんか
axsh co., LTD.
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
Nobuyuki Matsui
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Etsuji Nakai
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
 
Kubernetesを触ってみた
Kubernetesを触ってみたKubernetesを触ってみた
Kubernetesを触ってみた
Kazuto Kusama
 
俺とKubernetes
俺とKubernetes俺とKubernetes
俺とKubernetes
Masayuki KaToH
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
y_taka_23
 
Contiv on vagrant_20160224
Contiv on vagrant_20160224Contiv on vagrant_20160224
Contiv on vagrant_20160224
Takao Setaka
 
Mesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラMesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラ
Mitsutoshi Kiuchi
 
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
R3 institute
 
2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese
Konrad Malawski
 
In-Stream Processing Service Blueprint, Reference architecture for real-time ...
In-Stream Processing Service Blueprint, Reference architecture for real-time ...In-Stream Processing Service Blueprint, Reference architecture for real-time ...
In-Stream Processing Service Blueprint, Reference architecture for real-time ...
Grid Dynamics
 
より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術
なおき おさだ
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
 
04 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r00104 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r001
cyberblack28 Ichikawa
 
Docker on Mesos with OpenVNet
Docker on Mesos with OpenVNetDocker on Mesos with OpenVNet
Docker on Mesos with OpenVNet
skipping classes
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
Masahito Zembutsu
 
IBM Containers の紹介
IBM Containers の紹介IBM Containers の紹介
IBM Containers の紹介
Hideaki Tokida
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
 
Rancher.ioを試してみる
Rancher.ioを試してみるRancher.ioを試してみる
Rancher.ioを試してみる
Takaaki Fukai
 
Dockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんかDockerの改修を一緒にやりませんか
Dockerの改修を一緒にやりませんか
axsh co., LTD.
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
Nobuyuki Matsui
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Etsuji Nakai
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
Masahito Zembutsu
 
Kubernetesを触ってみた
Kubernetesを触ってみたKubernetesを触ってみた
Kubernetesを触ってみた
Kazuto Kusama
 
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B机上の Kubernetes -  形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
y_taka_23
 
Contiv on vagrant_20160224
Contiv on vagrant_20160224Contiv on vagrant_20160224
Contiv on vagrant_20160224
Takao Setaka
 
Mesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラMesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラ
Mitsutoshi Kiuchi
 
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
kintone devCamp 2016 Spring 『アプリ開発なんて怖くない!gusukuでお手軽kintoneアプリ管理+α♪』
R3 institute
 
2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese2014 akka-streams-tokyo-japanese
2014 akka-streams-tokyo-japanese
Konrad Malawski
 
In-Stream Processing Service Blueprint, Reference architecture for real-time ...
In-Stream Processing Service Blueprint, Reference architecture for real-time ...In-Stream Processing Service Blueprint, Reference architecture for real-time ...
In-Stream Processing Service Blueprint, Reference architecture for real-time ...
Grid Dynamics
 
より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術より効果的に業務改善するためのOffice 365活用術
より効果的に業務改善するためのOffice 365活用術
なおき おさだ
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
 
04 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r00104 コンテナ管理ツール比較 public_r001
04 コンテナ管理ツール比較 public_r001
cyberblack28 Ichikawa
 
Ad

More from Masahito Zembutsu (20)

忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
Masahito Zembutsu
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA
Masahito Zembutsu
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
 
さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19
Masahito Zembutsu
 
Docker Chronicle 2021.09
Docker Chronicle  2021.09Docker Chronicle  2021.09
Docker Chronicle 2021.09
Masahito Zembutsu
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
Masahito Zembutsu
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話
Masahito Zembutsu
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」
Masahito Zembutsu
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へ
Masahito Zembutsu
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
Masahito Zembutsu
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編
Masahito Zembutsu
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
Jitsi Meetとは?
Jitsi Meetとは?Jitsi Meetとは?
Jitsi Meetとは?
Masahito Zembutsu
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技
Masahito Zembutsu
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしよう
Masahito Zembutsu
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os
Masahito Zembutsu
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
Masahito Zembutsu
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA
Masahito Zembutsu
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
Masahito Zembutsu
 
さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19さくらインターネットのコミュニティ with COVID-19
さくらインターネットのコミュニティ with COVID-19
Masahito Zembutsu
 
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
ブックトーク@CROSS ~SF編~ 発表資料「攻殻機動隊」「導きの星」
Masahito Zembutsu
 
インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話インターネットでウェブサイトを表示している裏側の話
インターネットでウェブサイトを表示している裏側の話
Masahito Zembutsu
 
3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」3分で分かる「プログラミング教育・情報教育」
3分で分かる「プログラミング教育・情報教育」
Masahito Zembutsu
 
ようこそオンラインの展示会場へ
ようこそオンラインの展示会場へようこそオンラインの展示会場へ
ようこそオンラインの展示会場へ
Masahito Zembutsu
 
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
小学校プログラミング教育に対する企業の取り組みと課題 #KOF2020
Masahito Zembutsu
 
オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編オンライン発表で気を付けているポイント~姿勢編
オンライン発表で気を付けているポイント~姿勢編
Masahito Zembutsu
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技
Masahito Zembutsu
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
クリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしようクリスマスに工場(Factorio)を作るゲームをしよう
クリスマスに工場(Factorio)を作るゲームをしよう
Masahito Zembutsu
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os2020年から始まる小学校プログラミング教育の話 #osc19os
2020年から始まる小学校プログラミング教育の話 #osc19os
Masahito Zembutsu
 
Ad

Apache Auroraの始めかた

  • 1. Masahito Zembutsu @zembutsu Technology Evangelist; Creationline , Inc. Tokyo, Feb 28, 2015 Open Source Conference 2015 Tokyo Spring Open Cloud Campus #osc15tk Apache Aurora の始めかた Apache Aurora introduction and tutorial
  • 2. Apache Aurora の始めかた 2 / 46 今日の内容 • なぜ Apache Aurora なのか? • Apache Aurora とは? • チュートリアルを試すには? • まとめ Topics Auroraを実際に使うときの 日本語の情報が少ないため、 自分が分からなかった所を 整理してみました。
  • 3. Apache Aurora の始めかた 3 / 46 まとめ • AuroraはApache Mesos上で動くフレームワーク Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化 • “Job” 単位で ”Task” “Process”を管理する概念 ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定 • コードでサービスやインフラを定義 設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行 Conclusion バッチだけでなくサービスや cronで実行するコマンドを 「Job」と定義して使います。
  • 5. Apache Aurora の始めかた 5 / 46 稼働率 = MTBF MTBF+MTTR 平均故障間隔 Meam Time Between Failures 平均修理時間 Meam Time to Repaire Availability MTBFよりMTTRを減らす というアプローチが最近の オーケストレーションかな?
  • 8. https://blog.twitter.com/2015/all-about-apache-aurora そんな折 witter 社ブログで Aurora を知ったのが契機で サービスの安定稼働のために 使えるのでは?と考えます。 Dockerに対応したことも 興味を惹かれました。 動機不純です。
  • 9. Apache Aurora の始めかた 9 / 46 投稿の要点 • 一万台規模に数百人のエンジニアが毎日デプロイ 自動化は極めて重要な課題 • サービスの維持には更新・便利さ・障害と直面 クラスタを安定稼働させるシステムとして、Apache Mesos をクラスタ監視に使う • Twitter 社で 2010 年から開発 Bill Farmer 氏が開発開始。2013年にはオープンソースとして公開 • V.0.7.0 は Docker 対応
  • 11. Apache Aurora の始めかた 11 / 46 Apache Aurora • http://aurora.incubator.apache.org/ オープンソースの開発コミュニティ、Apache License v2.0 • Apache Mesos 上で動作するスケジューラ “Apache Aurora is a Mesos framework for long-running services and cron jobs.” • “Job”をPython形式のファイルで管理 同じ処理の繰り返し、コードで管理できる
  • 12. Apache Aurora の始めかた 12 / 46 Apache Mesos とは? • 分散システムの管理 kernel という位置付け APIでリソース管理やスケジューリングを行い、アプリケーションを動かす • リソースを抽象化 CPU、メモリ、ストレージ • 耐障害性、スケーラビリティを備える Zookeeper で Master-Slave の冗長化 http://mesos.apache.org/
  • 13. Apache Aurora の始めかた 13 / 46 例えば、複数の物理・仮想サーバがあったとして
  • 14. Apache Aurora の始めかた 14 / 46 アプリケーション A アプリケーション B アプリケーション毎に、サーバの役割は固定されがち
  • 15. Apache Aurora の始めかた 15 / 46 Apache Mesos アプリケーション A アプリケーション B それを、Mesos は必要とするリソースを抽象化します
  • 16. Apache Aurora の始めかた 16 / 46 アプリケーション A アプリケーション B この Mesos の仕組みを利用するのが Aurora Zookeeper が Mesos Master クラスタを管理Mesos Master スタンバイ Master スタンバイ Master Mesos Slave TaskA Mesos Slave TaskA Mesos Slave TaskB Mesos Slave TaskB
  • 17. Apache Aurora の始めかた 17 / 46 Job Task 1 Task 2 Task N Process 1,1 Process 1,2 Process 1,M … … Process 2,1 Process 2,2 Process 2,M … Process N,1 Process N,2 Process N,M … Aurora N個のTaskを管理 Mesos M個のProcessを管理 Thermos
  • 19. Apache Aurora の始めかた 19 / 46 Job Task Process Process Task Process Process ジョブはこのような概念です
  • 20. Apache Aurora の始めかた 20 / 46 Job『Webサーバ運用』 Task:環境構築 Task:本番稼働 Task:削除 Process: wgetでコードを取得 Process: gunzipで展開 Process: 設定ファイルの配置 Process: デーモンとして起動(ループ) Process: プロセス停止 Process: ログファイル待避 Process: 不要ファイル削除 具体的な利用シーン例
  • 21. Apache Aurora の始めかた 21 / 46 Job『カレー大作戦』 Task:資材調達 Task:調理 Task:食す Process: スーパーに行く Process: 食材を買う、スパイスを買う Process: お金を払う Process: 家に持ち帰る Process: 肉を炒める Process: 野菜を切る Process: 煮込む Process: 御飯を炊く Process: スパイスを調整する Process: 食器を用意 Process: 盛り付ける Process: ニコニコ顔で完食する Process: 片付ける カレーに例えると・・・
  • 22. Apache Aurora の始めかた 22 / 46 他のフレームワークと比較 Apache Aurora Marathon Choronos Job処理 ○ ○ × Cron風Job処理 ○ × ○ コードでの管理 ○ × × GUI管理画面 △ ( モニタのみ ) ○ ○ API ○ ○ ○ JSON REST I/F × ○ ○ 開発言語 Java Scala Scala URL http://aurora.incubator.apache.org/ https://mesosphere.github.io/marathon/ https://github.com/mesos/chronos
  • 24. Apache Aurora の始めかた 24 / 46 動作理解に便利なチュートリアル • http://aurora.incubator.apache.org/documentation/latest/tutorial/ • 例:“Hello world” を実行するスケジューラ Aurora はジョブ、Mesos はタスク、Themos はプロセスを管理するのを学ぶ • 環境構築に Vagrant を使用 ローカル PC の VirtualBox 上で、実行環境を自動構築 • 任意のジョブ・タスク・プロセスを生成可 Apache Mesos・Apache Aurora は動作済みなので、動作確認に専念
  • 25. Apache Aurora の始めかた 25 / 46 OS ( Windows / MacOS X ) Oracle VM VirtualBox Vagrant git, vagrant up 操作 Aurora 動作環境の仮想マシン vagrant ssh ログイン Mesos Master Mesos Slave Observer Scheduler http://192.168.33.7:5050 http://192.168.33.7:5051 http://192.168.33.7:8081 http://192.168.33.7:1338 ソースコード 仮想マシンイメージ .aurora
  • 26. Apache Aurora の始めかた 26 / 46 Tutorial 環境構築手順 1. VagrantとVirtualBox のセットアップ https://www.vagrantup.com/downloads.html 2. レポジトリ取得 3. Vagrantd でクラスタ起動、ログイン $ git clone http://git.apache.org/incubator-aurora.git $ cd incubator-aurora $ vagrant up $ vagrant ssh 非常に簡単です。Vagrantで 自動的に Apache Mesos や Aurora 環境を構築します。
  • 27. Apache Aurora の始めかた 27 / 46 Scheduler - http://192.168.33.7:8081 Observer - http://192.168.33.7:1338 Mesos Master - http://192.168.33.7:5050 Mesos Slave - http://192.168.33.7:5051 Apache Mesos を含む各種 インターフェースに対して アクセスできます。
  • 28. Apache Aurora の始めかた 28 / 46 ジョブ作成 • ジョブとして実行する “hello_world.py” 作成 import sys import time def main(argv): SLEEP_DELAY = 10 # Python ninjas - ignore this blatant bug. for i in xrang(100): print("Hello world! The time is now: %s. Sleeping for %d secs" % ( time.asctime(), SLEEP_DELAY)) sys.stdout.flush() time.sleep(SLEEP_DELAY) if __name__ == "__main__": main(sys.argv) ファイルを作成します。 公式チュートリアルはこの Python ですが他のものでも 大丈夫です。
  • 29. Apache Aurora の始めかた 29 / 46 Aurora 設定用ファイル • “hello_world.aurora” pkg_path = '/vagrant/hello_world.py' import hashlib with open(pkg_path, 'rb') as f: pkg_checksum = hashlib.md5(f.read()).hexdigest() install = Process( name = 'fetch_package', cmdline = 'cp %s . && echo %s && chmod +x hello_world.py' % (pkg_path, pkg_checksum)) hello_world = Process( name = 'hello_world', cmdline = 'python hello_world.py') hello_world_task = SequentialTask( processes = [install, hello_world], resources = Resources(cpu = 1, ram = 1*MB, disk=8*MB)) jobs = [ Service(cluster = 'devcluster', environment = 'devel', role = 'www-data', name = 'hello_world', task = hello_world_task) ] 拡張子は「.aurora」 内部の記述方法は Phthon 形式ですが、言語を知らなく ても記述そのものは単純です。
  • 30. Apache Aurora の始めかた 30 / 46 Aurora 設定 • “hello_world.aurora” pkg_path = '/vagrant/hello_world.py' import hashlib with open(pkg_path, 'rb') as f: pkg_checksum = hashlib.md5(f.read()).hexdigest() install = Process( name = 'fetch_package', cmdline = 'cp %s . && echo %s && chmod +x hello_world.py' % (pkg_path, pkg_checksum)) hello_world = Process( name = 'hello_world', cmdline = 'python hello_world.py') hello_world_task = SequentialTask( processes = [install, hello_world], resources = Resources(cpu = 1, ram = 1*MB, disk=8*MB)) jobs = [ Service(cluster = 'devcluster', environment = 'devel', role = 'www-data', name = 'hello_world', task = hello_world_task) ]
  • 31. Apache Aurora の始めかた 31 / 46 はじめてのジョブ実行 • “aurora” コマンドで実行 vagrant@aurora:~$ aurora job create devcluster/www-data/devel/hello_world /vagrant/hello_world.aurora INFO] Creating job hello_world INFO] INFO] Checking status of devcluster/www-data/devel/hello_world Job create succeeded: job url=http://aurora.local:8081/scheduler/www-data/devel/hello_world 操作は CLI で実行します。
  • 32. Apache Aurora の始めかた 32 / 46 http://192.168.33.7:8081/scheduler ジョブがスケジューラに対し 登録されたことがわかります
  • 33. Apache Aurora の始めかた 33 / 46 クリックすると,ジョブ詳細 確認ができます
  • 34. Apache Aurora の始めかた 34 / 46 ですが、このチュートリアル 失敗します。。。 (敢えて失敗する流れです)
  • 35. Apache Aurora の始めかた 35 / 46 画面を辿ると、標準エラーの 内容が確認できます。 純粋に文法上の間違いです。
  • 36. Apache Aurora の始めかた 36 / 46 もう一度 hello_word.py を 編集して、「xrange」と 正しい記述にします。
  • 37. Apache Aurora の始めかた 37 / 46 それから「aurora job update devcluster/www- data/devel/hello_world /vagrant/hello_world.aur ora」でジョブを更新すると 正常に「active」なタスクに なります。
  • 39. Apache Aurora の始めかた 39 / 46 標準出力も、正常な結果が このように表示されます。
  • 40. Apache Aurora の始めかた 40 / 46 ポイント • Auroraは、プレームワークの実行環境を提供 設定ファイルのなかで「Job」「Task」「Process」を定義 • 「Job」で「Task」を抽象化 • 「Task」は「Process」の抽象化
  • 41. Apache Aurora の始めかた 41 / 46 Process Object の定義 • Themos システムでの挙動 bashで実行可能な形式 • 属性 ➡ ‘name’ … Unix ファイル名と同じルール、重複不可 ➡ ‘cmdline’… bashコマンド ➡ ‘max_failures’… 最大失敗回数 defaut:1 ➡ ‘daemon’…Trueはそのまま実行、default:False ➡ ‘ephemeral’…プロセス再実行までの時間、default:15s ➡ ‘final’…最後に実行されるProcess、default:False
  • 42. Apache Aurora の始めかた 42 / 46 Task オブジェクトの定義 • Task で定義した内容が Mesos で処理 • 重要なkey ➡ ‘name’ … タスク名称 ➡ ‘processes’…タスクで実行されるプロセス一覧 ➡ ‘resources’ … 計算資源 • cpu – 浮動小数、タスクが必要とするコア数 • ram – タスクが必要な RAM バイト数 • disk – タスクが必要とするディスクバイト数
  • 43. Apache Aurora の始めかた 43 / 46 次に読むべき文章 • Configuration Tutorial ➡ http://aurora.incubator.apache.org/documentation/latest/configuration-tutorial/ • Aurora User Guide ➡ http://aurora.incubator.apache.org/documentation/latest/user-guide/
  • 45. Apache Aurora の始めかた 45 / 46 まとめ • AuroraはApache Mesos上で動くフレームワーク Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化 • “Job” 単位で ”Task” “Process”を管理する概念 ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定 • コードでサービスやインフラを定義 設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行 Conclusion あとはチュートリアルを試す だけならとても簡単です。
  • 46. Apache Aurora の始めかた 46 / 46 参考資料 • All about Apache Aurora | Twitter Blogs ➡ https://blog.twitter.com/2015/all-about-apache-aurora • User Guide ➡ http://aurora.incubator.apache.org/documentation/latest/user-guide/ • Introduction to Apache Mesos ➡ http://www.slideshare.net/charmalloc/introductionapachemesosjstein20140714 • Datacenter Computing with Apache Mesos - BigData DC ➡ http://www.slideshare.net/pacoid/datacenter-computing-with-apache-mesos