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.
Google Borg
と
コンテナベース分散システムデ
ザインパターン
Kamiyacho.k8s #7 LT
@ktateish
概要
Google Borgの論文[1]とコンテナベース分散システムデザインパ
ターンの論文[2]を読んだので概要を大雑把に紹介
Google Borg?
● K8s のご先祖であり、Googleで使われている大規模コンテナ
・クラスタ・管理システム[1]
● コンピューティング・リソース・マネージャ&タスク・スケジューラ
と言うほうが正確
○ マシンの状態、リソース管理...
Google Borgの重要な特徴
● タスクに2種類の優先度を割り当てる。(実際はもっと細かく、例外も )
○ Prod: 高レスポンス要求。
○ Non-Prod: レスポンス要求がゆるい。
● 2種類とも同一マシン上で実行される
● Pr...
リソースのオーバーコミットによりおこること
● Prodタスクが余分にリソース確保したくなる理由
○ バースト的なリクエストに対処したい。
● 実際にそれがおこり、Prod用リソース不足なら Non-Prod タス
クが殺され、別マシンに再スケ...
Borgは重要な分散コンピューティング基盤である
● Borg自体は分散コンピューティング(※)的な要素が少ない
○ Paxosストアくらい? (k8sではetcdが担当)
○ 色々示唆に富む洞察があるので、ぜひ論文[1]を読もう
● ただし、...
知っておきたいBorgの技術的な特徴
● Alloc
○ リソースのセットに名前をつけたもの
○ タスクをallocに依存させることで複数の異なるタスクを結びつけること
ができる
○ 結果、複数の異なるタスクが一つの物理マシン上に co-sch...
コンテナベース・分散システム・デザインパターン
● K8s創始者によって HotCloud ‘16 で発表された論文[2]
● K8sブログでも紹介されたので見た人多いかも
● 今の分散システム開発の状況は,プログラミングにおけるオブ
ジェクト...
デザインパターンの分類
おおきく3つの分類がある
● シングルコンテナ・マネジメント・パターン
○ コンテナ管理用のお約束
● シングルノード・マルチコンテナ・パターン
○ Alloc/Podによるローカルリソース(lo NIC, localデ...
シングルコンテナ・マネジメント
● コンテナ管理のお約束
● アプリケーション情報API
○ 最近の言語ならHTTPサーバ書くの楽なんだから、 “/health” で死活ほ
か、アプリの情報を取れるようにしてね、という話
● ライフサイクル管理...
シングルノード・マルチコンテナ
● ローカルリソースの共有によって楽しよう
● サイドカー(ローカルディスクを共有)
○ ディスクに書き込むやつとそこから読み取るやつを同居させる
○ 例:
■ ログを吐くアプリ+ログをクラスタストレージに保存す...
シングルノード・マルチコンテナ(cont.)
● アンバサダー(loインターフェースを共有)
○ 他ホストの提供サービスをlocalhostにあるように見せる
○ 例: 127.0.0.1のmemcachedにアクセスしてると思っていたら実は
...
マルチノード・アプリケーション
● 分散アプリの開発を楽にしよう
● リーダー選出
○ 熟練者でないと、正しく書くのが難しい。言語制約があることも
(Java,Go,...?)
○ リーダー選出をやってくれるアプリを一緒にスケジュール
○ 難し...
マルチノード・アプリケーション(cont.)
● ワークキュー
○ 分散システムでよくある
○ 現状、実装のあるフレームワークの言語にあわせないとダメ
○ ローカルディスクからデータを読みだして、処理結果をローカルディス
クに書き出す、というア...
マルチノード・アプリケーション(cont.)
● スキャッター/ギャザー
○ これも分散システムでよくある
○ ワークロードを分割してマージするようなもの(eg.Web検索)
○ 実際の処理をするリーフノードコンテナと結果をマージするマージコン...
所感
● 「我々(一般人)の環境はタスクが死ぬ頻度が少ない」(再掲)
○ AWSだと若干死にやすいけど、そこまで頻繁にタスク死なないよね、と
いうのが一般認識かと。オンプレはまず死なない。
○ k8s の世界が来てしまったので、こんなことは言っ...
所感
● 備える?どうやって?
○ 分散システム的なアーキテクチャに適応しよう。
■ 移行は痛みが伴うだろうけど、きっと楽になる
○ コンテナベース・分散システム・デザインパターン
■ ひとつの道標として
参考文献
[1] Large-scale cluster management at Google with Borg
[2] Design Patterns for Container-based Distributed Systems
[3...
Upcoming SlideShare
Loading in …5
×

Google borg と コンテナベース分散システムデザインパターン

3,127 views

Published on

第7回 Kamiyacho.k8s (2016/08/23) のLTで発表させていただいたBorgとコンテナベース分散システムデザインパターンについての資料です

Published in: Software
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Google borg と コンテナベース分散システムデザインパターン

  1. 1. Google Borg と コンテナベース分散システムデ ザインパターン Kamiyacho.k8s #7 LT @ktateish
  2. 2. 概要 Google Borgの論文[1]とコンテナベース分散システムデザインパ ターンの論文[2]を読んだので概要を大雑把に紹介
  3. 3. Google Borg? ● K8s のご先祖であり、Googleで使われている大規模コンテナ ・クラスタ・管理システム[1] ● コンピューティング・リソース・マネージャ&タスク・スケジューラ と言うほうが正確 ○ マシンの状態、リソース管理 ○ タスクをスケジュール、死活監視 ● スケーラブル ● 高可用性
  4. 4. Google Borgの重要な特徴 ● タスクに2種類の優先度を割り当てる。(実際はもっと細かく、例外も ) ○ Prod: 高レスポンス要求。 ○ Non-Prod: レスポンス要求がゆるい。 ● 2種類とも同一マシン上で実行される ● Prodは要求リソースを確約(オーバーコミットしない) ○ Prodタスクをサブミットする開発者は余計に確保しがち。 ○ もったいない → リソース再利用のしくみ ● Non-Prodタスクはその再利用リソースを、つかえるリソースだ と思ってスケジュールされる(オーバーコミット)
  5. 5. リソースのオーバーコミットによりおこること ● Prodタスクが余分にリソース確保したくなる理由 ○ バースト的なリクエストに対処したい。 ● 実際にそれがおこり、Prod用リソース不足なら Non-Prod タス クが殺され、別マシンに再スケジュールされる ● つまり、Borg ではいつタスクが殺されるかわからない ○ リソースの話はあくまで一例。Prod(例えばAdサービス用MySQL)で あっても週1,2回程度は起こるらしい[3] ● 開発者はプロセスがいつ殺されてもおかしくない、という前提 でアプリを書かなかればならない
  6. 6. Borgは重要な分散コンピューティング基盤である ● Borg自体は分散コンピューティング(※)的な要素が少ない ○ Paxosストアくらい? (k8sではetcdが担当) ○ 色々示唆に富む洞察があるので、ぜひ論文[1]を読もう ● ただし、そこに乗るタスクを書くDev, 運用するOpsには分散コ ンピューティングを強制する ● 結果、Borg上のあらゆるアプリが故障に強くなる。 ○ 故障に強いアプリでないと、Borg上ではまともに動かない ○ 我々(一般人)の環境はタスクが死ぬ頻度が少ないので、そこに労力を つぎ込むインセンティブがあまり多くない ※ ここでは「構成要素の一部が故障しても総体としては動作しつづける」くらいの意味です。
  7. 7. 知っておきたいBorgの技術的な特徴 ● Alloc ○ リソースのセットに名前をつけたもの ○ タスクをallocに依存させることで複数の異なるタスクを結びつけること ができる ○ 結果、複数の異なるタスクが一つの物理マシン上に co-schedule され る ○ K8sでは Pod という概念として受け継がれている Borgについては以上
  8. 8. コンテナベース・分散システム・デザインパターン ● K8s創始者によって HotCloud ‘16 で発表された論文[2] ● K8sブログでも紹介されたので見た人多いかも ● 今の分散システム開発の状況は,プログラミングにおけるオブ ジェクト指向の流行からデザインパターンの登場という状況に 似てるぜ,実際コンテナを使ったデザインパターンと呼べるも のが登場しているぜ,という主張 ● 実例が示されてないものもあるけど、たぶんGoogle内にはあ るのかも・・・?(以下、「実例?」と書いてある)
  9. 9. デザインパターンの分類 おおきく3つの分類がある ● シングルコンテナ・マネジメント・パターン ○ コンテナ管理用のお約束 ● シングルノード・マルチコンテナ・パターン ○ Alloc/Podによるローカルリソース(lo NIC, localディスク) の共有 ● マルチノード・アプリケーション・パターン ○ 分散アルゴリズムの利用を簡単にする
  10. 10. シングルコンテナ・マネジメント ● コンテナ管理のお約束 ● アプリケーション情報API ○ 最近の言語ならHTTPサーバ書くの楽なんだから、 “/health” で死活ほ か、アプリの情報を取れるようにしてね、という話 ● ライフサイクル管理API ○ Borg/k8s等のタスクを殺すときの作法: SIGKILL する前に SIGTERM を送り,アプリ側で定義した秒数だけ待つ。 ○ これに対応するようにアプリ書こうぜ、という話 ■ SIGTERMうけたら重要データを保存する、とか ○ ほかにも readiness probe など
  11. 11. シングルノード・マルチコンテナ ● ローカルリソースの共有によって楽しよう ● サイドカー(ローカルディスクを共有) ○ ディスクに書き込むやつとそこから読み取るやつを同居させる ○ 例: ■ ログを吐くアプリ+ログをクラスタストレージに保存するアプリ ■ 静的コンテンツ提供Webサーバ+リポジトリからコンテンツ取得 ○ リソースを融通しやすい(ユーザ対向以外は暇な時に動けば良い) ○ 複数チームに分けて開発しやすい ○ 独立してアップデートしやすい ○ アプリコンテナを再利用しやすい
  12. 12. シングルノード・マルチコンテナ(cont.) ● アンバサダー(loインターフェースを共有) ○ 他ホストの提供サービスをlocalhostにあるように見せる ○ 例: 127.0.0.1のmemcachedにアクセスしてると思っていたら実は twemproxyで、memcacheクラスタに投げてくれていた ○ Memcache利用側のアプリは、開発時にlocalhostにmemcacheイン スタンスをたてておけば、そのままプロダクション環境と同じ設定でい ける。実例: twemproxy ● アダプター(これもlo共有) ○ アンバサダーの逆。共通的なAPIを監視アプリなどに提供 ○ 実例?
  13. 13. マルチノード・アプリケーション ● 分散アプリの開発を楽にしよう ● リーダー選出 ○ 熟練者でないと、正しく書くのが難しい。言語制約があることも (Java,Go,...?) ○ リーダー選出をやってくれるアプリを一緒にスケジュール ○ 難しいアプリを何度も書かなくて良くなる ○ リーダー選出アプリはHTTPなAPIを提供してくれれば自分のアプリの 言語はなんでも良くなる ○ 実例?
  14. 14. マルチノード・アプリケーション(cont.) ● ワークキュー ○ 分散システムでよくある ○ 現状、実装のあるフレームワークの言語にあわせないとダメ ○ ローカルディスクからデータを読みだして、処理結果をローカルディス クに書き出す、というアプリだけ書けば、あとはフレームワークが全部 やってくれるよ ○ 実例?
  15. 15. マルチノード・アプリケーション(cont.) ● スキャッター/ギャザー ○ これも分散システムでよくある ○ ワークロードを分割してマージするようなもの(eg.Web検索) ○ 実際の処理をするリーフノードコンテナと結果をマージするマージコン テナだけ実装すれば、あとはフレームワークが面倒を見てくれるよ ○ 実例?
  16. 16. 所感 ● 「我々(一般人)の環境はタスクが死ぬ頻度が少ない」(再掲) ○ AWSだと若干死にやすいけど、そこまで頻繁にタスク死なないよね、と いうのが一般認識かと。オンプレはまず死なない。 ○ k8s の世界が来てしまったので、こんなことは言ってられない。あなた のアプリのプロセスは週1,2回は殺されます ○ コンピューティング・リソース・マネージャの覇権をk8sが握るかどうか はわからないが、この流れは必定 ○ 備えよう
  17. 17. 所感 ● 備える?どうやって? ○ 分散システム的なアーキテクチャに適応しよう。 ■ 移行は痛みが伴うだろうけど、きっと楽になる ○ コンテナベース・分散システム・デザインパターン ■ ひとつの道標として
  18. 18. 参考文献 [1] Large-scale cluster management at Google with Borg [2] Design Patterns for Container-based Distributed Systems [3] Site Reliability Engineering O'Reilly Media p.73 - 75

×