droonga-engine-catalog-generate
は、Droonga Engineノード用の新しいcatalog.json
ファイルを生成します。
多くの場合において、このコマンドを使う必要はまずありません。代わりに、Engineノードの初期化にはdroonga-engine-configure
コマンドを使い、クラスタ構成の変更にはdroonga-engine-join
やdroonga-engine-unjoin
のような管理コマンドを使って下さい。
このコマンドは、新しいcatalog.json
をゼロから生成する事に特化して設計されています。
replicaノードのリストだけを変更したい場合には、droonga-engine-catalog-modify
コマンドの方が便利です。
最も一般的な使い方は、droonga-engine-join
コマンドによって管理される新しいレプリカノードとして、孤立したEngineノード用のcatalog.json
を生成する場面です。例えば、まだ準備されていないノードである192.168.100.50
にログインしている場合のコマンド列は以下の通りです:
(on 192.168.100.50)
# droonga-engine-catalog-generate --hosts 192.168.100.50
省略されたオプションを含めた完全な指定はこのようになります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--output /home/droonga-engine/droonga/catalog.json \
--dataset Default \
--n-workers 4 \
--hosts 192.168.100.50 \
--port 10031 \
--tag droonga \
--n-slices 1 \
--plugins groonga,search,crud,dump,system,catalog
--n-workers
、--hosts
、--port
、--tag
、--n-slices
および--plugins
の各オプションは、最も近くに書かれた先行する--dataset
オプションに紐付けられています。
ユーザが指定した--dataset
オプションよりも前に書かれたこれらのオプションの指定は、自動的に既定のデータセット名Default
に対して紐付けられます。
生成された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" } }
]
}
]
}
}
}
複数のreplicaノードを持つデータセットを定義するには、replicaノードとして使われる全てのノードのホスト名を,
(カンマ)で区切って--host
オプションに指定します:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--hosts 192.168.100.50,192.168.100.51
省略されたオプションを含めた完全な指定はこのようになります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--output /home/droonga-engine/droonga/catalog.json \
--dataset Default \
--n-workers 4 \
--hosts 192.168.100.50,192.168.100.51 \
--port 10031 \
--tag droonga \
--n-slices 1 \
--plugins groonga,search,crud,dump,system,catalog
生成された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" } }
]
}
]
}
}
}
sliceに分割されたreplicaを持つデータセットを定義するためには、--n-slices
オプションをそのデータセットに対して指定する必要があります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--hosts 192.168.100.50,192.168.100.51 \
--n-slices 2
省略されたオプションを含めた完全な指定はこのようになります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--output /home/droonga-engine/droonga/catalog.json \
--dataset Default \
--n-workers 4 \
--hosts 192.168.100.50,192.168.100.51 \
--port 10031 \
--tag droonga \
--n-slices 2 \
--plugins groonga,search,crud,dump,system,catalog
生成された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": 50,
"volume": { "address": "192.168.100.50:10031/droonga.000" } },
{ "weight": 50,
"volume": { "address": "192.168.100.50:10031/droonga.001" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 50,
"volume": { "address": "192.168.100.51:10031/droonga.000" } },
{ "weight": 50,
"volume": { "address": "192.168.100.51:10031/droonga.001" } }
]
}
]
}
}
}
2
またはそれより大きな数を--n-slices
オプションで指定すると、複数のsliceが各replicaノード自身の上に生成されます。
有効なslice分けのためには1つのsliceごとに1ノードを割り当てるべきですが、現在のところこのコマンドはそのようなパターンに対応していません。
また、slice配下のreplicaの定義にもまだ対応できていません。
これらの制限事項は将来のバージョンで解消される予定です。
クラスタ内に複数のデータセットを定義するには、--dataset
オプションを使う必要があります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--hosts 192.168.100.50,192.168.100.51 \
--port 20031 \
--dataset Testing \
--hosts 192.168.100.60,192.168.100.61 \
--port 20032
省略されたオプションを含めた完全な指定はこのようになります:
(on 192.168.100.50)
# droonga-engine-catalog-generate \
--output /home/droonga-engine/droonga/catalog.json \
--dataset Default \
--n-workers 4 \
--hosts 192.168.100.50,192.168.100.51 \
--port 20031 \
--tag droonga \
--n-slices 1 \
--plugins groonga,search,crud,dump,system,catalog \
--dataset Testing \
--n-workers 4 \
--hosts 192.168.100.60,192.168.100.61 \
--port 20032 \
--tag droonga \
--n-slices 1 \
--plugins groonga,search,crud,dump,system,catalog
上記の例の通り、データセットに紐付けられたオプションはそれに先行する最も近くに書かれた--dataset
オプションで定義されるデータセットに対して影響を及ぼします。
生成された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:20031/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.51:20031/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:20032/droonga.000" } }
]
},
{
"dimension": "_key",
"slicer": "hash",
"slices": [
{ "weight": 100,
"volume": { "address": "192.168.100.61:20032/droonga.000" } }
]
}
]
}
}
}
--output=PATH
catalog.json
の保存先パス。
-
を指定した場合は標準出力に対して出力します。
指定されたパスの位置にある既存のファイルは、確認無しに上書きされます。
既定値は、そのコンピュータ上に設定されるdroonga-engine
サービスのcatalog.json
の位置(/home/droonga-engine/droonga/catalog.json
)です。--dataset=NAME
Default
です。--n-workers=N
--dataset
オプションで定義されたデータセットにおいて、個々のvolumeに対して用意するworkerの数。
既定値は4
です。--hosts=NAME1,NAME2,...
--dataset
オプションで定義されたデータセットにおいて、replicaとして使う1つ以上のEngineノードのホスト名。
既定値は、コマンドを実行しているコンピュータ自身の推測されたホスト名です。--port=PORT
--dataset
オプションで定義されたデータセットにおいて、Engineノードとの通信に使うポート番号。
既定値は10031
です。--tag=TAG
--dataset
オプションで定義されたデータセットにおいて、Engineノードとの通信に使うタグ名。
既定値はdroonga
です。--n-slices=N
--dataset
オプションで定義されたデータセットにおいて、各レプリカに用意するsliceの数。
既定値は1
です。--plugins=PLUGIN1,PLUGIN2,...
--dataset
オプションで定義されたデータセットにおいて、有効化するプラグインの名前。
既定値はgroonga,search,crud,dump,system,catalog
(組み込みのプラグイン全ての一覧)です。--schema=PATH
--dataset
オプションで定義されたデータセット向けのスキーマ定義を含んだJSONファイルのパス。--fact=TABLE
--dataset
オプションで定義されたデータセットにおいて、fact表として扱うtableの名前。--replicas=PATH
--dataset
オプションで定義されたデータセット向けのreplica群の定義を含んだJSONファイルのパス。
このオプションが指定された場合、データセット内にreplica群を定義するための他のオプション(--hosts
、--port
、--tag
、および--n-slices
)は全て無視されます。このコマンドは、Rubygemsのパッケージdroonga-engine
の一部としてインストールされます。
# gem install droonga-engine