查询Solr集群节点状态

6
我正在尝试调整系统状态检查来查看SolrCloud中Solr节点的状态。我面临以下问题:
我们向每个Solr节点单独发送查询。如果我们收到响应并且响应的状态为0,我们假设该节点正在运行。不幸的是,我们发现节点正在恢复或甚至停机,但查询仍然得到处理。
为了避免这种情况,我们添加了一个检查,向solr发送ping请求。如果此请求返回的状态为“OK”,则我们认为该节点已经启动。不幸的是,即使使用此请求,如果节点正在恢复或停机,此检查也不会失败。
我的问题是:检查SolrCloud中节点的状态的正确方法是什么?
2个回答

6
您实际上不需要使用 /clusterstate.json 接口,因为它只能够覆盖已存在集合的情况。相反,您需要从ZooKeeper 中获取 /live_nodes 接口。
由于 ZooKeeper 是 Solr 节点成员的权威,因此最好首先访问它以发现可访问的成员。这是所有 Solr Cloud 客户端的工作方式,也可能是解决问题的最佳方法。 /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.sh)中设置 SOLR_HOST 是非常明智的做法。默认情况下,使用 "localhost" 来引用 Solr 节点。将此值设置为您希望 Solr 节点标识的公共地址将防止 ZooKeeper 在尝试到达 Solr 节点时向客户端返回 "localhost" 地址。

在访问/clusterstate.json之前,我建议先检查/live_nodes。 - SimplyInk

5
如果您正在使用SolrCloud,建议同时维护一个明确的zookeeper集合。因为zookeeper集合维护SolrCloud每个节点和每个分片的当前状态。这个状态实际上从SolrCloud管理窗口反映出来。
1. 进入管理窗口。点击“Cloud”。 2. 然后点击“Tree”以获取您的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 - Zookeeper运行的主机IP地址。ZK_PORT - Zookeeper客户端端口。


在 clusterstate.json 中需要检查什么内容来确认所有节点(Solr 服务器)都正在运行且健康? - nir
我遇到了过期的/clusterstate.json数据,其中一个Solr节点的状态是“active”,但实际上已经宕机了。 /live_nodes更敏感,因为它是由Solr节点的ZooKeeper连接创建的临时Znode。当Solr节点的ZooKeeper连接超时时,ZooKeeper(集合)将自动删除此Znode。 - SimplyInk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接