solrCloud异常

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容器中这个参数仍然是有效的。                     

         接下来再说如何解决上面那个异常,其实很简单,因为在初始化的时候设置了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节点正常启动后,可以正常进行查询操作了。


        需要说明的是一个应用在初始化之后,sharedNumber数目就不能变了,但是 一个share中的副本是可以添加或者减少的。

 上面这段处理方式可以试用一下

你可能感兴趣的:(solrCloud异常)