クラスタとノードの管理コマンド
クラスタとは、相互に連携して動作する Solr ノードのセットです。
これらの API コマンドは、SolrCloud クラスタ全体レベル、または個々のノードで動作します。
CLUSTERSTATUS: クラスタステータス
コレクション、シャード、レプリカ、構成名、コレクションエイリアス、クラスタプロパティなど、クラスタステータスをフェッチします。
さらに、このコマンドは、コレクションの動作状態を監視しやすくするために、各コレクションとシャードの health
ステータスを報告します。次のヘルス状態の値が定義されており、アクティブなレプリカの割合 (active
) に基づいて、最良から最悪の順に並べられています。
GREEN
-
active == 100%
、すべてのレプリカがアクティブで、シャードリーダーが存在します。 YELLOW
-
100% > active > 50%
、かつシャードリーダーが存在します。 ORANGE
-
50% >= active > 0%
、かつシャードリーダーが存在します。 RED
-
アクティブなレプリカがないまたはシャードリーダーが存在しません。
コレクションのヘルス状態は、任意のシャードの最悪の状態として報告されます。たとえば、1つの YELLOW を除くすべてのシャードが GREEN であるコレクションの場合、コレクションのヘルスは YELLOW として報告されます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=CLUSTERSTATUS
V2 API
curl -X GET https://127.0.0.1:8983/api/cluster
CLUSTERSTATUS パラメータ
collection
-
オプション
デフォルト: なし
情報が要求されるコレクションまたはエイリアス名。省略すると、クラスタ内のすべてのコレクションの情報が返されます。エイリアスが指定された場合、エイリアス内のコレクションに関する情報が返されます。
shard
-
オプション
デフォルト: なし
情報が要求されるシャード。複数のシャード名をコンマ区切りのリストとして指定できます。
_route_
-
オプション
デフォルト: なし
特定のドキュメントが属するシャードの詳細が必要で、どのシャードに属しているかわからない場合に使用できます。
CLUSTERSTATUS の使用例
入力
https://127.0.0.1:8983/solr/admin/collections?action=CLUSTERSTATUS
出力
{
"responseHeader":{
"status":0,
"QTime":333},
"cluster":{
"collections":{
"collection1":{
"shards":{
"shard1":{
"range":"80000000-ffffffff",
"state":"active",
"health": "GREEN",
"replicas":{
"core_node1":{
"state":"active",
"core":"collection1",
"node_name":"127.0.1.1:8983_solr",
"base_url":"http://127.0.1.1:8983/solr",
"leader":"true"},
"core_node3":{
"state":"active",
"core":"collection1",
"node_name":"127.0.1.1:8900_solr",
"base_url":"http://127.0.1.1:8900/solr"}}},
"shard2":{
"range":"0-7fffffff",
"state":"active",
"health": "GREEN",
"replicas":{
"core_node2":{
"state":"active",
"core":"collection1",
"node_name":"127.0.1.1:7574_solr",
"base_url":"http://127.0.1.1:7574/solr",
"leader":"true"},
"core_node4":{
"state":"active",
"core":"collection1",
"node_name":"127.0.1.1:7500_solr",
"base_url":"http://127.0.1.1:7500/solr"}}}},
"router":{"name":"compositeId"},
"replicationFactor":"1",
"znodeVersion": 11,
"autoCreated":"true",
"configName" : "my_config",
"health": "GREEN",
"aliases":["both_collections"]
},
"collection2":{
"..."
}
},
"aliases":{ "both_collections":"collection1,collection2" },
"roles":{
"overseer":[
"127.0.1.1:8983_solr",
"127.0.1.1:7574_solr"]
},
"live_nodes":[
"127.0.1.1:7574_solr",
"127.0.1.1:7500_solr",
"127.0.1.1:8983_solr",
"127.0.1.1:8900_solr"]
}
}
CLUSTERPROP: クラスタプロパティ
クラスタ全体のプロパティを追加、編集、または削除します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=CLUSTERPROP&name=urlScheme&val=https
V2 API
curl -X POST https://127.0.0.1:8983/api/cluster -H 'Content-Type: application/json' -d '
{
"set-property": {
"name": "urlScheme",
"val": "https"
}
}
'
CLUSTERPROP パラメータ
name
-
オプション
デフォルト: なし
プロパティの名前。サポートされているプロパティ名は、
location
、maxCoresPerNode
、urlScheme
、およびdefaultShardPreferences
です。Jaegerトレーシングモジュールが有効になっている場合は、プロパティsamplePercentage
も使用可能です。他のプロパティを設定することもできます(たとえば、カスタムプラグインに必要な場合)。ただし、それらはプレフィックス
ext.
で始まる必要があります。ext.
で始まらない不明なプロパティは拒否されます。 val
-
オプション
デフォルト: なし
プロパティの値。値が空またはnullの場合、プロパティは設定解除されます。
CLUSTERPROPレスポンス
レスポンスには、リクエストのステータスと、更新または削除されたプロパティが含まれます。ステータスが「0」以外の場合、エラーメッセージでリクエストが失敗した理由が説明されます。
CLUSTERPROPの使用例
入力
https://127.0.0.1:8983/solr/admin/collections?action=CLUSTERPROP&name=urlScheme&val=https&wt=xml
出力
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
</response>
クラスタ全体のデフォルトの設定
defaults
パラメーターを使用して、コレクションの特定の属性にクラスタ全体のデフォルト値を設定できます。
デフォルト値の設定/更新
V1 API
このアクションに相当するV1はありません。
V2 API
curl -X POST -H 'Content-type:application/json' --data-binary '
{
"set-obj-property": {
"defaults" : {
"collection": {
"numShards": 2,
"nrtReplicas": 1,
"tlogReplicas": 1,
"pullReplicas": 1
}
}
}
}' https://127.0.0.1:8983/api/cluster
nrtReplicas
の唯一の値を設定解除
curl -X POST -H 'Content-type:application/json' --data-binary '
{
"set-obj-property": {
"defaults" : {
"collection": {
"nrtReplicas": null
}
}
}
}' https://127.0.0.1:8983/api/cluster
defaults
のすべての値を設定解除
curl -X POST -H 'Content-type:application/json' --data-binary '
{ "set-obj-property" : {
"defaults" : null
}' https://127.0.0.1:8983/api/cluster
デフォルトのシャードプリファレンス
defaultShardPreferences
パラメーターを使用すると、ラックまたはアベイラビリティゾーンの認識を実装できます。最初に、システムプロパティ(例:-Drack=rack1
)を使用してノードに「ラベル」を付けます。次に、defaultShardPreferences
の値をnode.sysprop:sysprop.YOUR_PROPERTY_NAME
のように設定します。
curl -X POST -H 'Content-type:application/json' --data-binary '
{
"set-property" : {
"name" : "defaultShardPreferences",
"val" : "node.sysprop:sysprop.rack"
}
}' https://127.0.0.1:8983/api/cluster
この時点で、例えばrack=rack1
を持つノードでクエリを実行すると、Solrはrack1
からのレプリカのみをヒットしようとします。
レプリカのバランス
均衡に達するまで、指定されたSolrノードのセット全体でレプリカをシャッフルします。
構成されたレプリカ配置プラグインを使用して、次を決定します。
-
バランシングのためにどのレプリカを移動する必要があるか
-
それらのレプリカをどのノードに配置する必要があるか
-
クラスタが「均衡」に達したとき
V2 API
curl -X POST https://127.0.0.1:8983/api/cluster/replicas/balance -H 'Content-Type: application/json' -d '
{
"nodes": ["localhost:8983_solr", "localhost:8984_solr"],
"async": "balance-replicas-1"
}
'
パラメーター
nodes
-
オプション
デフォルト: なし
レプリカのバランスをとるノード。このノードセットの外部にあるレプリカは、バランシングに含まれません。
このパラメーターが指定されていない場合、すべてのライブデータノードが使用されます。
waitForFinalState
-
オプション
デフォルト:
false
true
の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみ、リクエストは完了します。false
の場合、APIは、影響を受けるリーダーレプリカなど、最小限のレプリカがアクティブになったときに戻ります。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエストID。これは非同期で処理されます。
BALANCESHARDUNIQUE:ノード間でプロパティをバランス
特定のプロパティが、コレクションを構成する物理ノード間で均等に分散されるようにします。プロパティが既にレプリカに存在する場合、可能な限りその場所に残すように努力します。プロパティがシャード上のどのレプリカにもない場合、1つが選択され、プロパティが追加されます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=BALANCESHARDUNIQUE&collection=techproducts&property=preferredLeader
V2 API
curl -X POST https://127.0.0.1:8983/api/collections/techproducts/balance-shard-unique -H 'Content-Type: application/json' -d '
{
"property": "preferredLeader"
}
'
BALANCESHARDUNIQUEパラメーター
collection
-
必須
デフォルト: なし
プロパティをバランスさせるコレクションの名前。
property
-
必須
デフォルト: なし
バランスさせるプロパティ。リテラルの
property.
が明示的に指定されていない場合、このプロパティの先頭に追加されます。 onlyactivenodes
-
オプション
デフォルト:
true
通常、プロパティはアクティブなノードでのみインスタンス化されます。このパラメーターが
false
として指定されている場合、非アクティブなノードも分散に含まれます。 shardUnique
-
オプション
デフォルト: なし
ある種の安全弁。この値をデフォルトで
true
にする事前定義されたプロパティ(preferredLeader
)が1つあります。バランスされる他のすべてのプロパティについては、これをtrue
に設定する必要があります。そうしないとエラーメッセージが返されます。
BALANCESHARDUNIQUEの使用例
入力
これらのコマンドのいずれかを実行すると、「preferredLeader」プロパティが「collection1」コレクションのすべてのシャードの1つのレプリカに配置されます。
https://127.0.0.1:8983/solr/admin/collections?action=BALANCESHARDUNIQUE&collection=collection1&property=preferredLeader&wt=xml
https://127.0.0.1:8983/solr/admin/collections?action=BALANCESHARDUNIQUE&collection=collection1&property=property.preferredLeader&wt=xml
出力
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">9</int>
</lst>
</response>
この呼び出しを発行した後のクラスター状態を調べると、このプロパティを持つ各シャードに正確に1つのレプリカが表示されるはずです。
レプリカの移行
指定されたソースノードのセットからすべてのレプリカを移行します。
+ 複数のノードがtargetNodeとして使用されている場合(明示的またはデフォルトで)、構成されたレプリカ配置プラグインを使用して、移行された各レプリカに使用するtargetNodeを決定します。
V2 API
curl -X POST https://127.0.0.1:8983/api/cluster/replicas/migrate -H 'Content-Type: application/json' -d '
{
"sourceNodes": ["localhost:8983_solr", "localhost:8984_solr"],
"targetNodes": ["localhost:8985_solr", "localhost:8986_solr"],
"async": "migrate-replicas-1"
}
'
パラメーター
sourceNodes
-
必須
デフォルト: なし
レプリカのバランスをとるノード。このノードセットの外部にあるレプリカは、バランシングに含まれません。
targetNodes
-
オプション
デフォルト: なし
移行されたレプリカが移動されるノード。指定されていない場合、APIは
sourceNodes
にないすべてのライブノードを使用します。レプリカの移行先ノードが複数ある場合、構成されたPlacementPluginレプリカはこれらのノードの1つを選択します
waitForFinalState
-
オプション
デフォルト:
false
true
の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみ、リクエストは完了します。false
の場合、APIは、影響を受けるリーダーレプリカなど、最小限のレプリカがアクティブになったときに戻ります。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエストID。これは非同期で処理されます。
REPLACENODE:ノード内のすべてのレプリカを別のノードに移動
このAPIの機能はレプリカの移行によって置き換えられ、強化されました。代わりに新しいAPIを使用することを検討してください。このAPIは将来のバージョンで削除される可能性があります。 |
このコマンドは、あるノード(ソース)のレプリカを別のノード(ターゲット)で再作成します。各レプリカがコピーされた後、ソースノードのレプリカが削除されます。
シャードリーダーでもあるソースレプリカの場合、操作は、timeout
パラメーターで設定された秒数だけ待機して、リーダーになることができるアクティブなレプリカ(既存のレプリカがリーダーになるか、新しいレプリカがリカバリを完了してリーダーになる)があることを確認します。
targetNodeが提供されていない場合、構成されたレプリカ配置プラグインを使用して、再作成された各レプリカを配置するノードを決定します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=REPLACENODE&sourceNode=source-node&targetNode=target-node
V2 API
curl -X POST "https://127.0.0.1:8983/api/cluster/nodes/localhost:7574_solr/replace" -H 'Content-Type: application/json' -d '
{
"targetNodeName": "localhost:8983_solr",
"waitForFinalState": "false",
"async": "async"
}
'
REPLACENODEパラメーター
sourceNode
-
必須
デフォルト: なし
レプリカのコピー元となるソースノード。
targetNode
-
オプション
デフォルト: なし
レプリカがコピーされるターゲットノード。このパラメーターが指定されていない場合、Solrは
sourceNode
を除くすべてのライブノードを使用します。構成されたレプリカ配置プラグインを使用して、各レプリカに使用されるノードを決定します。 parallel
-
オプション
デフォルト:
false
このフラグが
true
に設定されている場合、すべてのレプリカは別のスレッドで作成されます。レプリカのインデックスが非常に大きい場合、これによりネットワークとディスクI/Oが非常に高くなる可能性があることに注意してください。 waitForFinalState
-
オプション
デフォルト:
false
true
の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみ、リクエストは完了します。false
の場合、APIは、影響を受けるリーダーレプリカなど、最小限のレプリカがアクティブになったときに戻ります。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエストID。これは非同期で処理されます。
timeout
-
オプション
デフォルト:
300
秒新しいレプリカが作成され、リーダーレプリカが完全に回復するまで待機する時間(秒単位)。
この操作は、ソースノードに属するレプリカに必要なロックを保持しません。したがって、この期間中に他のコレクション操作を実行しないでください。 |
DELETENODE:ノード内のレプリカを削除
そのノードにあるすべてのコレクションのすべてのレプリカを削除します。この操作後もノード自体はライブノードとして残ることに注意してください。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETENODE&node=nodeName
V2 API
curl -X POST "https://127.0.0.1:8983/api/cluster/nodes/localhost:7574_solr/clear/" -H 'Content-Type: application/json' -d '
{
"async": "someAsyncId"
}
'
DELETENODEパラメーター
node
-
必須
デフォルト: なし
削除するノード。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエストID。これは非同期で処理されます。
ADDROLE:役割の追加
クラスタ内の特定のノードに役割を割り当てます。唯一サポートされている役割はoverseer
です。
このコマンドを使用して、特定のノードをOverseerとして専用にします。複数回呼び出して、より多くのノードを追加します。これは、Overseerが過負荷になる可能性が高い大規模なクラスターで役立ちます。利用可能な場合は、「overseer」の役割が割り当てられているノードのリストの中から1つがoverseerになります。指定されたノードが起動して実行されていない場合、システムは役割を他のノードに割り当てます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=ADDROLE&role=overseer&node=localhost:8983_solr
V2 API
curl -X POST https://127.0.0.1:8983/api/cluster -H 'Content-Type: application/json' -d '
{
"add-role": {
"role": "overseer",
"node": "localhost:8983_solr"
}
}
'
ADDROLEパラメーター
role
-
必須
デフォルト: なし
役割の名前。現在サポートされている唯一の役割は
overseer
です。 node
-
必須
デフォルト: なし
役割が割り当てられるノードの名前。そのノードが開始される前でも役割を割り当てることができます。
REMOVEROLE:役割の削除
割り当てられた役割を削除します。このAPIは、ADDROLE操作を使用して割り当てられた役割を元に戻すために使用されます
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=REMOVEROLE&role=overseer&node=localhost:8983_solr
V2 API
curl -X POST https://127.0.0.1:8983/api/cluster -H 'Content-Type: application/json' -d '
{
"remove-role": {
"role": "overseer",
"node": "localhost:8983_solr"
}
}
'
REMOVEROLEパラメーター
role
-
必須
デフォルト: なし
役割の名前。現在サポートされている唯一の役割は
overseer
です。 node
-
必須
デフォルト: なし
役割を削除するノードの名前。
OVERSEERSTATUS:Overseerのステータスと統計
overseerの現在のステータス、さまざまなoverseer APIのパフォーマンス統計、および操作タイプごとの過去10件の失敗を返します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=OVERSEERSTATUS
V2 API
curl -X GET https://127.0.0.1:8983/api/cluster/overseer
OVERSEERSTATUSの使用例
入力
https://127.0.0.1:8983/solr/admin/collections?action=OVERSEERSTATUS
{
"responseHeader":{
"status":0,
"QTime":33},
"leader":"127.0.1.1:8983_solr",
"overseer_queue_size":0,
"overseer_work_queue_size":0,
"overseer_collection_queue_size":2,
"overseer_operations":[
"createcollection",{
"requests":2,
"errors":0,
"avgRequestsPerSecond":0.7467088842794136,
"5minRateRequestsPerSecond":7.525069023276674,
"15minRateRequestsPerSecond":10.271274280947182,
"avgTimePerRequest":0.5050685,
"medianRequestTime":0.5050685,
"75thPcRequestTime":0.519016,
"95thPcRequestTime":0.519016,
"99thPcRequestTime":0.519016,
"999thPcRequestTime":0.519016},
"removeshard",{
"..."
}],
"collection_operations":[
"splitshard",{
"requests":1,
"errors":1,
"recent_failures":[{
"request":{
"operation":"splitshard",
"shard":"shard2",
"collection":"example1"},
"response":[
"Operation splitshard caused exception:","org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: No shard with the specified name exists: shard2",
"exception",{
"msg":"No shard with the specified name exists: shard2",
"rspCode":400}]}],
"avgRequestsPerSecond":0.8198143044809885,
"5minRateRequestsPerSecond":8.043840552427673,
"15minRateRequestsPerSecond":10.502079828515368,
"avgTimePerRequest":2952.7164175,
"medianRequestTime":2952.7164175000003,
"75thPcRequestTime":5904.384052,
"95thPcRequestTime":5904.384052,
"99thPcRequestTime":5904.384052,
"999thPcRequestTime":5904.384052},
"..."
],
"overseer_queue":[
"..."
],
"..."
}