solrCloud集羣搭建

solr單機版安裝

1. Solr的環境

Solr是java開發。
solr的安裝文件
需要安裝jdk。
安裝環境Linux。
需要安裝Tomcat。

搭建步驟

第一步:把solr 的壓縮包上傳到Linux系統
第二步:解壓solr。
第三步:安裝Tomcat,解壓縮即可。
第四步:把solr部署到Tomcat下。
第五步:解壓縮war包。啓動Tomcat解壓。
第六步:把/root/solr-4.10.3/example/lib/ext目錄下的所有的jar包,添加到solr工程中。
[root@localhost ext]# pwd
/root/solr-4.10.3/example/lib/ext
[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
第七步:創建一個solrhome。/example/solr目錄就是一個solrhome。複製此目錄到/usr/local/solr/solrhome
[root@localhost example]# pwd
/root/solr-4.10.3/example
[root@localhost example]# cp -r solr /usr/local/solr/solrhome
[root@localhost example]#
在這裏插入圖片描述
第八步:關聯solr及solrhome。需要修改solr工程的web.xml文件。

第九步:啓動Tomcat
http://192.168.25.154:8080/solr/

solrCloud搭建

SolrCloud(solr 雲)是 Solr 提供的分佈式搜索方案,當你需要大規模,容錯,分佈式索引和檢索能力時使用 SolrCloud。當一個系統的索引數據量少的時候是不需要使用 SolrCloud的,當索引量很大,搜索請求併發很高,這時需要使用 SolrCloud 來滿足這些需求。
SolrCloud 是基於 Solr 和Zookeeper的分佈式搜索方案,它的主要思想是使用 Zookeeper作爲集羣的配置信息中心。
它有幾個特色功能:
1)集中式的配置信息
2)自動容錯
3)近實時搜索
4)查詢時自動負載均衡

solrCloud系統架構
【1】物理結構
三個 Solr 實例( 每個實例包括兩個 Core),組成一個 SolrCloud。
【2】邏輯結構
索引集合包括兩個 Shard(shard1 和 shard2),shard1 和 shard2 分別由三個 Core 組成,其中一個 Leader 兩個 Replication,Leader 是由 zookeeper 選舉產生,zookeeper 控制每個shard上三個 Core 的索引數據一致,解決高可用問題。
用戶發起索引請求分別從 shard1 和 shard2 上獲取,解決高併發問題。
(1)Collection
Collection 在 SolrCloud 集羣中是一個邏輯意義上的完整的索引結構。它常常被劃分爲一個或多個 Shard(分片),它們使用相同的配置信息。
比如:針對商品信息搜索可以創建一個 collection。
collection=shard1+shard2+…+shardX
(2) Core
每個 Core 是 Solr 中一個獨立運行單位,提供 索引和搜索服務。一個 shard 需要由一個Core 或多個 Core 組成。由於 collection 由多個 shard 組成所以 collection 一般由多個 core 組成。
(3)Master 或 Slave
Master 是 master-slave 結構中的主結點(通常說主服務器),Slave 是 master-slave 結構中的從結點(通常說從服務器或備服務器)。同一個 Shard 下 master 和 slave 存儲的數據是一致的,這是爲了達到高可用目的。
(4)Shard
Collection 的邏輯分片。每個 Shard 被化成一個或者多個 replication,通過選舉確定哪個是 Leader。
環境準備
CentOS-6.5-i386-bin-DVD1.iso
jdk-7u72-linux-i586.tar.gz
apache-tomcat-7.0.47.tar.gz
zookeeper-3.4.6.tar.gz
solr-4.10.3.tgz
步驟:
(1)搭建Zookeeper集羣(我們在上一節已經完成)
(2)將已經部署完solr 的tomcat的上傳到linux
(3)在linux中創建文件夾 /usr/local/solr-cloud 創建4個tomcat實例
[root@localhost ~]# mkdir /usr/local/solr-cloud
[root@localhost ~]# cp -r tomcat-solr /usr/local/solr-cloud/tomcat-1
[root@localhost ~]# cp -r tomcat-solr /usr/local/solr-cloud/tomcat-2
[root@localhost ~]# cp -r tomcat-solr /usr/local/solr-cloud/tomcat-3
[root@localhost ~]# cp -r tomcat-solr /usr/local/solr-cloud/tomcat-4
(4)將本地的solrhome上傳到linux
(5)在linux中創建文件夾 /usr/local/solrhomes ,將solrhome複製4份
[root@localhost ~]# mkdir /usr/local/solrhomes
[root@localhost ~]# cp -r solrhome /usr/local/solrhomes/solrhome-1
[root@localhost ~]# cp -r solrhome /usr/local/solrhomes/solrhome-2
[root@localhost ~]# cp -r solrhome /usr/local/solrhomes/solrhome-3
[root@localhost ~]# cp -r solrhome /usr/local/solrhomes/solrhome-4
(6)修改每個solr的 web.xml 文件, 關聯solrhome

