Solr AutoScaling - 在新节点上添加副本

时间:2018-06-13 13:55:31

标签: solr autoscaling solrcloud

使用Solr 7.3.1版 从3个节点开始:

我创建了一个这样的集合:

wget "localhost:8983/solr/admin/collections?action=CREATE&autoAddReplicas=true&collection.configName=my_col_config&maxShardsPerNode=1&name=my_col&numShards=1&replicationFactor=3&router.name=compositeId&wt=json" -O /dev/null

通过这种方式,我在每个节点上都有一个副本。

目标:

  • 每个分片都应该为加入群集的新节点添加副本。
  • 当节点被击落时。它应该消失。
  • 每个节点上每个分片只有一个副本。

我知道应该可以使用新的AutoScalling API,但我很难找到正确的语法。 API是非常新的,我只能找到文档。它还不错,但我想念更多的例子。

这就是它今天的样子。每个小碎片都有一个与节点数匹配的复制因子。现在有3个节点。 enter image description here

This video昨天(2018-06-13)上传,大约30分钟。在视频中有一个Solr.HttpTriggerListener示例,可用于调用任何类型的服务,例如AWS Lamda来添加新节点。

enter image description here

1 个答案:

答案 0 :(得分:4)

简短的回答是,您的目标今天无法实现(直到Solr 7.4)。

NodeAddedTrigger仅将副本从其他节点移动到新节点,以尝试平衡群集。它不支持添加新副本。我已经打开SOLR-12715来添加此功能。

类似地,NodeLostTrigger在其他节点上添加新副本以替换丢失的节点上的副本。它也不支持仅从集群状态删除副本。我已经打开SOLR-12716来解决该问题。我希望发布Solr 7.5中的两个增强功能。

第三个目标:

  

每个节点上每个分片只有一个副本。

要实现此目的,“ Limit Replica Placement”示例中给出的策略规则就足够了。但是,查看您发布的屏幕快照,实际上是指(收藏夹,碎片)对,今天不支持该对。您将需要类似以下的策略规则(以下操作无效,因为不支持collection:#EACH):

{"replica": "<2", "collection": "#EACH", "shard": "#EACH", "node": "#ANY"}

我已经打开SOLR-12717来添加此功能。

感谢您提供这些出色的用例。我建议在solr-user mailing list上问诸如此类的问题,因为不是很多Solr开发人员都经常使用Stackoverflow。我只能找到此问题,因为它已发布在docker-solr项目上。