droonga-engine-catalog-modify
は、既存のcatalog.json
を変更してDroongaクラスタの構成を変えます。
多くの場合において、このコマンドを使う必要はまずありません。代わりに、クラスタ構成の変更にはdroonga-engine-join
やdroonga-engine-unjoin
のような管理コマンドを使って下さい。
例えば、/tmp/catalog.json
の位置に以下のような内容のcatalog.json
があるとします:
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.50:10031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.51:10031/droonga.000" } }
]
}
]
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:20031/droonga.000" } }
]
}
]
}
}
}
クラスタ内のデータセットDefault
に新しいreplicaノード192.168.100.52
を加えるコマンド列は以下の通りです:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--no-update \
--add-replica-hosts 192.168.100.52
省略されたオプションを含めた完全な指定はこのようになります:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--output - \
--no-update \
--dataset Default \
--add-replica-hosts 192.168.100.52
このコマンドは既存の他のreplicaと同じポート番号とタグ名を自動的に適用します。 それらの情報を指定する必要はありません。
変更されたcatalog.json
は以下の通りです:
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.50:10031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.51:10031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.52:10031/droonga.000" } }
]
}
]
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:20031/droonga.000" } }
]
}
]
}
}
}
クラスタ内のデータセットDefault
から既存のreplicaノード192.168.100.51
を取り除くコマンド列は以下の通りです:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--no-update \
--remove-replica-hosts 192.168.100.51
省略されたオプションを含めた完全な指定はこのようになります:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--output - \
--no-update \
--dataset Default \
--remove-replica-hosts 192.168.100.51
変更されたcatalog.json
は以下の通りです:
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.50:10031/droonga.000" } }
]
}
]
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:20031/droonga.000" } }
]
}
]
}
}
}
データセットから全てのreplicaノードを取り除くこともできます:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--no-update \
--remove-replica-hosts 192.168.100.52,192.168.100.51
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": []
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:20031/droonga.000" } }
]
}
]
}
}
}
しかし、これはcatalog.json
としては不正な内容です。
このコマンドを使って空のデータセットに対し再びreplicaノードを追加することはできません。
このような壊れたcatalog.json
を修復するには、droonga-engine-catalog-generate
コマンドを使って再生成する必要があります。
新しいreplicaノード192.168.100.52
をデータセットDefault
へ、もう1つの新しいreplicaノード192.168.100.61
をデータセットTesting
へ追加するコマンド列は以下の通りです:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--no-update \
--add-replica-hosts 192.168.100.52 \
--dataset Testing \
--add-replica-hosts 192.168.100.61
省略されたオプションを含めた完全な指定はこのようになります:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--output - \
--no-update \
--dataset Default \
--add-replica-hosts 192.168.100.52 \
--dataset Testing \
--add-replica-hosts 192.168.100.61
変更されたcatalog.json
は以下の通りです:
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.50:10031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.51:10031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.52:10031/droonga.000" } }
]
}
]
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:20031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.61:20031/droonga.000" } }
]
}
]
}
}
}
このコマンドはポート番号とタグ名をデータセット固有の設定として認識するため、Default
配下の新しいreplicaにはポート番号として10031
が、Testing
配下の新しいreplicaにはポート番号として20031
が使われています。
別の場合として、2つのデータセットDefault
とTesting
の間でreplicaノードを交換するコマンド列も示します:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--no-update \
--replica-hosts 192.168.100.60 \
--dataset Testing \
--replica-hosts 192.168.100.50,192.168.100.51
省略されたオプションを含めた完全な指定はこのようになります:
$ droonga-engine-catalog-modify \
--source /tmp/catalog.json \
--output - \
--no-update \
--dataset Default \
--replica-hosts 192.168.100.60 \
--dataset Testing \
--replica-hosts 192.168.100.50,192.168.100.51
変更されたcatalog.json
は以下の通りです:
{
"version": 2,
"effectiveDate": "2015-05-08T09:02:12+00:00",
"datasets": {
"Default": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.60:10031/droonga.000" } }
]
}
]
},
"Testing": {
"nWorkers": 4,
"plugins": ["groonga", "search", "crud", "dump", "system", "catalog"],
"schema": {},
"replicas": [
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.50:20031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.51:20031/droonga.000" } }
]
}
]
}
}
}
個々のvolumeのポート番号が変化したことに注意して下さい。 ポート番号はデータセットの方に紐付けられているため、ポート番号が入れ替わっています。
--source=PATH
catalog.json
の読み込み元パス。
-
を指定した場合は標準入力からcatalog.json
を受け取ります。
指定されたパスの位置にある既存のファイルは、確認無しに上書きされます。
既定値は、そのコンピュータ上に設定されるdroonga-engine
サービスのcatalog.json
の位置(/home/droonga-engine/droonga/catalog.json
)です。--output=PATH
catalog.json
の保存先パス。
-
を指定した場合は標準出力に対して出力します。
指定されたパスの位置にある既存のファイルは、確認無しに上書きされます。
既定値は-
です。--[no-]update
--update
は、--source
オプションで指定された入力ファイル自体を上書きします。--no-update
は、変更後のcatalog.json
を--output
で指定された出力先に出力します。既定値は--update
です。
--dataset=NAME
Default
です。--replica-hosts=NAME1,NAME2,...
--dataset
オプションで定義されたデータセットにおいて、replicaとして使う1つ以上のEngineノードのホスト名。
このオプションを指定した場合、データセット内の既存のreplicaノードは全て置き換えられます。--add-replica-hosts=NAME1,NAME2,...
--dataset
オプションで定義されたデータセットに対して追加する、1つ以上のEngineノードのホスト名。--remove-replica-hosts=NAME1,NAME2,...
--dataset
オプションで定義されたデータセットから取り除く、1つ以上のEngineノードのホスト名。このコマンドは、Rubygemsのパッケージdroonga-engine
の一部としてインストールされます。
# gem install droonga-engine