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 项目中提出此类问题。
使用 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 项目中提出此类问题。