3

我已将 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 中。知道可能出了什么问题吗?

PS:这个问题不是这样的问题的重复: How to set solr/home in linux OS? 这: 在Tomcat中部署战争 不同之处在于我正在定义solr / home,但它似乎不起作用。

4

1 回答 1

3

这个问题与一个 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 实例记录到它自己的日志文件中。

于 2013-11-05T23:04:30.330 回答