Solr 9.12双节点搭配ZooKeeper集群启动异常求助
Solr 9.12集群启动异常排查(2节点+3ZK架构)
问题现象
- 原Solr 8.11集群(2个Solr节点+3个ZooKeeper节点)运行正常,升级至Solr 9.12后出现异常
- 单独启动任意一个Solr节点均可正常运行,但同时启动两个节点时,必有一个无法启动
- 执行
sudo service solr status返回错误:
ERROR: Failed to get system information from http://localhost:8983/solr due to: org.apache.solr.common.SolrException: Parse error : <p> Searching for Solr?<br/> You must type the correct path.<br/> Solr will respond. </p>
- Solr日志核心报错:
2023-05-25 19:00:32.043 WARN (qtp1978504976-24) [ ] o.e.j.s.HttpChannel /solr/admin/info/system => javax.servlet.ServletException: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:157) javax.servlet.ServletException: javax.servlet.UnavailableException: Error processing the request. CoreContainer is either not initialized or shutting down. at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:157) ~[jetty-server-10.0.13.jar:10.0.13] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) ~[jetty-server-10.0.13.jar:10.0.13] at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301) ~[jetty-rewrite-10.0.13.jar:10.0.13]
- 沿用Solr 8配置,修改chroot路径后,
livenodes始终显示为1 - 两个Solr节点的
solr.in.sh均配置ZK_HOST="{zookeeper1IP},{zookeeper2IP},{zookeeper3IP}:2181"
排查与解决方案
1. 检查端口与节点标识冲突
- 确认两个Solr节点的
SOLR_PORT配置是否重复,默认8983,需修改为不同端口(如8983/8984) - 检查
solr.in.sh中的SOLR_NODE_NAME参数,确保两个节点有唯一名称(如solr-node-01/solr-node-02),重复名称会导致ZK节点注册冲突
2. 清理ZK中残留的旧版本配置
Solr 9对ZK存储的集群元数据兼容性有严格要求,残留的Solr 8配置会导致初始化失败:
- 停止所有Solr节点与ZK节点
- 清理每个ZK节点的
dataDir目录下的旧数据 - 重启ZK集群后,重新上传Solr 9的默认配置集:
bin/solr zk upconfig -n default_config -d server/solr/configsets/_default/conf -z {zookeeper1IP},{zookeeper2IP},{zookeeper3IP}:2181 - 重新启动Solr节点
3. 修正chroot路径配置
若使用chroot,需保证所有节点的ZK_HOST配置一致且路径已在ZK中创建:
- 修改
solr.in.sh中的ZK_HOST为完整路径:ZK_HOST="{zookeeper1IP},{zookeeper2IP},{zookeeper3IP}:2181/solr" - 使用ZK客户端创建对应路径:
bin/zkCli.sh -server {zookeeper1IP}:2181 create /solr ""
4. 验证ZK集群健康状态
- 使用ZK客户端检查live_nodes列表:
bin/zkCli.sh -server {zookeeper1IP}:2181 ls /solr/live_nodes - 若节点未注册,检查Solr节点与ZK节点的网络连通性、ZK ACL权限配置
5. 排查完整启动日志
查看Solr启动目录下server/logs/solr.log的完整日志,重点关注初始化阶段的错误信息(如配置文件解析失败、权限不足、依赖缺失等)
内容的提问来源于stack exchange,提问作者Akhtar Zaman
相关产品推荐
相关产品推荐

