查询solr集群的节点状态

时间:2014-03-03 09:31:51

标签: solr state nodes apache-zookeeper rsolr

我正在尝试调整系统状态检查,以查看SolrCloud中Solr节点的状态。我面临以下问题:

我们分别向每个Solr节点发送查询。如果我们得到响应并且响应的状态为0,我们假设节点正在运行。不幸的是,我们已经看到节点正在恢复甚至关闭的情况,仍然会处理选择查询。

为了防止这种情况,我们添加了一个检查,向ping发送ping请求。如果由此返回的状态是请求“OK”,我们假设该节点已启动。不幸的是,即使有此请求,如果节点正在恢复或关闭,此检查也不会失败。

我的问题是:检查SolrCloud中节点状态的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

如果您使用的是SolrCloud,建议您同时维护显式zookeeper ensemble 。因为zookeeper ensemble维护SolrCloud的每个节点和每个分片的当前状态。这种状态实际上是从SolrCloud管理窗口反映出来的。

  1. 转到“管理”窗口。点击“云”。
  2. 然后单击“树”以获取SolrCloud架构的树视图。
  3. 点击/clusterstate.json查看SolrCloud状态。
  4. 此(clusterstate.json)json文件包含SolrCloud状态信息。现在,如果您正在运行显式的zookeeper集合,以下是获取SolrCloud状态的步骤。

    1. 转到路径“zookeeper / installation / directory / bin”
    2. 执行./zkCli.sh -server ZK_IP:ZK_PORT(例如/ zkCli.sh -server localhost:2181)
    3. 执行get /clusterstate.json
    4. 您将找到SolrCloud状态。

      注意:ZK_IP - 运行zoopeeper的HOST IP。 ZK_PORT - Zookeeper的客户端端口。

答案 1 :(得分:4)

您实际上不希望/clusterstate.json - 因为这仅涵盖已经存在集合的情况。从 ZooKeeper ,您需要/live_nodes

由于Zookeeper是Solr Nodes是Solr云群集成员的权限,因此您应首先查看它,以了解哪些成员可访问。这就是所有Solr云客户端的工作方式,也许是解决问题的最佳方式。

/live_nodes包含每个实时Solr节点的文件,无论存在哪些集合或副本位于何处。

解决/live_nodes后......您可以使用其中一个实时节点的地址和端口在任何Solr实例上调用 clusterstatus

http://localhost:8983/solr/admin/collections?action=clusterstatus&wt=json

clusterstatus提供了Solr节点,集合,副本等的详细概述。您想知道的一切。

最后请注意,在 solr.in.sh 配置中设置SOLR_HOST是非常明智的( /etc/default/solr.in.sh ) - 默认情况下,“localhost”用于引用solr节点。将此值设置为您希望标识的Solr节点的公共地址将阻止ZooKeeper在尝试访问Solr节点时将地址“localhost”返回给客户端。

相关问题