REBALANCELEADERS:重新平衡leader
REBALANCELEADERS
根据活动节点上的preferredLeader属性重新分配集合中的leader。
/admin/collections?action=REBALANCELEADERS&collection=collectionName
根据活动节点上的preferredLeader属性将leader分配到一个集合中。在通过BALANCESHARDUNIQUE或ADDREPLICAPROP命令分配preferredLeader属性之后,应执行此命令。
并不要求集合中的所有碎片都有preferredLeader
属性。再平衡将只尝试重新分配领导那些将preferredLeader
属性设置为true
的副本,而不是当前的碎片leader和当前的活动状态。
REBALANCELEADERS参数
- collection
要重新平衡的集合的名称
preferredLeaders
。该参数是必需的。 - maxAtOnce
一次排队的最大重新分配数量。值<= 0使用默认值Integer.MAX_VALUE。
当达到这个数字时,该过程等待一个或多个领导者被成功分配,然后再增加更多的队列。
- maxWaitSeconds
默认为
60
。这是等待领导人重新分配时的超时值。如果maxAtOnce
小于将要发生的重新分配的数量,则这是任何一次等待至少一次重新分配的最大间隔。例如,如果10和再分配是发生和
maxAtOnce
是1
与maxWaitSeconds
是60
,在该命令可以等待的时间的上限是10分钟。
REBALANCELEADERS响应
响应将包括请求的状态。如果状态不是“0”,则会显示一条错误消息,说明请求失败的原因。
使用REBALANCELEADERS的例子
在这个例子中输入:
这些命令中的任何一个都会导致所有具有preferredLeader属性设置的活动副本,并且不是已经成为首选的leader。
http://localhost:8983/solr/admin/collections?action=REBALANCELEADERS&collection=collection1
http://localhost:8983/solr/admin/collections?action=REBALANCELEADERS&collection=collection1&maxAtOnce=5&maxWaitSeconds=30
得到输出:
在这个例子中,“alreadyLeaders”部分中的两个副本已经将leader分配给与该preferredLeader属性相同的节点,因此没有采取任何操作。
“inactivePreferreds”部分中的副本具有preferredLeader属性集,但节点已关闭且不采取任何操作。“successes”部分的三个节点是leader,因为他们拥有preferredLeader属性集,但不是leader,他们是活跃的。
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">123</int>
</lst>
<lst name="alreadyLeaders">
<lst name="core_node1">
<str name="status">success</str>
<str name="msg">Already leader</str>
<str name="nodeName">192.168.1.167:7400_solr</str>
</lst>
<lst name="core_node17">
<str name="status">success</str>
<str name="msg">Already leader</str>
<str name="nodeName">192.168.1.167:7600_solr</str>
</lst>
</lst>
<lst name="inactivePreferreds">
<lst name="core_node4">
<str name="status">skipped</str>
<str name="msg">Node is a referredLeader, but it's inactive. Skipping</str>
<str name="nodeName">192.168.1.167:7500_solr</str>
</lst>
</lst>
<lst name="successes">
<lst name="_collection1_shard3_replica1">
<str name="status">success</str>
<str name="msg">
Assigned 'Collection: 'collection1', Shard: 'shard3', Core: 'collection1_shard3_replica1', BaseUrl:
'http://192.168.1.167:8983/solr'' to be leader
</str>
</lst>
<lst name="_collection1_shard5_replica3">
<str name="status">success</str>
<str name="msg">
Assigned 'Collection: 'collection1', Shard: 'shard5', Core: 'collection1_shard5_replica3', BaseUrl:
'http://192.168.1.167:7200/solr'' to be leader
</str>
</lst>
<lst name="_collection1_shard4_replica2">
<str name="status">success</str>
<str name="msg">
Assigned 'Collection: 'collection1', Shard: 'shard4', Core: 'collection1_shard4_replica2', BaseUrl:
'http://192.168.1.167:7300/solr'' to be leader
</str>
</lst>
</lst>
</response>
发出这个调用之后检查clustertate应该显示每个拥有该preferredLeader属性的活动节点,也应该将“leader”属性设置为true。