solr/home
/usr/local/solrhomes/solrhome-1
java.lang.String

(7)修改每個tomcat的原運行端口8085 8080 8009 ,分別爲
8185 8180 8109
8285 8280 8209
8385 8380 8309
8485 8480 8409
------ 知識點小貼士 ------
8005端口是用來關閉TOMCAT服務的端口。  
8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用時,使用的就是這個連接器。
8009端口,負責和其他的HTTP服務器建立連接。在把Tomcat與其他HTTP服務器集成時,就需要用到這個連接器。

3.2.3配置集羣
(1)修改每個 tomcat實例 bin 目錄下的 catalina.sh 文件
把此配置添加到catalina.sh中( 第234行 ) :
JAVA_OPTS="-DzkHost=192.168.25.140:2181,192.168.25.140:2182,192.168.25.140:2183"
JAVA_OPTS ,顧名思義,是用來設置JVM相關運行參數的變量 . 此配置用於在tomcat啓動時找到 zookeeper集羣。
(2)配置 solrCloud 相關的配置。每個 solrhome 下都有一個 solr.xml,把其中的 ip 及端口號配置好(是對應的tomcat的IP和端口)。
solrhomes/solrhome-1/solr.xml

192.168.25.140
8180
hostContext:solr</str><intname="zkClientTimeout">{hostContext:solr}</str> <int name="zkClientTimeout">{zkClientTimeout:30000}
genericCoreNodeNames:true</bool></solrcloud>solrhomes/solrhome2/solr.xml<solrcloud><strname="host">192.168.25.140</str><intname="hostPort">8280</int><strname="hostContext">{genericCoreNodeNames:true}</bool> </solrcloud> solrhomes/solrhome-2/solr.xml <solrcloud> <str name="host">192.168.25.140</str> <int name="hostPort">8280</int> <str name="hostContext">{hostContext:solr}
zkClientTimeout:30000</int><boolname="genericCoreNodeNames">{zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">{genericCoreNodeNames:true}

solrhomes/solrhome-3/solr.xml

192.168.25.140
8380
hostContext:solr</str><intname="zkClientTimeout">{hostContext:solr}</str> <int name="zkClientTimeout">{zkClientTimeout:30000}
genericCoreNodeNames:true</bool></solrcloud>solrhomes/solrhome4/solr.xml<solrcloud><strname="host">192.168.25.140</str><intname="hostPort">8480</int><strname="hostContext">{genericCoreNodeNames:true}</bool> </solrcloud> solrhomes/solrhome-4/solr.xml <solrcloud> <str name="host">192.168.25.140</str> <int name="hostPort">8480</int> <str name="hostContext">{hostContext:solr}
zkClientTimeout:30000</int><boolname="genericCoreNodeNames">{zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">{genericCoreNodeNames:true}

(3)讓 zookeeper 統一管理配置文件。需要把 solrhome下collection1/conf 目錄上傳到
zookeeper。上傳任意 solrhome 中的配置文件即可。
我們需要使用solr給我們提供的工具上傳配置文件:
solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh
將solr-4.10.3壓縮包上傳到linux,解壓,然後進入solr-4.10.3/example/scripts/cloud-scripts目錄 ,執行下列命令

./zkcli.sh -zkhost 192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183 -cmd upconfig
-confdir /usr/local/custer/solrCloud/solrhome1/collection1/conf -confname myconf

參數解釋
-zkhost :指定zookeeper地址列表
-cmd :指定命令。upconfig 爲上傳配置的命令
-confdir : 配置文件所在目錄
-confname : 配置名稱
3.2.4啓動集羣
(1)啓動每個 tomcat 實例。要保證 zookeeper 集羣是啓動狀態。
---- 知識點小貼士 -----
如果你想讓某個文件夾下都可以執行,使用以下命令實現
chmod -R 777 solr-cloud
(2)訪問集羣
地址欄輸入 http://192.168.25.140:8180/solr ,可以看到Solr集羣版的界面
下圖表示的是,一個主節點 ,三個從節點。

3.3 SpringDataSolr連接SolrCloud
在SolrJ中提供一個叫做CloudSolrServer的類,它是SolrServer的子類,用於連接solrCloud
它的構造參數就是zookeeper的地址列表,另外它要求要指定defaultCollection屬性(默認的 collection名稱)
我們現在修改springDataSolrDemo工程的配置文件 ,把原來的solr-server註銷,替換爲CloudSolrServer .指定構造參數爲地址列表,設置默認 collection名稱





3.4分片配置
(1)創建新的 Collection 進行分片處理。
在瀏覽器輸入以下地址,可以按照我們的要求 創建新的Collection
http://192.168.25.140:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
參數:
name:將被創建的集合的名字
numShards:集合創建時需要創建邏輯碎片的個數
replicationFactor:分片的副本數。
看到這個提示表示成功

(2)刪除不用的 Collection。執行以下命令
http://192.168.25.140:8480/solr/admin/collections?action=DELETE&name=collection1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章