我使用 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,并将节点状态更改为“活动”。之后,节点似乎还可以并且稳定。