tomcat - 收集 RELOAD 后 SolrCloud 节点关闭

标签 tomcat configuration solr apache-zookeeper solrcloud

我使用 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,并将节点状态更改为“事件”。之后,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/

相关文章:

ruby-on-rails - Sunspot Solr Search like Rails active record 'LIKE' search

solr - Leader 选举 SolrCloud + Zookeeper

java - Spring 3.0.6 与 Tomcat 8

tomcat - 配置自定义 Tomcat 配置文件夹

configuration - 是否可以有一个全局的 launch.json 文件?

java - Spring配置属性问题

solr - lucene 字段与 DocValues

java - Tomcat 7 和 request.getUserPrincipal() 上的相互身份验证

java - 安装tomcat和java并在浏览器中运行jsp

configuration - Ehcache 元素 <cache/> 不允许属性 "transactionalMode"?