REBALANCELEADERS:重新平衡leader

2018-01-08 11:00 更新

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和再分配是发生和maxAtOnce1maxWaitSeconds60,在该命令可以等待的时间的上限是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。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号