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