2015/12/31 上午10:32:58 | ERROR | SolrCore | org.apache.solr.common.SolrException: no servers hosting shard: |
org.apache.solr.common.SolrException: no servers hosting shard: at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:149) at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:119) 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) |
首先须要解决的一个问题是solr启动使用的端口号是8983,可是 如今运行的solr core所在tomcat容器中设定的solr端口号是80端口,当调用solr的shared查询时候,仍然会瓶装request url的时候用8983端口来拼装,因此在在shared查询的时候会发生服务不可用的错误,因此要在启动命令的参数中添加一个参数 -Djetty.port=80, 说明一下,虽然是在tomcat容器中这个参数仍然是有效的。
java
接下来再说如何解决上面那个异常,其实很简单,由于在初始化的时候设置了sharedNumber的数量为2,刚开始只启动了一台服务器,在查询的时 候,在zookeeper中livenode节点中只有一台,尚未知足solrcloud最小shared为2的要求。因此在进行查询的时候抛出这个异 常很正常,解决办法是再启动一个solr节点,启动命令是java -DzkHost=10.232.15.46:2181,10.232.36.130:2181/baisui -Djetty.port=80 -jar start.jar, 应用启动的时候自动会到zookeeper中的节点配置信息。第二个solr节点正常启动后,能够正常进行查询操做了。node
须要说明的是一个应用在初始化以后,sharedNumber数目就不能变了,可是 一个share中的副本是能够添加或者减小的。apache
上面这段处理方式能够试用一下
tomcat