HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. *Read more...*
A little more about Health Manager¶
Health Manager の位置¶
Health Manager の仕事¶
- 概要
- デプロイされたAPのインスタンス数を,指定された数に保つ
- デプロイされたAPの状態に関する情報をリクエストに応じて返す
デプロイされたAPのインスタンス数を,指定された数に保つ¶
- やり方
- (a) Dropletに関する情報を受信・収集する
- (a1) 各DEAが一定間隔(既定値:5秒)ごとに送ってくるハートビートを受信・収集する
HealthManager#process_heartbeat_message - (a2) 各Dropletの更新情報を受信・収集する
HealthManager#process_updated_message - (a3) 各Dropletの終了情報を受信・収集する
HealthManager#process_exited_message
- (a1) 各DEAが一定間隔(既定値:5秒)ごとに送ってくるハートビートを受信・収集する
- (b) 一定間隔(既定値:60秒)ごとにCCDB上のAPの情報をスキャンする
HealthManager#update_from_db - (c) 一定間隔(既定値:10秒)ごとに(a)と(b)の情報を比較し,差分を抽出して Cloud Controller へのリクエストを生成し,
HealthManager#analyze_all_apps
→HealthManager#perform_and_schedule_next_quantum
→HealthManager#perform_quantum
→HealthManager#analyze_app- インスタンスが不足している場合はstartリクエストをキューに入れる
HealthManager#analyze_app
→HealthManager#start_instances
→HealthManager#queue_request - インスタンスが多すぎる場合はstopリクエストをすぐに送信する
HealthManager#analyze_app
→HealthManager#stop_instances
- インスタンスが不足している場合はstartリクエストをキューに入れる
- (d) 一定間隔(1秒)ごとにn(既定値:50)件ずつ,(c)のキューに入れたリクエストを Cloud Controller に送信する
HealthManager#deque_a_batch_of_requests
- (a) Dropletに関する情報を受信・収集する
デプロイされたAPの状態に関する情報をリクエストに応じて返す¶
- 指定されたステータス(FLAPPINGまたはCRASHED)のdroplet群を返す
HealthManager#process_status_message - 指定されたidとversionのdroplet群でステータスがrunningのものの数を返す
HealthManager#process_health_message
Interfaces¶
In(→Out)¶
- NATS.subscribe('healthmanager.status')@HealthManager#subscribe_to_messages
- NATS.subscribe('healthmanager.health')@HealthManager#subscribe_to_messages
In¶
- NATS.subscribe('dea.heartbeat')@HealthManager#subscribe_to_messages
- NATS.subscribe('droplet.exited')@HealthManager#subscribe_to_messages
- NATS.subscribe('droplet.updated')@HealthManager#subscribe_to_messages
Out
TBF¶
(参考)初期値一覧¶
- 設定ファイル
health_manager.yml - コンストラクター
HealthManager#initialize