nats on vcap
Post on 28-May-2015
2.080 Views
Preview:
DESCRIPTION
TRANSCRIPT
VCAPVCAPVCAPVCAPのののの中中中中ののののNATSNATSNATSNATS
Katsunori Kawaguchi @hamakn
2011-11-17
第2回 Cloud Foundry 輪読会
VCAPの各コンポーネント間のメッセージングに、
NATSがどう利用されているかをサンプルを見ながら共有します。
アジェンダ
1. 復習:NATSとは?2. NATSとCF各コンポーネント3. ケーススタディ
1. アプリのデプロイ時2. アプリの削除時3. DEAの障害発生時
4. まとめ TODO: 今回はちゃんと20分で終わらせます…
自己紹介
• 川口 克則 @hamakn• NTTコム所属• Web/スマートフォンアプリの開発
主にRails
• Cloud Foundryを検証中(2011年10月~)– 最近は、アカウント払出/管理アプリを作ったり、
vcapノードの追加/管理ツールを作ったり。
復習:NATSとは?
1. NATSは、EventMachineを使い、Rubyで実装された、軽量なPub/Sub メッセージングシステム
2. Cloud FoundryはNATSを使っている疎結合で自律的なシステムをNATSで実現。
※詳細は前回の資料http://www.slideshare.net/hamakn/reading-natsなどを参照してください。
Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011
この実装がNATS
NATSとCloud Foundry
NATSとCloud Foundry(2)
青い矢印が
NATSのメッセージ Cloud Foundry The building of the Open PaaS OSCON2011
http://www.slideshare.net/derekcollison/oscon-2011
例
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いる?
NATSメッセージの確認• NATSの入っているサーバで
$ nats-sub ‘>’ –s nats://nats_address:nats_port/Listening on [>][#1] Received on [router.start] : …
– ‘>’ で全てのpublishされたメッセージをListen
• vcap自体のログと合わせて見ると動きが把握しやすい
• ソースを追う時は、NATS/publish/subscribeなどでgrepするといい
ケーススタディ
1. アプリのデプロイ時
ccとservice
ccとhmとdea
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結果の返答
NATSとCloud Foundry(2)
Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011
1.1のやり取り
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のアプリの実行開始要求
NATSとCloud Foundry(2)
Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011
1.2のやり取り
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要求
NATSとCloud Foundry(2)
Cloud Foundry The building of the Open PaaS OSCON2011http://www.slideshare.net/derekcollison/oscon-2011
1.3のやり取り
まとめ
• NATSがvcapでどう使われているかを具体例とともに見てみました– この仕組みによって、CloudFoundryは
疎結合で自律的なシステムになっています。
• コードを追う際は、– 全メッセージをsubscribeする
NATSクライアントが便利– git grep NATS/publish/subscribe が便利
top related