我正在尝试使用 SolrCloud 部署具有 SolR 4.2(在 Tomcat 7 实例上)的 3 个 VM 集群,每个实例中都有一个外部 ZooKeeper(3.4.5)(我使用的是 Windows Server 2008 R2) 但出现了问题,我没有具体的错误,但是当我在一个实例上发送文档时,它们总是在该实例上被索引,而其他的则看不到它。简而言之,即使 Zookeeper 实例可以,它们看起来也不会相互通信。(我有一个多核 SolR 配置)
这里有我部署 SolrCloud 的步骤(本教程之后)。
1)我已经安装了 ZooKeeper 并在每个实例中创建了一个 zoo.cfg 文件,修改了示例文件的一些行:
dataDir=C:\\PcSemantic\\PCSEMANTIC\\Solr\\zookeeper_data
clientPort=2181
server.1=vm1:2888:3888
server.2=vm2:2888:3888
server.3=vm3:2888:3888
2) 我在 SolR 的 Tomcat 的 context.xml 中添加了以下几行(我还尝试从 3 个实例中的 2 个中删除第一行和第二行,但没有任何变化):
<Environment name="numShards" type="java.lang.Integer" value="3" override="true" />
<Environment name="bootstrap_conf" type="java.lang.Boolean" value="true" override="true" />
<Environment name="zkHost" type="java.lang.String" value="vm1:2181,vm2:2181,vm2:2181" override="true" />
3) 我在每个实例的每个核心的 schema.xml 和 solrconfig.xml 中添加了版本字段、“复制”和“获取”处理程序以及更新日志,如http://wiki.apache.org/solr/SolrCloud中所指定#Required_Config
4) 在 solr.xml 中,我将hostPort="8080" 放入 'cores' 标记 5) 然后我在每个实例中启动 ZooKeeper(使用 bin/zkServer.cmd),然后在每个实例中将 Tomcat 作为服务启动 ZooKeeper 实例似乎正确通信,只有在我启动所有 3 个 ZK 之前,日志中才会出现一些错误,然后它会记录以下内容:
2013-10-04 10:17:33,733 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:Follower@63] - FOLLOWING - LEADER ELECTION TOOK - 94
2013-10-04 10:17:33,780 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:Learner@325] - Getting a snapshot from leader
2013-10-04 10:17:33,780 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:218
1:FileTxnSnapLog@240] - Snapshotting: 0x100000000 to C:\PcSemantic\PCSEMANTIC\So
lr\zookeeper_data\version-2\snapshot.100000000
Solr 实例不记录错误或警告。我停止了 3 台机器上的所有防火墙/代理(它们在同一个 LAN 上并且彼此正确通信)。