我将 solr-4.5.0 配置为与 tomcat7 和 zookeeper 3.3.5 一起工作(来自 debian 包)
根据我创建的许多教程,遵循 Catalina/localhost/solr.xml
文件
<Context allowlinking="true" crosscontext="true" debug="1" docBase="/var/lib/tomcat7/webapps/solr.war" priviledged="true">
<Environment name="solr/home" override="true" type="java.lang.String" value="/opt/solr/webapps/solr1" />
</Context>
我已经在 2 台机器上配置了 solr 以在云中工作(使用 zookeeper 来保持配置)。
在两台机器上,当启动 tomcat7 时,我在 catalina.out
中看到以下错误:
11693 [localhost-startStop-1] INFO org.apache.solr.core.SolrResourceLoader – No /solr/home in JNDI
....
12529 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer – Failed to load file /var/lib/tomcat7/solr/collection1/solrconfig.xml
12532 [coreLoadExecutor-3-thread-1] ERROR org.apache.solr.core.CoreContainer – Unable to create core: collection1
org.apache.solr.common.SolrException: Could not load config file /var/lib/tomcat7/solr/collection1/solrconfig.xml
有趣的是,在该文件的开头我看到:
64 [localhost-startStop-1] INFO org.apache.solr.core.SolrResourceLoader – Using JNDI solr.home: /opt/solr/webapps/solr1
71 [localhost-startStop-1] INFO org.apache.solr.core.SolrResourceLoader – new SolrResourceLoader for directory: '/opt/solr/webapps/solr1/'
当然我想在 JNDI 中配置 solr/home,而不是在 solr.war 中。 知道可能出了什么问题吗?
附言: 这个问题不是这样的问题的重复: How to set solr/home in linux OS? 还有这个: deploy war in Tomcat 不同的是,我正在定义 solr/home 但它似乎不起作用。
最佳答案
这个问题是因为在一个 tomcat 上有两个不同的 solr 部署,一个知道 solr.home,另一个不知道。
如果日志中有一行内容为:
org.apache.solr.core.SolrResourceLoader – Using JNDI solr.home: /opt/solr/webapps/solr1
那么它实际上意味着一些 solr 实例找到了 solr.home 参数。
但是如果有多个部署(例如用于分片测试),并且 solr.home 是在每个部署上设置的,而不是服务器范围的(例如 -Dsolr.solr.home =/some/dir
),则部分部署可能无法启动。
为避免此类问题(或至少使其更易于调试)- 可以将每个 Solr 实例记录到它自己的日志文件中。
关于solr - JNDI 中的 No/solr/home 虽然它是在 Catalina/localhost/solr.xml 中设置的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718127/