nats on vcap

18
VCAP VCAP VCAP VCAPの の中 中の のNATS NATS NATS NATS Katsunori Kawaguchi @hamakn 2011-11-17 第2回 Cloud Foundry 輪読会

Upload: katsunori-kawaguchi

Post on 28-May-2015

2.084 views

Category:

Technology


0 download

DESCRIPTION

2011-11-17第2回Cloud Foundry輪読会#cfcrjp

TRANSCRIPT

Page 1: NATS on VCAP

VCAPVCAPVCAPVCAPのののの中中中中ののののNATSNATSNATSNATS

Katsunori Kawaguchi @hamakn

2011-11-17

第2回 Cloud Foundry 輪読会

Page 2: NATS on VCAP

VCAPの各コンポーネント間のメッセージングに、

NATSがどう利用されているかをサンプルを見ながら共有します。

Page 3: NATS on VCAP

アジェンダ

1. 復習:NATSとは?2. NATSとCF各コンポーネント3. ケーススタディ

1. アプリのデプロイ時2. アプリの削除時3. DEAの障害発生時

4. まとめ TODO: 今回はちゃんと20分で終わらせます…

Page 4: NATS on VCAP

自己紹介

• 川口 克則 @hamakn• NTTコム所属• Web/スマートフォンアプリの開発

主にRails

• Cloud Foundryを検証中(2011年10月~)– 最近は、アカウント払出/管理アプリを作ったり、

vcapノードの追加/管理ツールを作ったり。

Page 5: NATS on VCAP

復習:NATSとは?

1. NATSは、EventMachineを使い、Rubyで実装された、軽量なPub/Sub メッセージングシステム

2. Cloud FoundryはNATSを使っている疎結合で自律的なシステムをNATSで実現。

※詳細は前回の資料http://www.slideshare.net/hamakn/reading-natsなどを参照してください。

Page 6: NATS on VCAP

Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011

この実装がNATS

NATSとCloud Foundry

Page 7: NATS on VCAP

NATSとCloud Foundry(2)

青い矢印が

NATSのメッセージ Cloud Foundry The building of the Open PaaS OSCON2011

http://www.slideshare.net/derekcollison/oscon-2011

Page 8: NATS on VCAP

subject: router.registerurl:test.cloudfoundry.com host:172.16.0.10 port:10000というアプリを登録よろしく > router

CloudCloudCloudCloudControllerControllerControllerController

reply:できるよー

DEADEADEADEA

DEADEADEADEA

subject: dea.discovermem:256 disk:2048 fds:256 runtime:rubyこのアプリを実行できるDEAいる?

Page 9: NATS on VCAP

NATSメッセージの確認• NATSの入っているサーバで

$ nats-sub ‘>’ –s nats://nats_address:nats_port/Listening on [>][#1] Received on [router.start] : …

– ‘>’ で全てのpublishされたメッセージをListen

• vcap自体のログと合わせて見ると動きが把握しやすい

• ソースを追う時は、NATS/publish/subscribeなどでgrepするといい

Page 10: NATS on VCAP

ケーススタディ

Page 11: NATS on VCAP

1. アプリのデプロイ時

ccとservice

ccとhmとdea

Page 12: NATS on VCAP

1-1. Cloud ControllerとServiceのやり取り

# Publisher Subscriber Subject Context1 cc service *aaS.discover serviceの存在確認2 service cc reply to #1 service idと残容量の返答3 cc service *aaS.provision.service_id #2のserviceへの

provision要求4 service cc reply to #3 DB, user, passwdなどの

返答5 cc service *aaS.bind.service_id #4のserviceへの

bind要求6 service cc reply to #5 bind結果の返答

Page 13: NATS on VCAP

NATSとCloud Foundry(2)

Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011

1.1のやり取り

Page 14: NATS on VCAP

1-2. CC, HM, deaのやり取り(前半: Stagingまで)

# Publisher Subscriber Subject Context1 cc hm droplet.updated dropletのupdateの通知2 cc dea dea.discover memoryやruntimeの条件に合う

deaの返答要求3 dea cc reply to #2 #2に対して、

受け入れ可能な返答4 cc dea dea.dea_id.start dea_idのアプリの実行開始要求

Page 15: NATS on VCAP

NATSとCloud Foundry(2)

Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011

1.2のやり取り

Page 16: NATS on VCAP

1-3. CC, HM, deaのやり取り(後半: アプリ実行開始まで)

# Publisher Subscriber Subject Context1 cc hm healthmanager.health アプリのhealth状況の問い合

わせ(instance数)2 hm cc reply to #13 cc hm healthmanager.status アプリのstatus状況の問い合

わせ(flapping, crushed)4 hm cc reply to #35 hm dea dea.heartbeat heartbeat1~5を繰り返す6 dea router router.register アプリのhost:portへの

regist要求

Page 17: NATS on VCAP

NATSとCloud Foundry(2)

Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011

1.3のやり取り

Page 18: NATS on VCAP

まとめ

• NATSがvcapでどう使われているかを具体例とともに見てみました– この仕組みによって、CloudFoundryは

疎結合で自律的なシステムになっています。

• コードを追う際は、– 全メッセージをsubscribeする

NATSクライアントが便利– git grep NATS/publish/subscribe が便利