2014-03-03 125 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