當前位置:
首頁 > 知識 > Solr12-SolrCloud部署中的常見問題及解決方法

Solr12-SolrCloud部署中的常見問題及解決方法

目錄

  • 1 ZooKeeper管理配置文件的另一種方法
  • 2 Solr服務不能訪問
  • 3 部分或全部節點處於」Recovering」或」Gone」狀態
  • 4 SolrCloud模式下, 啟動Tomcat服務耗時太久
  • 5 其他問題(尚未驗證, 請存疑)

1 ZooKeeper管理配置文件的另一種方法

不通過Solr的example/scripts/cloud-scripts/zkcli.sh工具管理配置文件, 而是在Tomcat的catalina.sh文件中定義啟動參數:

vim /data/solr-cloud/tomcat/ apache-tomcat-8.0.53/bin/catalina.sh
# 在cygwin=false(大約109行)之前加入如下設置:
JAVA_OPTS="$JAVA_OPTS -DzkHost=zoo1:2181,zoo2:2181,zoo3:2181 -Dbootstrap_confdir=/data/solr-cloud/tomcat/solrhome/collection1/conf -Dcollection.configName=myconf -DnumShards=3"

  • 參數解釋:

-Dnumshareds=3: 用來指定當前集群中分片數為3;

-Dcollection.configName: 指定配置文件上傳到ZooKeeper後的名字, 省略將默認為"configuration1";

-Dbootstrap_confdir: 指定所有的索引庫都從此目錄下的配置文件中同步配置, ZooKeeper將此路徑下的配置文件上傳至自己的配置中心進行統一管理.

-Djetty.port=8080: Jetty的監聽埠, 要與Tomcat的埠保持一致, 用來實現集群間的通信, 如果配置錯誤, 集群將搜索不到數據.在這裡(catalina.sh文件中)指定後, 就會覆蓋solr.xml文件中的配置.

  • 注意:

-Dbootstrap_confdir、-DnumShards和-Dcollection.configName三個參數只需要在第一次運行SolrCloud模式時進行聲明, 配置信息將載入至ZooKeeper中; 以後如果更改了這些參數, 就需要再運行一次, ZooKeeper將會更新相關配置.

為了防止配置信息被改動, 建議只在某一台Tomcat的catalina.sh中加入這些參數, 其他集群的Tomcat中不添加.

2 Solr服務不能訪問

  • 問題描述:
  • 啟動Tomcat後, Tomcat管理頁面可以顯示, Solr服務卻不能訪問.
  • 解決思路:
  • 這裡通過Tomcat的虛擬路徑發布Solr服務, 稍有不慎就會出錯. 可查看$TOMCAT_HOME/logs下的日誌信息, 查找錯誤原因.
  • 博主遇到的是:
  • solr.xml文件沒有添加到solrhome下, 導致Tomcat啟動時無法載入Solr應用, 日誌中提示缺少solr.xml文件, 上傳此文件後重啟Tomcat, 服務正常.
  • 其他思路:
  • 實在無法定位問題原因, 可從頭再捋一遍部署過程. 上述過程博主已實際操作過了, 如有問題可留言或者郵件聯繫博主, 會回復你的~

3 部分或全部節點處於」Recovering」或」Gone」狀態

  • 問題描述:
  • Solr管理頁面出現了[Cloud]入口, 查看時發現部分節點未能正常啟動.
  • 解決思路:
  • 博主在仔細捋了一遍部署過程後, 發現問題來自於ZooKeeper管理了2套配置文件. 因為部署過程中比較坎坷, 在嘗試通過 solr-4.10.4/example/scripts/cloud-scripts/zkcli.sh 命令刪除配置文件失敗後, 果斷關掉Tomcat服務和ZooKeeper服務, 手動刪除 ZooKeeper/data/version-2 和 ZooKeeper/datalog/version-2 文件, 注意不要刪除 data/myid . 這2個目錄存儲的是ZooKeeper管理的配置文件信息. 刪除後重新啟動ZooKeeper集群, 再次通過 solr-4.10.4/example/scripts/cloud-scripts/zkcli.sh 命令上傳配置文件, 然後啟動各台Tomcat, 最後問題解決.
  • 最後查得通過命令刪除配置文件的方式如下:

[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper, overseer, aliases.json, live_nodes, collections, overseer_elect, clusterstate.json]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf, conf]
[zk: localhost:2181(CONNECTED) 2] rmr /configs/conf
[zk: localhost:2181(CONNECTED) 3] ls /configs
[myconf]

4 SolrCloud模式下, 啟動Tomcat服務耗時太久

  • 問題描述:
  • 重啟Tomcat服務時, 需要很長的時間才能訪問Solr集群.
  • 問題解決:
  • 修改任一分機下SolrCore的conf/solrconfig.xml文件, 注釋約655-670行的監聽器, 取消Tomcat的啟動檢查:

<!-- QuerySenderListener takes an array of NamedList and executes a
local query request for each NamedList in sequence.
-->
<listener event="newSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<!--
<lst><str name="q">solr</str><str name="sort">price asc</str></lst>
<lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-->
</arr>
</listener>
<listener event="firstSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<lst>
<str name="q">static firstSearcher warming in solrconfig.xml</str>
</lst>
</arr>
</listener>

  • 然後更新配置文件, 再次啟動Tomcat服務, 問題得到解決.

5 其他問題(尚未驗證, 請存疑)

1) Solr4.0的AdminGUI中可以增加和刪除Core, 如果Shard中的最後一個Core被刪除, Shard是不會自動刪除的, 這將導致集群出錯;

2) 某個Shard中所有的Core宕機了, 會導致不能繼續插入新的記錄, 查詢也將出錯;

3) Core在Shard中扮演Leader或Replication, 是由Solr內部自動協調的, 目前沒有找到人工干預的方法.

Solr12-SolrCloud部署中的常見問題及解決方法

打開今日頭條,查看更多精彩圖片

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

.Net myrtille遠程連接服務

TAG:程序員小新人學習 |