3

我使用 Solr 4.4、Zookeeper 3.4.5 和 Tomcat 7。

集群设置:3 个分片和 3 个副本。总共 6 个 Solr 实例。

集群已启动并正在运行。一切似乎都很好。日志中没有什么重要的,除了一些关于弃用类的警告。

我如何进行配置更新:

  1. 运行以下命令:

    java -classpath .:solr-jars/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost ZOOKEEPER_HOST:PORT -d solr-conf -confname myconf

  2. 检查 Zookeeper 中的配置是否更新:

    /var/zookeeper/bin/zkCli.sh ZOOKEEPER_HOST:PORT

    ls /configs/myconfig/schema.xml

    ls /configs/myconfig/solrconfig.xml

  3. 通过 Solr Collection API 重新加载集合

    curl HOST/solr/admin/collections?action=RELOAD&name=collection1

配置更新似乎已成功应用于所有节点。但有时集群中的 1 个节点出现故障(在 Solr Admin UI 中标记为棕色)。Tomcat 重新启动,集合重新加载无助于恢复该节点。

来自日志的错误消息:

SyncStrategy - No UpdateLog found - cannot sync

问题:

  1. 有什么办法可以让失败的节点恢复正常吗?当然,无需删除所有数据。
  2. 在 Zookeeper 中更新配置后,强制 Solr 节点接受配置的正确方法是什么?如果可能,无需重启 Tomcat(它是生产系统)
  3. (可选)总的来说,您对 SolrCloud 稳定性和可预测性有何看法?在与 SC 合作时,我发现很多其他人对此提出了很多抱怨和问题。看起来不是什么好兆头。

更新 1 看起来错误消息与实际问题无关。配置事务日志后,此错误消失。但是在集合重新加载后仍然很少有节点出现故障。

恢复它的唯一方法是直接在 Zookeeper 中编辑 clusterstate.json,并将节点状态更改为“活动”。之后,节点似乎还可以并且稳定。

4

1 回答 1

0

我只能回答第二个问题(如果我理解正确的话)。将配置上传到 ZooKeeper 后更改配置的正确方法是使用“linkconfig”。大概是这样的:

java -classpath .:solr-jars/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -zkhost ZOOKEEPER_HOST:PORT -confname myconf -collection collection1
于 2013-11-05T22:40:58.260 回答