Project

Profile

Help

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 DEA


DEAの位置


DEAの仕事

  • 概要
    1. CCの要求を受け,APを操作する
      • a) インストール/起動
      • b) 終了/アンインストール
      • c) URI更新
    2. APインスタンスの状態を監視し,
      • a) CCの要求を受けて報告する
      • b) HMに報告する
      • c) RtにURIを登録/登録抹消する
      • d) リソース消費状況に応じてインスタンスを終了する

入口

dea/lib/dea/agent.rb#L256-265
受動的処理

NATS.subscribe('dea.status') { |msg, reply| process_dea_status(msg, reply) } # <= (使われていない)
NATS.subscribe('droplet.status') { |msg, reply| process_droplet_status(msg, reply) }# <= (使われていない)
NATS.subscribe('dea.discover') { |msg, reply| process_dea_discover(msg, reply) } # <= インスタンスのインストール先として立候補する
NATS.subscribe('dea.find.droplet') { |msg, reply| process_dea_find_droplet(msg, reply) } # <= インスタンスの情報をCCに報告
NATS.subscribe('dea.update') { |msg| process_dea_update(msg) } # <= インスタンスのURIの更新
NATS.subscribe('dea.stop') { |msg| process_dea_stop(msg) } # <= インスタンスの終了
NATS.subscribe("dea.#{uuid}.start") { |msg| process_dea_start(msg) } # <= インスタンスのインストール&起動
NATS.subscribe('router.start') {  |msg| process_router_start(msg) } # <= RouterにURIを登録する
NATS.subscribe('healthmanager.start') { |msg| process_healthmanager_start(msg) } # <= DEA/インスタンスの状態をHMに報告
NATS.subscribe('dea.locate') { |msg|  process_dea_locate(msg) } # <= (使われていない?)

dea/lib/dea/agent.rb#L271-276
能動的処理

EM.add_periodic_timer(@heartbeat_interval) { send_heartbeat } # <= Health Manager にdropletの起動状態を送信する
EM.add_periodic_timer(@advertise_interval) { send_advertise } # <= 自分自身の状態を広報する
EM.add_timer(MONITOR_INTERVAL) { monitor_apps } <= dropletの状態をチェックする(psコマンド,duコマンド)
EM.add_periodic_timer(CRASHES_REAPER_INTERVAL) { crashes_reaper } # <= クラッシュして一定時間たったdropletを削除する
EM.add_periodic_timer(VARZ_UPDATE_INTERVAL) { snapshot_varz } # <= varzを更新する
EM.add_periodic_timer(DROPLET_FS_PERCENT_USED_UPDATE_INTERVAL) { update_droplet_fs_usage } # <= ファイルシステムの状態を把握する(dfコマンド)

CCの要求を受け,APを操作する

インストール/起動

  1. process_dea_discover
    起動要求に立候補する
  2. process_dea_start
    インスタンスをインストール&起動する(詳細(一部)は #754 を参照)

終了/アンインストール

URI更新


APインスタンスの状態を監視し,

dea/lib/dea/agent.rb#L273-276

EM.add_timer(MONITOR_INTERVAL) { monitor_apps }
EM.add_periodic_timer(CRASHES_REAPER_INTERVAL) { crashes_reaper }
EM.add_periodic_timer(VARZ_UPDATE_INTERVAL) { snapshot_varz }
EM.add_periodic_timer(DROPLET_FS_PERCENT_USED_UPDATE_INTERVAL) { update_droplet_fs_usage }


CCの要求を受けて報告する

HMに報告する

RouterにURIを登録/登録抹消する

リソース消費状況に応じてインスタンスを終了する


Interfaces

http://apidocs.cloudfoundry.com/

In(→Out)

TBF

In

TBF

Out

TBF


(参考)初期値一覧

  • 設定ファイル
    TBF
  • コンストラクター
    TBF