我使用 Solr 4.4、Zookeeper 3.4.5 和 Tomcat 7。
集群设置:3 个分片和 3 个副本。总共 6 个 Solr 实例。
集群已启动并正在运行。一切似乎都很好。日志中没有任何重要内容,除了一些关于已弃用类的警告。
我如何进行配置更新:
运行以下命令:
java -classpath .:solr-jars/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost ZOOKEEPER_HOST:PORT -d solr-conf -confname myconf
检查 Zookeeper 中的配置是否已更新:
/var/zookeeper/bin/zkCli.sh ZOOKEEPER_HOST:PORT
ls /configs/myconfig/schema.xml
ls /configs/myconfig/solrconfig.xml
通过 Solr Collection API 重新加载集合
curl HOST/solr/admin/collections?action=RELOAD&name=collection1
配置更新似乎已成功应用于所有节点。但有时集群中的 1 个节点出现故障(在 Solr Admin UI 中标记为棕色)。 Tomcat 重新启动,集合重新加载无助于恢复此节点。
日志中的错误信息:
SyncStrategy - No UpdateLog found - cannot sync
问题:
- 有什么方法可以使故障节点恢复运行吗?当然,无需删除所有数据。
- 在 Zookeeper 中更新配置后强制 Solr 节点接受配置的正确方法是什么?尽可能不重启 Tomcat(这是一个生产系统)
- (可选)一般来说,您对 SolrCloud 的稳定性和可预测性有何看法?在与 SC 合作的过程中,我发现了很多来自其他人的提示和问题。看起来不是个好兆头。
更新 1 看起来错误消息与实际问题无关。配置事务日志后,此错误消失。但是在收集重新加载后很少有节点仍然关闭。
恢复的唯一方法是直接在 Zookeeper 中编辑 clusterstate.json,并将节点状态更改为“事件”。之后,node 似乎就可以稳定了。
最佳答案
我只能回答第二个问题(如果我理解正确的话)。 将配置上传到 ZooKeeper 后更改配置的正确方法是使用“linkconfig”。大概是这样的:
java -classpath .:solr-jars/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost ZOOKEEPER_HOST:PORT -confname myconf -collection collection1
关于tomcat - 收集 RELOAD 后 SolrCloud 节点关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19096384/