在没有以云模式运行的三个独立虚拟机上使用外部zookeeper集合进行Solr(仅显示1个实时节点)

时间:2016-07-14 13:38:21

标签: solr apache-zookeeper solrcloud

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

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

我通过存储库在每个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

除了Mode:'Mode:leader'

之外,zoo3的结果看起来一样

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

所以动物园管理员似乎运行良好,我想。

我在每个VM(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的管理面板中的“云”下看到该集合。但它没有分发给zoo1,zoo2和zoo3。相反,它仅在127.0.0.1上显示。

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

1 个答案:

答案 0 :(得分:0)

在发布我的问题后,我找到了它:

SOLR_HOST 变量分别设置为每个VM上的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"
[...]

for zoo2。

在SOLR_HOST被注释掉之前。