Solrcloud Zookeper设置:等待4000毫秒后没有找到注册的领导者,收集:c1切片:shard2

使用solr 4.10.3,我通过java中的嵌入式jetty服务器启动solr。 我试图用2个分片(领导者)配置solrcloud。 我有一个外部的zookeeper设置,我指向zookeeper实例,同时启动这样的solr。

System.setProperty("zkHost", "192.168.2.21:2111"); System.setProperty("numShards", "2"); System.setProperty("collection.configName", "configuration1"); System.setProperty("bootstrap_confdir","/conf/zooconf"); 

我有两个运行的solr实例,一个在8983端口,另一个在8984.问题是,我不确定两个solr节点是否都被识别为leader。 由于我通过java启动solr,我无法在solr管理界面中查看状态。

以下是我的solr.xml:

    192.168.2.21 ${hostPort:8984} ${hostContext:solr} ${solr.zkclienttimeout:30000} ${genericCoreNodeNames:true}   ${socketTimeout:120000} ${connTimeout:15000}   

在main方法中,我连接到其中一个solr实例(8983)并使用以下代码片段创建核心。

  CloudSolrServer server = new CloudSolrServer("192.168.2.21:2111"); server.setZkConnectTimeout(15*60*1000); server.setZkClientTimeout(15*60*1000); server.setParser(new BinaryResponseParser()); server.setRequestWriter(new BinaryRequestWriter()); server.setDefaultCollection("C1"); Create adminRequest = new Create(); adminRequest.setAction(CoreAdminAction.CREATE); adminRequest.setCoreName("C1"); adminRequest.setCollection("C1"); adminRequest.setCollectionConfigName("configuration1"); adminRequest.setDataDir("c:\\setup\somelocation"); adminRequest.setInstanceDir("c:\\setup\somelocation\C1"); adminRequest.process(solrServer); 

当我执行此操作时,C1仅在一个solr实例中创建(8983)。 ( 不是应该在两个solr实例的数据目录中创建的核心。? )。 在添加文档时,抛出以下exception。

等待4000毫秒后没有找到注册的领导者,收集:c1切片:shard2

这是添加文档时的clusterState:

 live nodes:[192.168.2.21:8984_solr, 192.168.2.21:8983_solr] collections: { C1=DocCollection(C1)= { "shards":{ "shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{ "core_node1":{ "state":"active", "core":"C1", "node_name":"192.168.2.21:8983_solr", "base_url":"http://192.168.2.21:8983/solr", "leader":"true" } } }, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{ } } }, "maxShardsPerNode":"1", "router":{ "name":"compositeId" }, "replicationFactor":"1", "autoAddReplicas":"false", "autoCreated":"true" } } 

如果我在添加文档之前在另一个solr实例(8984)中创建核心,它工作正常..文档被索引并分布在2个分片之间。 我在做什么有什么不对吗? 请帮帮我。

提前致谢..

我在创建adminRequest时添加了以下行,它工作正常

 adminRequest.setPath("/admin/collections"); adminRequest.setNumShards(2); 

以前它的工作是因为默认路径指向旧的api“ / admin / cores ”。 我们需要确保在adminRequest对象中为new Collection API中提到的solrcloud操作提供了新的api路径“ / admin / collections ”。