codecamp

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和再分配是发生和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。

BALANCESHARDUNIQUE: 在节点之间平衡属性
FORCELEADER:强制碎片leader
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

SolrCloud

SolrCloud配置和参数

如何使用AsciiDoc

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }