查询 solr 集群的节点状态

Den*_*nis 5 state solr nodes rsolr apache-zookeeper

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

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

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

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

Ben*_*ott 6

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

由于 Zookeeper 是 Solr 云集群中哪些 Solr 节点的成员的权威,因此您应该首先访问它,以发现哪些成员可以访问。这就是所有 Solr 云客户端的工作方式,并且可能是解决该问题的最佳方法。

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

一旦你解决了/live_nodes......你可以使用来自活动节点之一的地址和端口在任何 Solr 实例上调用clusterstatus 。

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

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

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


bud*_*y86 5

如果您使用的是 SolrCloud,建议您也维护一个明确的zookeeper 集合。因为zookeeper ensemble 会明智地维护SolrCloud 的每个节点和每个分片的当前状态。这种状态实际上是从 SolrCloud 管理窗口中反映出来的。

  1. 转到管理窗口。点击“云”。
  2. 然后单击“树”以获取 SolrCloud 架构的树视图。
  3. 单击/clusterstate.json以查看 SolrCloud 状态。

这个 (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

您将找到 SolrCloud 状态。

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