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

Mar*_*sen 5 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
Run Code Online (Sandbox Code Playgroud)

这样,我在每个节点上都有一个副本。

目标:

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

我知道使用新的AutoScalling API应该可以实现,但是我很难找到正确的语法。该API非常新,我只能找到文档。这还不错,但我错过了更多示例。

今天就是这样。有许多小分片,每个小分片的复制因子都与节点数相匹配。现在有3个节点。 在此处输入图片说明

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

在此处输入图片说明

小智 6

简短的答案是您的目标今天无法实现(至Solr 7.4)。

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

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

至于第三个目标:

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

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

{"replica": "<2", "collection": "#EACH", "shard": "#EACH", "node": "#ANY"}
Run Code Online (Sandbox Code Playgroud)

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

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