【发布时间】:2014-05-14 15:19:35
【问题描述】:
我正在从 solr4.1.0 升级到 solr4.7.1。以前,我使用外部 ZooKeeper 集成部署了 SolrCloud(超过 2 个节点)。 solr.xml 看起来像:
<solr persistent="true" sharedLib="lib">
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}" hostContext="solr">
<core collection="collection1" name="core1" instanceDir="core1" />
</cores>
</solr>
我在一个节点上通过以下命令引导云:
java -Djetty.port=8983 -Dsolr.solr.home=/dir/to/mysolrhome -Dbootstrap_conf=true -DzkHost=zookeeper1:2181 -jar start.jar
并使用以下命令启动其他 solr 节点:
java -Djetty.port=8983 -Dsolr.solr.home=/dir/to/mysolrhome -DzkHost=zookeeper1:2181 -jar start.jar
我的solr.home目录结构是:
mysolrhome
|--core1
|--solr.xml
使用 solr4.1.0 时一切顺利。
但是当我将 solr 升级到 v4.7.1 时,我得到了以下异常:
5955 [coreLoadExecutor-4-thread-1] ERROR org.apache.solr.common.cloud.ZkStateReader - Specified config does not exist in ZooKeeper:collection1
5957 [coreLoadExecutor-4-thread-1] ERROR org.apache.solr.core.CoreContainer - Unable to create core: core1
org.apache.solr.common.cloud.ZooKeeperException: Specified config does not exist in ZooKeeper:collection1
at org.apache.solr.common.cloud.ZkStateReader.readConfigName(ZkStateReader.java:152)
at org.apache.solr.core.ZkContainer.createFromZk(ZkContainer.java:233)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:595)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:258)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:250)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
5959 [coreLoadExecutor-4-thread-1] ERROR org.apache.solr.core.CoreContainer - null:org.apache.solr.common.SolrException: Unable to create core: core1
at org.apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.java:989)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:606)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:258)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:250)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.solr.common.cloud.ZooKeeperException: Specified config does not exist in ZooKeeper:collection1
at org.apache.solr.common.cloud.ZkStateReader.readConfigName(ZkStateReader.java:152)
at org.apache.solr.core.ZkContainer.createFromZk(ZkContainer.java:233)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:595)
... 10 more
我查看了zookeeper,显示如下结构:
好像上传到zookeeper的configure目录是核心名称core1,但是solr加载了collection名称collection1的configure目录。
当我更改solr.xml 以将核心名称设置为collection1 时,它将起作用。
我的问题是,我可以为每个集合配置上传的配置目录吗? 或者如果我更改了我的核心名称,我之前的申请是否有任何副作用? 还是有其他解决方案?
我不使用-Dbootstrap_confdir,因为它只支持一个集合。我有多个使用不同架构的集合。
提前致谢。
【问题讨论】:
标签: solr apache-zookeeper solrcloud