Solr 在三个独立的 VM 上使用外部 zookeeper 集成,而不是 运行 云模式(仅显示 1 个活动节点)

Solr with external zookeeper ensemble on three separate VMs not running in cloud mode (only 1 live node shown)

我正在尝试在三个独立的 VM 上设置一个连接到外部 zookeeper 集合的 solr 云。虚拟机 运行 在具有桥接网络的 VirtualBox 中使用 Ubuntu 16.04。

为方便起见,我分别为每个VM分配了名称zoo1zoo2zoo3在每个 VM 的 /etc/hosts 个文件中。

我通过存储库在每个 VM 上安装了 zookeeper 3.4.8-1。

在每个 VM 上编辑 'myid' 和 'zoo.conf' 文件后,我可以启动 zookeeper 整体。使用 zkServer.sh 脚本询问状态 我在 zoo1 和 zoo2 上得到了这个结果:

$ /usr/share/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: follower

除了模式之外,zoo3 的结果看起来是一样的:'Mode: leader'

我还可以将文件上传到 zookeeper,一旦我将它们上传到一个 zookeeper 实例,我就可以从所有三个虚拟机访问这些文件。

所以我认为 zookeeper 似乎 运行 很好。


我按照以下方法在每个虚拟机(zoo1、zoo2 和 zoo3)上安装了 Solr: Taking Solr to Production (我省略了 chroot 部分)

在每台机器上启动 solr 作为服务后

$ sudo service solr start

或使用启动脚本

$ sudo /opt/solr/bin/solr start -c -z "zoo1:2181,zoo2:2181,zoo3:2181"

我可以访问每台机器上的管理面板,但我认为 solr 在云模式下不能 运行,因为状态只给我一个活动节点:

$ bin/solr status

Found 1 Solr nodes: 

Solr process 10642 running on port 8983
{
  "solr_home":"/var/solr/data",
  "version":"6.1.0 4726c5b2d2efa9ba160b608d46a977d0a6b83f94 - jpountz - 2016-06-13 09:46:58",
  "startTime":"2016-07-14T12:44:45.509Z",
  "uptime":"0 days, 0 hours, 23 minutes, 14 seconds",
  "memory":"40.6 MB (%8.3) of 490.7 MB",
  "cloud":{
    "ZooKeeper":"zoo1:2181,zoo2:2181,zoo3:2181",
    "liveNodes":"1",
    "collections":"0"}}

我尝试将 'SOLR_MODE=solrcloud' 添加到我的 solr.in.sh,但没有任何区别。

当我使用管理面板在一个 VM 上创建集合时,我可以在每个 VM 的管理面板中的 'cloud' 下看到该集合。但它并没有分发给 zoo1、zoo2 和 zoo3。相反,它仅显示在 127.0.0.1.

任何帮助将不胜感激!提前致谢。 格里特

在发布我的问题后我发现了它:

在每个 VM 上分别将 SOLR_HOST 变量设置为 zoo1、zoo2 和 zoo3 后,它起作用了。我的 solr.in.sh 现在看起来像这样:

[...]
SOLR_MODE=solrcloud
ZK_HOST="zoo1,zoo2,zoo3"

# By default the start script uses "localhost"; override the hostname here
# for production SolrCloud environments to control the hostname exposed to cluster state
SOLR_HOST="zoo2"
[...]

对于 zoo2。

在 SOLR_HOST 被注释掉之前。