我目前正在尝试在AWS Autoscaling组中设置SolrCloud,以便它可以动态扩展。
我还向Solr添加了以下触发器,以便每个节点将对每个集合进行1个(并且只有一个)复制:
list.sort((a,b) -> a.substring(3,4).compareTo(b.substring(3,4)));
这很好。但是我的问题是,当删除一个节点时,它不会从该节点上删除所有19个副本,并且在访问“节点”页面时遇到问题:
在日志中,发生此异常:
{
"set-cluster-policy": [
{"replica": "<2", "shard": "#EACH", "node": "#EACH"}
],
"set-trigger": [{
"name": "node_added_trigger",
"event": "nodeAdded",
"waitFor": "5s",
"preferredOperation": "ADDREPLICA"
},{
"name": "node_lost_trigger",
"event": "nodeLost",
"waitFor": "120s",
"preferredOperation": "DELETENODE"
}]
}
因此,问题在于它只有10个池大小,其中10个正忙,没有任何队列(同步执行)。实际上,它实际上只删除了10个副本,其余9个副本留在那里。手动发送API命令删除该节点时,它工作正常,因为Solr只需要删除其余的9个副本,一切就恢复了。
如何增加(小的)线程池大小和/或激活对其余删除任务的排队?另一个解决方案可能是重试失败的任务,直到成功为止。
在Ubuntu Server上使用Solr 7.7.1,该服务器上安装了Solr的安装脚本(所以我猜它正在使用Jetty吗?)。
感谢您的帮助!
编辑:我从Solr用户组邮件列表中得到了反馈。这似乎是设计缺陷:https://issues.apache.org/jira/browse/SOLR-11208 现在看来似乎不是可配置的,但是如果有人准备好解决方法,我将很高兴学习它。