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

标签 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

最佳答案

简短的回答是,您今天的目标并非无法实现(直到 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:#EACH):

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

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

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

关于Solr AutoScaling - 在新节点上添加副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50839060/

相关文章:

containers - Fargate 向上扩展始终如一,但向下扩展并不始终如一

Solr : Index does not have an operational DataImportHandler defined

solrcloud - solr云: RROR: Error loading config name for collection

php - 使用 Apache Solr 索引 pdf 文件内容

c# - SolrNet 中是否有核心操作的类或方法?

java - 在 Solr(J) 中搜索嵌套文档

exception - 由于 3rd 方库的位置,启动 Solr 云时出错

lucene - Solr高亮问题

kubernetes - 有没有一种干净的方法将kubernetes与云自动扩展连接起来?

amazon-web-services - Passenger - 使用 "Requests in queue"作为自动缩放的 AWS 指标