Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

73

Share

Download to read offline

Apache Auroraの始めかた

Download to read offline

OSC2015 Tokyo/Spring #osc15tk
2015年2月28日 14:00 - 明星大学 202 号室

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Apache Auroraの始めかた

  1. 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. 2. Apache Aurora の始めかた 2 / 46 今日の内容 • なぜ Apache Aurora なのか? • Apache Aurora とは? • チュートリアルを試すには? • まとめ Topics Auroraを実際に使うときの 日本語の情報が少ないため、 自分が分からなかった所を 整理してみました。
  3. 3. Apache Aurora の始めかた 3 / 46 まとめ • AuroraはApache Mesos上で動くフレームワーク Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化 • “Job” 単位で ”Task” “Process”を管理する概念 ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定 • コードでサービスやインフラを定義 設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行 Conclusion バッチだけでなくサービスや cronで実行するコマンドを 「Job」と定義して使います。
  4. 4. どうして Aurora なのか? Motivation 1
  5. 5. Apache Aurora の始めかた 5 / 46 稼働率 = MTBF MTBF+MTTR 平均故障間隔 Meam Time Between Failures 平均修理時間 Meam Time to Repaire Availability MTBFよりMTTRを減らす というアプローチが最近の オーケストレーションかな?
  6. 6. 障害対応を楽にする自動化 (`・ω・́) 自分にとって自動化は仕事を 楽にしたいというポジティブ なものよりも・・・
  7. 7. もうあんな思いはイヤだ! (‘A`) 障害で厭な気分をしたくない ネガティブな所が根っこに… 何とか良いものがないか? というのが最近の興味です。
  8. 8. https://blog.twitter.com/2015/all-about-apache-aurora そんな折 witter 社ブログで Aurora を知ったのが契機で サービスの安定稼働のために 使えるのでは?と考えます。 Dockerに対応したことも 興味を惹かれました。 動機不純です。
  9. 9. Apache Aurora の始めかた 9 / 46 投稿の要点 • 一万台規模に数百人のエンジニアが毎日デプロイ 自動化は極めて重要な課題 • サービスの維持には更新・便利さ・障害と直面 クラスタを安定稼働させるシステムとして、Apache Mesos をクラスタ監視に使う • Twitter 社で 2010 年から開発 Bill Farmer 氏が開発開始。2013年にはオープンソースとして公開 • V.0.7.0 は Docker 対応
  10. 10. Apache Aurora とは? Introduction 2
  11. 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. 12. Apache Aurora の始めかた 12 / 46 Apache Mesos とは? • 分散システムの管理 kernel という位置付け APIでリソース管理やスケジューリングを行い、アプリケーションを動かす • リソースを抽象化 CPU、メモリ、ストレージ • 耐障害性、スケーラビリティを備える Zookeeper で Master-Slave の冗長化 http://mesos.apache.org/
  13. 13. Apache Aurora の始めかた 13 / 46 例えば、複数の物理・仮想サーバがあったとして
  14. 14. Apache Aurora の始めかた 14 / 46 アプリケーション A アプリケーション B アプリケーション毎に、サーバの役割は固定されがち
  15. 15. Apache Aurora の始めかた 15 / 46 Apache Mesos アプリケーション A アプリケーション B それを、Mesos は必要とするリソースを抽象化します
  16. 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. 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
  18. 18. ジョブ、とは?
  19. 19. Apache Aurora の始めかた 19 / 46 Job Task Process Process Task Process Process ジョブはこのような概念です
  20. 20. Apache Aurora の始めかた 20 / 46 Job『Webサーバ運用』 Task:環境構築 Task:本番稼働 Task:削除 Process: wgetでコードを取得 Process: gunzipで展開 Process: 設定ファイルの配置 Process: デーモンとして起動(ループ) Process: プロセス停止 Process: ログファイル待避 Process: 不要ファイル削除 具体的な利用シーン例
  21. 21. Apache Aurora の始めかた 21 / 46 Job『カレー大作戦』 Task:資材調達 Task:調理 Task:食す Process: スーパーに行く Process: 食材を買う、スパイスを買う Process: お金を払う Process: 家に持ち帰る Process: 肉を炒める Process: 野菜を切る Process: 煮込む Process: 御飯を炊く Process: スパイスを調整する Process: 食器を用意 Process: 盛り付ける Process: ニコニコ顔で完食する Process: 片付ける カレーに例えると・・・
  22. 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
  23. 23. Apache Aurora を試すには? Let’s start tutorial 3
  24. 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. 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. 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. 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. 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. 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. 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. 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. 32. Apache Aurora の始めかた 32 / 46 http://192.168.33.7:8081/scheduler ジョブがスケジューラに対し 登録されたことがわかります
  33. 33. Apache Aurora の始めかた 33 / 46 クリックすると,ジョブ詳細 確認ができます
  34. 34. Apache Aurora の始めかた 34 / 46 ですが、このチュートリアル 失敗します。。。 (敢えて失敗する流れです)
  35. 35. Apache Aurora の始めかた 35 / 46 画面を辿ると、標準エラーの 内容が確認できます。 純粋に文法上の間違いです。
  36. 36. Apache Aurora の始めかた 36 / 46 もう一度 hello_word.py を 編集して、「xrange」と 正しい記述にします。
  37. 37. Apache Aurora の始めかた 37 / 46 それから「aurora job update devcluster/www- data/devel/hello_world /vagrant/hello_world.aur ora」でジョブを更新すると 正常に「active」なタスクに なります。
  38. 38. Apache Aurora の始めかた 38 / 46
  39. 39. Apache Aurora の始めかた 39 / 46 標準出力も、正常な結果が このように表示されます。
  40. 40. Apache Aurora の始めかた 40 / 46 ポイント • Auroraは、プレームワークの実行環境を提供 設定ファイルのなかで「Job」「Task」「Process」を定義 • 「Job」で「Task」を抽象化 • 「Task」は「Process」の抽象化
  41. 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. 42. Apache Aurora の始めかた 42 / 46 Task オブジェクトの定義 • Task で定義した内容が Mesos で処理 • 重要なkey ➡ ‘name’ … タスク名称 ➡ ‘processes’…タスクで実行されるプロセス一覧 ➡ ‘resources’ … 計算資源 • cpu – 浮動小数、タスクが必要とするコア数 • ram – タスクが必要な RAM バイト数 • disk – タスクが必要とするディスクバイト数
  43. 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/
  44. 44. まとめ conclusion 4
  45. 45. Apache Aurora の始めかた 45 / 46 まとめ • AuroraはApache Mesos上で動くフレームワーク Marathon や chronos と同じような位置付け、インフラ部分を Mesos で抽象化 • “Job” 単位で ”Task” “Process”を管理する概念 ジョブの中に複数のタスク、そして実際のコマンドであるプロセスを指定 • コードでサービスやインフラを定義 設定ファイルは「.aurora」形式で、Python 言語の記述、CLI で実行 Conclusion あとはチュートリアルを試す だけならとても簡単です。
  46. 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
  • minnanomameswork

    Nov. 21, 2018
  • uokada

    Oct. 27, 2017
  • hiwkby

    Dec. 1, 2016
  • trTNK

    Nov. 12, 2016
  • keigosuda

    Jun. 26, 2016
  • ssuser19428b2

    Jun. 19, 2016
  • gin_and_tanic

    Jun. 8, 2016
  • masakikubomura

    May. 31, 2016
  • yasuyama

    Jan. 3, 2016
  • HyonuSong

    Nov. 27, 2015
  • mosuka

    Nov. 27, 2015
  • TsukasaTamaru

    Nov. 6, 2015
  • KazuhiroSasaki

    Oct. 5, 2015
  • yuichikimura560

    Aug. 13, 2015
  • HiromitsuMorishita

    Jul. 27, 2015
  • HiroshiShiobara

    Jul. 1, 2015
  • lockcole

    Jun. 22, 2015
  • yukitawara58

    Jun. 20, 2015
  • thousandssheeps

    Jun. 15, 2015
  • siwamot

    Jun. 13, 2015

OSC2015 Tokyo/Spring #osc15tk 2015年2月28日 14:00 - 明星大学 202 号室

Views

Total views

13,692

On Slideshare

0

From embeds

0

Number of embeds

3,611

Actions

Downloads

78

Shares

0

Comments

0

Likes

73

×