我有 3 个虚拟机窗口,所有窗口上都安装了 solr 5.4.0 和 3.4.6 zookeeper;这两个服务在虚拟机启动时自动启动。重新启动虚拟机后,solr 无法正确响应,它给出了错误 500:
HTTP 错误 500 访问 /solr/ 时出现问题。原因:服务器错误... SolrException:处理请求时出错。CoreContainer 未初始化或正在关闭。
检查日志我还看到了这个错误:
oascSolrCore null:org.apache.solr.common.SolrException:从 zookeeper 加载 solr.xml 时发生错误
尝试停止所有虚拟机上的 zookeeper 和 solr 服务并重新启动(在所有虚拟机上启动 zookeeper 之前和 solr 之后),有时需要 solr 启动才能正常工作;其他时候,通过 UI 的 solrcloud 部分,我们注意到节点处于关闭状态(写为棕色)
我列出了创建集群 solr 所运行的程序:
- 创建文件夹“zookeeper/data”,并通过这种方式添加 zookeeper 节点来更改 zoo.cfg 文件
初始限制=5
同步限制=2
dataDir=C:/zookeeper/数据
客户端端口=2181
服务器.1=zknode1:2888:3888
服务器.2=zknode2:2888:3888
服务器.3=zknode2:2888:3888
- 在 zookeeper\data 中的节点 (1, 2, 3) 上创建了具有相应编号的 myid 文件
- 通过 NSSM,我创建了启动脚本 zookeeper\bin\zkServer.cmd 的 zk 服务,以及启动 solr\bin\solr.cmd 的 solr 服务,参数如下
-c -z "zknode1:2181,zknode2:2181,zknode3:2181" -f
我根据 solr 而非云上的现有配置创建了一个集合
solr.cmd create_collection -c mycoll -d C:\conf\mycoll\conf -n mycoll -shards 1 -replicationFactor 3
在每个 solr 节点上都可以看到创建了 mycoll_shard1_replicaX 文件夹,其中 X 在每个节点 (1,2,3) 上都发生了变化。查询所有操作都有效,甚至数据导入也有效,但如果我重新启动节点,就会发现上面写的问题。我在创建集合时出错了,还是这是一个已知的错误?
答案1
这表明在 solr 尝试初始化之前可能未启动 zookeeper。使用 nssm 依赖项,您可以使 solr 服务依赖于 zookeeper 服务。 https://nssm.cc/usage
答案2
我已经通过在这些模式下设置服务启动解决了这个问题
- zookeeper:自动
- solr:自动(延迟启动)