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

Solr AutoScaling - Add replicas on new nodes

使用 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个节点。

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

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

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

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

第三个进球:

Only one replica for each shard on each node.

要实现这一点,“Limit Replica Placement”示例中给出的策略规则就足够了。但是,查看您发布的屏幕截图,您实际上是指今天不受支持的 (collection,shard) 对。您需要如下策略规则(以下不起作用,因为不支持 collection:#EACH):

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

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

感谢您提供这些出色的用例。我建议在 solr-user mailing list because not a lot of Solr developers frequent Whosebug. I could only find this question because it was posted on the docker-solr 项目中提出此类问题。