system.status
コマンドは、クラスタの現在の状態を返します。
(ドキュメントルート)/droonga/system/status
GET
対応していません。
type
system.status
body
type
system.status.result
このコマンドはパラメータを取りません。
このコマンドは各ノードの死活情報を出力します。 例:
{
"type" : "system.status",
"body" : {}
}
=> {
"type" : "system.status.result",
"body" : {
"nodes": {
"192.168.0.10:10031/droonga": {
"status": "active"
},
"192.168.0.11:10031/droonga": {
"status": "dead"
}
},
"reporter": "192.168.0.10:49707/droonga @ 192.168.0.10:10031/droonga"
}
}
このコマンドは以下のようなハッシュを body
、200
を statusCode
としたレスポンスを返します。以下はその一例です。。
{
"nodes" : {
"<1番目のノードの識別子>" : {
"status" : "<ノードの死活状態>"
},
"<2番目のノードの識別子>" : { ... },
...
},
"reporter": "<報告者の内部識別名> @ <報告者の識別名>"
}
nodes
catalog.json
で定義された各ノードの識別子(形式は ホスト名:ポート番号/タグ
)です。
ハッシュの値は対応するノードのステータス情報を表し、以下の情報を含んでいます:
status
active
:
ノードは動作していて、サービスを提供している。
メッセージはそのノード宛に通常通り配送される。inactive
:
ノードは動作しているが、一時的にサービスから外れている。
メッセージはそのノード宛にはすぐには配送されない事がある。
具体的には、読み込みのみのメッセージ(検索リクエストなど)は全く配送されない。
データベースへの変更を伴うメッセージ(add
など)は溜め込まれて、ノードの状態がactive
に復帰した後に配送される。dead
:
ノードは永続的に停止している。例えば、サービスが停止しているなど。これらのステータスは相対的なもので、ノード同士がお互いの状態を個別に認識して報告します。
例えば、異なるロールを持った2つのノードは、お互いに自分をactive
と認識し、相手をinactive
と認識する場合があります。
reporter
このコマンドは一般的なエラーを返します。