際際滷

際際滷Share a Scribd company logo
Google Borg
と
コンテナベ`ス蛍柊システムデ
ザインパタ`ン
Kamiyacho.k8s #7 LT
@ktateish
古勣
Google Borgの猟[1]とコンテナベ`ス蛍柊システムデザインパ
タ`ンの猟[2]をiんだので古勣を寄j委にB初
Google Borg?
¢ K8s のご枠怕であり、Googleで聞われている寄トコンテナ
?クラスタ?砿尖システム[1]
¢ コンピュ`ティング?リソ`ス?マネ`ジャΕ織好?スケジュ`ラ
と冱うほうが屎_
$ マシンの彜B、リソ`ス砿尖
$ タスクをスケジュ`ル、棒試O
¢ スケ`ラブル
¢ 互辛喘來
Google Borgの嶷勣な蒙
¢ タスクに2Nの枠業を護り輝てる。(gHはもっとかく、箭翌も )
$ Prod: 互レスポンス勣箔。
$ Non-Prod: レスポンス勣箔がゆるい。
¢ 2Nとも揖匯マシン貧でg佩される
¢ Prodは勣箔リソ`スを_s(オ`バ`コミットしない)
$ Prodタスクをサブミットする_k宀は噫に_隠しがち。
$ もったいない ★ リソ`ス壅旋喘のしくみ
¢ Non-Prodタスクはその壅旋喘リソ`スを、つかえるリソ`スだ
と房ってスケジュ`ルされる(オ`バ`コミット)
リソ`スのオ`バ`コミットによりおこること
¢ Prodタスクが噫蛍にリソ`ス_隠したくなる尖喇
$ バ`スト議なリクエストにIしたい。
¢ gHにそれがおこり、Prod喘リソ`ス音怎なら Non-Prod タス
クが△気譟eマシンに壅スケジュ`ルされる
¢ つまり、Borg ではいつタスクが△気譴襪わからない
$ リソ`スのはあくまで匯箭。Prod(箭えばAdサ`ビス喘MySQL)で
あってもL1,2指殻業は軟こるらしい[3]
¢ _k宀はプロセスがいつ△気譴討發かしくない、という念戻
でアプリをかなかればならない
Borgは嶷勣な蛍柊コンピュ`ティング児Pである
¢ Borg徭悶は蛍柊コンピュ`ティング(☆)議な勣殆が富ない
$ Paxosストアくらい (k8sではetcdが毅輝)
$ 弼?幣又に源む挟賀があるので、ぜひ猟[1]をiもう
¢ ただし、そこに\るタスクをくDev, \喘するOpsには蛍柊コ
ンピュ`ティングを崙する
¢ Y惚、Borg貧のあらゆるアプリが絞嬾にくなる。
$ 絞嬾にいアプリでないと、Borg貧ではまともに咾ない
$ 厘?(匯違繁)のh廠はタスクが棒ぬl業が富ないので、そこに坐Δ
つぎzむインセンティブがあまり謹くない
☆ ここでは仝撹勣殆の匯何が絞嬾してもt悶としては嘛しつづける々くらいの吭龍です。
岑っておきたいBorgの室g議な蒙
¢ Alloc
$ リソ`スのセットに兆念をつけたもの
$ タスクをallocに卆贋させることで}方のなるタスクをYびつけること
ができる
$ Y惚、}方のなるタスクが匯つの麗尖マシン貧に co-schedule され
る
$ K8sでは Pod という古廷として鞭け@がれている
Borgについては參貧
コンテナベ`ス?蛍柊システム?デザインパタ`ン
¢ K8s兵宀によって HotCloud `16 でk燕された猟[2]
¢ K8sブログでもB初されたのでた繁謹いかも
¢ 書の蛍柊システム_kの彜rはプログラミングにおけるオブ
ジェクト峺鬚料佩からデザインパタ`ンの鞠という彜rに
貌てるぜgHコンテナを聞ったデザインパタ`ンと柵べるも
のが鞠しているぜという麼
¢ g箭が幣されてないものもあるけど、たぶんGoogle坪にはあ
るのかも???(參和、仝g箭拭垢いてある)
デザインパタ`ンの蛍
おおきく3つの蛍がある
¢ シングルコンテナ?マネジメント?パタ`ン
$ コンテナ砿尖喘のおs崩
¢ シングルノ`ド?マルチコンテナ?パタ`ン
$ Alloc/Podによるロ`カルリソ`スlo NIC, localディスク) の慌嗤
¢ マルチノ`ド?アプリケ`ション?パタ`ン
$ 蛍柊アルゴリズムの旋喘をgにする
シングルコンテナ?マネジメント
¢ コンテナ砿尖のおs崩
¢ アプリケ`ション秤API
$ 恷除の冱ZならHTTPサ`バくのSなんだから、 ^/health ̄ で棒試ほ
か、アプリの秤鵑鯣,譴襪茲Δ砲靴討諭△箸いυ
¢ ライフサイクル砿尖API
$ Borg/k8s吉のタスクを△垢箸の恬隈 SIGKILL する念に SIGTERM
を僕りアプリ箸廼xした昼方だけ棋つ。
$ これに鬉垢襪茲Δ縫▲廛こうぜ、という
* SIGTERMうけたら嶷勣デ`タを隠贋する、とか
$ ほかにも readiness probe など
シングルノ`ド?マルチコンテナ
¢ ロ`カルリソ`スの慌嗤によってSしよう
¢ サイドカ`(ロ`カルディスクを慌嗤)
$ ディスクにきzむやつとそこからiみ函るやつを揖肖させる
$ 箭:
* ログを預くアプリログをクラスタストレ`ジに隠贋するアプリ
* 床議コンテンツ戻工Webサ`バリポジトリからコンテンツ函誼
$ リソ`スを蛮宥しやすい(ユ`ザ鰔塒發蕨召rに咾韻仭爾)
$ }方チ`ムに蛍けて_kしやすい
$ 鏡羨してアップデ`トしやすい
$ アプリコンテナを壅旋喘しやすい
シングルノ`ド?マルチコンテナ(cont.)
¢ アンバサダ`(loインタ`フェ`スを慌嗤)
$ 麿ホストの戻工サ`ビスをlocalhostにあるようにせる
$ 箭: 127.0.0.1のmemcachedにアクセスしてると房っていたらgは
twemproxyで、memcacheクラスタに誘げてくれていた
$ Memcache旋喘箸離▲廛蠅蓮∫_krにlocalhostにmemcacheイン
スタンスをたてておけば、そのままプロダクションh廠と揖じO協でい
ける。g箭 twemproxy
¢ アダプタ`(これもlo慌嗤)
$ アンバサダ`の剃。慌宥議なAPIをOアプリなどに戻工
$ g箭
マルチノ`ド?アプリケ`ション
¢ 蛍柊アプリの_kをSにしよう
¢ リ`ダ`x竃
$ 母宀でないと、屎しくくのがyしい。冱Z崙sがあることも
(Java,Go,...?)
$ リ`ダ`x竃をやってくれるアプリを匯wにスケジュ`ル
$ yしいアプリを採業もかなくて措くなる
$ リ`ダ`x竃アプリはHTTPなAPIを戻工してくれれば徭蛍のアプリの
冱Zはなんでも措くなる
$ g箭
マルチノ`ド?アプリケ`ション(cont.)
¢ ワ`クキュ`
$ 蛍柊システムでよくある
$ F彜、g廾のあるフレ`ムワ`クの冱Zにあわせないとダメ
$ ロ`カルディスクからデ`タをiみだして、I尖Y惚をロ`カルディス
クにき竃す、というアプリだけけば、あとはフレ`ムワ`クが畠何
やってくれるよ
$ g箭
マルチノ`ド?アプリケ`ション(cont.)
¢ スキャッタ`/ギャザ`
$ これも蛍柊システムでよくある
$ ワ`クロ`ドを蛍護してマ`ジするようなものeg.Web碧
$ gHのI尖をするリ`フノ`ドコンテナとY惚をマ`ジするマ`ジコン
テナだけg廾すれば、あとはフレ`ムワ`クが中宜をてくれるよ
$ g箭
侭湖
¢ 仝厘?(匯違繁)のh廠はタスクが棒ぬl業が富ない々(壅)
$ AWSだと飛孤棒にやすいけど、そこまでl訓にタスク棒なないよね、と
いうのが匯違JRかと。オンプレはまず棒なない。
$ k8s の弊順が栖てしまったので、こんなことは冱ってられない。あなた
のアプリのプロセスはL1,2指は△気譴泙
$ コンピュ`ティング?リソ`ス?マネ`ジャの悗k8sが燐るかどうか
はわからないが、この送れは駅協
$ 笋┐茲
侭湖
¢ 笋┐襭燭匹Δ笋辰藤
$ 蛍柊システム議なア`キテクチャにm鬉靴茲Α
* 卞佩は祐みが育うだろうけど、きっとSになる
$ コンテナベ`ス?蛍柊システム?デザインパタ`ン
* ひとつの祇砲箸靴
歌深猟
[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

More Related Content

Google borg と コンテナヘ?`ス蛍柊システムテ?サ?インハ?タ`ン