使用 SolrCloud 和 Zookeeper 创建集合时出错

Error when creating Collection with SolrCloud and Zookeeper

我正在尝试使用 Vagrant 测试 SolrCloud。我在一个盒子上安装了 Zookeeper 运行,在另一个盒子上安装了 Solr 运行。这些盒子位于专用网络上(我可以从每个盒子进入其中一个)。

当我尝试通过 Solr CLI 创建集合时,它超时了,我想是在它尝试与 Zookeeper 通信时。

Zookeeper 符合预期 运行。我使用以下命令在前台模式下启动它:

sudo bin/zkServer.sh start-foreground

我的 zoo.cfg 文件:

tickTime=2000
dataDir=/var/lib/zookeeper/1
clientPort=2181
server.1=localhost:2888:3888

然后我将在云模式下启动 Solr:

 bin/solr start -c -z 172.28.128.3:2181

此时,一切似乎都很好。 Solr 日志中没有显示任何不良信息,Zookeeper 的控制台中也没有出现任何警报消息。

然后我尝试使用以下命令创建一个集合:

  bin/solr create -c mycollection -d data_driven_schema_configs

然后我开始在 Solr 日志中看到很多错误,并且在 Zookeeper 中出现很多重复消息:

这两个 Solr 错误一遍又一遍:

 java.io.IOException: Xid out of order. Got Xid 1299 with err 0
 expected Xid 1298 for a packet with details: clientPath:null
 serverPath:null finished:false header:: 1298,14  replyHeader:: 0,0,-4 
 request:: org.apache.zookeeper.MultiTransactionRecord@95acc4f3
 response:: org.apache.zookeeper.MultiResponse@0

 There was a problem trying to register as the leader:org.apache.solr.common.SolrException: 
 Could not register as the leader because creating the ephemeral registration 
 node in ZooKeeper failed

这来自 Zookeeper:

[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@251] - Accepted socket connection from /172.28.128.4:54548
2016-08-21 21:33:39,137 - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@770] - Client attempting to renew session 0x156aefeba2d0004 at /172.28.128.4:54548
2016-08-21 21:33:39,145 - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1580] - Established session 0x156aefeba2d0004 with negotiated timeout 15000 for client /172.28.128.4:54548
2016-08-21 21:33:39,147 - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@593] - Dropping packet at server of type 14
2016-08-21 21:33:39,154 - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@634] - EndOfStreamException: Unable to read additional data from client sessionid 0x156aefeba2d0004, likely client has closed socket
2016-08-21 21:33:39,155 - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1435] - Closed socket connection for client /172.28.128.4:54548 which had sessionid 0x156aefeba2d0004
2016-08-21 21:33:40,698 - INFO

我不明白这是怎么回事。我觉得关键在于 Solr 错误:

Could not register as the leader because creating the ephemeral registration node in ZooKeeper failed

但是在搜索那个错误时我找不到任何有用的东西。任何人都可以阐明这里发生了什么吗?

上传solr配置文件到zookeeper试试 check here

$  sh zkcli.sh -cmd upconfig -zkhost  <host:port> -confname <name for configset> -solrhome <solrhome> -confdir <path to directory with configset>

这里的问题是我使用的 Zookeeper (3.3.6) 版本与当前版本的 Solr (6.1.0) 不兼容。

Solr 试图使用该版本的 Zookeeper 所没有的功能,因此它失败了。

升级到 Zookeeper 3.4.8 解决了这个问题。