【Solr】- SolrCloud 基礎操作
SolrCloud
solr基於Zookeeper協調元件搭建的分散式搜尋引擎,具有zookeeper的高可用以及叢集的可伸縮性的特點。
SolrCloud結構圖
Collection:對應standby模式下的Solr Core
Shard(分片): 對應Collection邏輯劃分的Core,可以理解為多個Shard組成一個完整意義上的Solr Core,如果是單機模式下:1 Solr Core = 1 Shard = 1 Core = 1 replica,Shard對於使用者介面是不可見的,主要通過上一層的Collection提供一個Façade介面
Core: Solr Core一個包含索引和配置檔案的執行例項,一個Core對應一個Replica實際提供索引服務,SolrCloud提供冗餘機制,多個Replica提供的索引資料服務是相同的
Replica: Shard實際物理儲存,可以提供類似HDFS的備份機制保證冗餘特性
結構圖分析
一個Solr Core,分片2個Shard,shard提供1個leader replica和2個slave replica,實現冗餘,Zookeeper負責挑選出leader replica,客戶端進行索引的時SolrCloud會請求傳遞給對應的Shard的leader replica,leader replica再分發請求到shard到slave replica進行處理
Solr Cloud特點:
- solr叢集中心配置
- 負載均衡
- Zookeeper整合叢集節點和配置:Zookeeper的應用場景
SolrCloud並沒有Master節點去分配叢集節點、shard和relica而是通過上傳到Zookeeper的配置資訊統一管理,客戶端查詢和更新指令可以被髮送到叢集的任意一個節點,Solr可根據註冊在Zookeeper內建資料庫的資訊去決定處理客戶端請求伺服器的具體節點
SolrCloud常用命令
- solr -e cloud --noprompt
Solr安裝包自帶的測試案例,會自動建立一個Collection:gettingstarted 和 兩個Solr Core: gettingstarted_shard1以及gettingstarted_shard2,一個Core作為備份,資料自動同步
引數分析:--nop, 無需提示
SolrCloud基礎介面:
查詢SolrCloud節點的執行狀態:solr status
查詢Collection的詳細資訊:solr healthcheck -c gettingstarted
關閉SolrCloud叢集:solr stop –all
solr –e cloud -noprompt:表示按照指令碼預設執行,不進行任何個性化配置
刪除solr home :solr delete -c gettingstarted
SolrCloud預設配置檔案: data_driven_schema_configs
SolrCloud啟動:solr start –c –s solr –p 8983 –z localhost:2181 –noprompt
Solr預設伺服器目錄:server
- -s solr:表明載入server目錄下的solr
重啟SolrCloud節點:solr restart -c -p 8983 -s example/cloud/node1/solr
重啟node2節點:solr restart -c -p 7574 -z localhost:9983 -s example/cloud/node2/solr
- Node2指定zookeeper訪問地址,只要是將Node2註冊在Zookeeper中,這樣通過Zookeeper將Node01和Node02納入統一叢集管理
SolrCloud建立Collection: solr create –c name [-shards #] [-replicationFactor #]
測試案例:solr create -c solrCloud -shards 1 -replicationFactor 2
Solr create –c myCollection –d data_driven_schema_configs –s 3 –rf 2 –n myconf
SolrCloud內建Zookeeper訪問:
zkCli.cmd -timeout 5000 -r -server localhost:9983
分析:solr自帶的zookeeper隨著solrCloud啟動而啟動,並儲存整個solr叢集的所有資料,並經過選舉演算法進行統一排程和負載均衡
建立Solr Cluster節點:Node3
$ mkdir -p example/cloud/node3/solr
$ cp server/solr/solr.xml example/cloud/node3/solr
$ bin/solr start -cloud -s example/cloud/node3/solr -p 8987 -z localhost:9983
特別注意
將新建立的Solr Core放在SolrHome的目錄下,但SolrCloud無法啟動並且報錯,這種情況是因為SolrCloud啟動後,Zookeeper會對SolrCloud叢集的資料與實際的物理資料進行校驗,如果發現物理節點未在Zookeeper中配置則出錯
解決方法:
將物理節點資料上傳至Zookeeper叢集,保持物理節點資料與Zookeeper維護的資料進行同步
命令:將新建立的Solr Core配置動態載入到Zookeeper
zkCli -zkhost localhost:2181 -cmd upconfig -collection computer
-confdir server/solr/configsets/sample\_techproducts\_configs/conf
-confname computerConf
引數說明:
- -zkhost :指定Zookeeper的訪問地址
- -cmd :命令 upconfig:上傳配置資訊
- -collection:指定上傳配置資訊關聯的solr core
- -confdir :上傳配置的目錄
- -confnmae :solr core上傳資訊關聯的Solr Core:如果不關聯則會出現空指標異常,Zookeep