More Related Content Similar to Apache Auroraの始めかた (20) More from Masahito Zembutsu (20) 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を減らす
というアプローチが最近の
オーケストレーションかな?
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/
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
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 で実行します。
37. Apache Aurora の始めかた
37 / 46
それから「aurora job
update devcluster/www-
data/devel/hello_world
/vagrant/hello_world.aur
ora」でジョブを更新すると
正常に「active」なタスクに
なります。
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