0

我在 SolrCloud 遇到了一个有趣的情况。基本上,我不知道为什么,但是通常不在云中的 Solr 实例显示在 SolrCloud 页面上,并且live_nodes在 Zookepeer 的路径中也可见。

以下是有关情况的详细信息:

我有一个 Solr 实例,在虚拟机上作为独立应用程序运行,位于删除机器上。virtual1从现在开始,我们将调用它。

这是运行它的脚本:

java
-server
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseCompressedStrings
-Dcom.sun.management.jmxremote
-d64
-Xmx4096m
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=remotehost -jar start.jar 

该实例在 8983 端口上运行,因此当您转到 时virtual1:8983,您会看到 solr 的经典管理页面。其余的配置与示例 solr 相同,示例 solr 附带 solr 分布。

然后,在我的本地机器上(local将从现在开始调用),我在端口上运行我的 zookeeper 服务器,2181并且2182

然后为了将我的 solr 实例添加到云中,我只是在我的本地机器上运行一个实例,然后再运行两个实例virtual1,启动它们的脚本如下:

我本地的 Solr 实例:

java -Dbootstrap_conf=true -DzkHost=zkhost:2181 -Djetty.port=8984 -jar start.jar

Solr 远程实例:

java -DzkHost=zkhost:2181 -Djetty.port=8985 -jar start.jar
java -DzkHost=zkhost:2182 -Djetty.port=8986 -jar start.jar

直到这里,Solr 或 Zookeeper 日志中都没有异常或错误。

当我检查virtual1:8985 and virtual1:8986它们都在运行时,以及我本地的实例。

但是当我检查云时(来自 Solr 管理页面和 zookeeper CLI)。我只能在云中看到local:8983和,而根本没有添加...奇怪的是,从上面的启动脚本中可以看到,它对 Zookeeper 服务器一无所知。virtual1:8983virtual1:8985 and virtual1:8986virtual1:8983

除了上述事实,我还尝试了另一件事。virtual2在与 运行在同一台硬盘上的另一台虚拟机( )上virtual1 ,我创建了 Solr 实例:

java -DzkHost=zkhost:2181 -Djetty.port=8985 -jar start.jar
java -DzkHost=zkhost:2182 -Djetty.port=8986 -jar start.jar

因此,在这种情况下,我将拥有实例virtual2:8985 and virtual2:8986,它们应该在云中。但它没有发生......我只能看到virtual2:8983,这在现实中并不存在。它只是显示了独立 Solr 的端口,该端口在virtual1.

谁能解释为什么会这样?

4

1 回答 1

-1

您应该尝试删除 zookeeper 数据并指定 -Dbootstrap_confdir=/path/to/conf/dir 将配置和节点状态推送到 zookeeper。此外,如果您正在运行 zookeeper 合奏,请检查他们的状态(领导者或追随者,或者是否没有与节点的连接)

echo stat | nc zk_host zk_port

您可以使用 zkCli.sh 查看集群状态

get /clusterstate.json

并显示 zookeeper 配置,它们应该看起来像这样:

clientPort=2181 (2182 for second instance)
server.1=zk_host:2888:3888
server.2=zk_host:2888:3888

并检查 Solr 和 Zookeeper 日志以获取成功的连接。

于 2012-11-29T13:14:10.360 回答