2014-03-03 120 views
4

我试图调整我们的系统状态检查以查看SolrCloud中Solr节点的状态。我面临以下问题:节点状态查询solr集群

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

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

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

回答

3

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

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

此(clusterstate.json)json文件包含SolrCloud状态信息。现在,如果您正在运行一个显式的zookeeper集合,以下是获取SolrCloud状态的步骤。

  1. 转到路径 “动物园管理员/安装/目录/ BIN”
  2. 执行./zkCli.sh -server ZK_IP:ZK_PORT(如./zkCli.sh -server本地主机:2181)
  3. 执行get /clusterstate.json

你”会发现SolrCloud状态。

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

+0

什么检查clusterstate.json,说所有节点(solr服务器)正在运行和健康? – nir

+0

我有陈旧'/ clusterstate.json'数据,其中一个Solr节点是“状态”:“活动”,但实际上是关闭的。 '/ live_nodes'更敏感,因为它是由Solr节点的ZooKeeper连接创建的Ephemeral Znode。当Solr节点的ZooKeeper连接超时时,ZooKeeper(整体)将自动删除此Znode。 – SimplyInk

3

你实际上不想要/clusterstate.json - 因为这只包括收藏已经存在的情况。从动物园管理员需要/live_nodes

因为动物园管理员是什么Solr的节点是Solr的云计算集群的成员的权力,它遵循的是你应该去首先,要发现哪些成员都可以访问。这就是所有Solr云客户端的工作方式,可能是解决问题的最佳方式。

/live_nodes包含每个活动Solr节点的文件,而不管存在哪些集合或副本所在的位置。

一旦你已经解决了/live_nodes ......你可以叫clusterstatus上从活节点之一的地址和端口的任何Solr的实例。

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

clusterstatus提供Solr的节点,集合,副本等等一切你想知道的详细介绍。

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

+0

我在/clusterstate.json之前检查/ live_nodes。 – SimplyInk