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內部自動協調的, 目前沒有找到人工干預的方法.
參考資料
https://blog.csdn.net/woshiwanxin102213/article/details/18793271
版權宣告
作者: ma_shoufeng(馬瘦風)
出處: 部落格園 馬瘦風的部落格
您的支援是對博主的極大鼓勵, 感謝您的閱讀.
本文版權歸博主所有, 歡迎轉載, 但未經博主同意必須保留此段宣告, 且在文章頁面明顯位置給出原文連結, 否則博主保留追究法律責任的權利.