1. 程式人生 > >centos7自學之6-基於solr6.6的solrcloud叢集搭建

centos7自學之6-基於solr6.6的solrcloud叢集搭建

Solrcloud介紹

SolrCloud(solr叢集)是Solr提供的分散式搜尋方案。
當你需要大規模,容錯,分散式索引和檢索能力時使用SolrCloud。
當索引量很大,搜尋請求併發很高時,同樣需要使用SolrCloud來滿足這些需求。
不過當一個系統的索引資料量少的時候是沒有必要使用SolrCloud的。
SolrCloud是基於Solr和Zookeeper的分散式搜尋方案。
它的主要思想是使用Zookeeper作為SolrCloud叢集的配置資訊中心,統一管理solrcloud的配置,比如solrconfig.xml和schema.xml。

Solrcloud特點

1.集中式的配置資訊

2.自動容錯

3.近實時搜尋

4.查詢時自動負載均衡

Solrcloud結構

solrcloud為了降低單機的處理壓力,需要由多臺伺服器共同來完成索引和搜尋任務。實現的思路是將索引資料進行Shard分片,每個分片由多臺伺服器共同完成,當一個索引或搜尋請求過來時會分別從不同的Shard的伺服器中操作索引。solrcloud是基於solr和zookeeper部署,zookeeper是一個叢集管理軟體,solrcloud需要由多臺solr伺服器組成,然後由zookeeper來進行協調管理。
由於solrcloud一般都是解決大資料量、大併發的搜尋服務,所以搭建solrcloud之前,首先需要搭建zookeeper註冊中心叢集。

Solrcloud安裝

搭建zookeeper叢集步驟:需要三臺zookeeper、分別是zk1、zk2、zk3,對應的埠分別為2281、2282、2283。

1.安裝jdk環境,tomcat,zookeeper依賴java環境,參考這裡centos7自學之2-jdk配置

2.下載並配置zookeeper環境,解壓到/home/root/solrcloud/zk1/

3.進入zk1/conf目錄,將zoo_sample.cfg檔名稱改為zoo.cfg

cd ../solrcloud/zk1/conf

mv zoo_sample.cfg zoo.cfg

4.修改zoo.cfg檔案,配置叢集資訊(倆個截圖資訊都是配置在zoo.cfg檔案中)

mkdir ../data

vim zoo.cfg

這裡寫圖片描述
5.在dataDir(對應zoo.cfg配置檔案中的目錄結構)目錄下建立myid檔案,檔案內容為1,對應server.1中的1。

vim /home/root/solrcloud/zk1/data/myid

這裡寫圖片描述

6.拷貝zk1,複製兩個目錄zk2、zk3。並修改zoo.cfg和myid兩個檔案為對應的內容。

cp -r zk1 zk2

cp -r zk1 zk3

vim /home/root/solrcooud/zk2/conf/zoo.cfg

vim /home/root/solrcooud/zk3/conf/zoo.cfg

這裡寫圖片描述

這裡寫圖片描述

zk2,zk3 對應的myid改為2,3

vim solrcloud/zk3/data/myid

vim solrcloud/zk2/data/myid

solr叢集部署

1.複製4個單機版solr服務對應的tomcat,並分別修改埠為:8081、8082、8083、8084。
單機版solr伺服器可以參考這裡部署centos7自學之4-solr6.6搜尋伺服器安裝及IK分詞器配置

cp -r solr/tomcat-solr-8080 solrcloud/tomcat-solr-8081

cp -r solr/tomcat-solr-8080 solrcloud/tomcat-solr-8082

cp -r solr/tomcat-solr-8080 solrcloud/tomcat-solr-8083

cp -r solr/tomcat-solr-8080 solrcloud/tomcat-solr-8084

2.複製4個solrhome,分別為solrhome8081、solrhome8082、solrhome8083、solrhome8084。一個solr例項對應一個solrhome。
solehome部署方式請參考這裡centos7自學之4-solr6.6搜尋伺服器安裝及IK分詞器配置

做完之後如下圖
這裡寫圖片描述

3.修改每個solr服務對應的Tomcat容器中solr專案的web.xml檔案中的內容(目錄結構為/home/root/solrcloud/tomcat-solr-8081/webapps/solr/WEB-INF)

vim tomcat-solr-8081/webapps/solr/WEB-INF/web.xml

這裡寫圖片描述
同理更改剩下的三個tomcat
4.修改每個solrhome下的solr.xml,指定對應solr服務的tomcat的ip和埠。

vim solrhome8081/solr.xml

這裡寫圖片描述
5.設定tomcat的啟動引數,在每個tomcat目錄下的bin/catalina.sh,新增以下內容:

JAVA_OPTS=”-DzkHost=192.168.216.129:2281,192.168.216.129:2282,192.168.216.129:2283”

vim tomcat-solr-8081/bin/catalina.sh

這裡寫圖片描述

6.將solr配置檔案上傳到zookeeper中,進行統一管理,進入到/solr/solr-6.6.0/server/scripts/cloud-scripts/目錄中執行zkcli.sh命令:

./zkcli.sh -zkhost 192.168.216.129:2281,192.168.216.129:2282,192.168.216.129:2283 -cmd upconfig -confdir /usr/local/solrcloud/solrhome8280/collection1/conf -confname myconf(每個ip地址之間用逗號分隔)

這裡寫圖片描述

7.編寫指令碼檔案
啟動所有的zookeeper服務

mkdir /home/root/myShell

vim zk-start-all.sh

這裡寫圖片描述

監控所有zk服務啟動狀態

vim zk-status-all.sh

這裡寫圖片描述
停止所有zk服務

vim zk-stop-all.sh

這裡寫圖片描述
啟動所有tomcat伺服器

vim tomcat-start-all.sh

這裡寫圖片描述
停止所有tomcat伺服器

vim tomcat-shutdown-all.sh

這裡寫圖片描述

給建立的指令碼賦權

chmod a+x zk-status-all.sh

8.訪問部署的solr叢集中任意的埠服務
這裡寫圖片描述

solrcloud部署完成