Solr集群搭建詳細教程(一)
註:歡迎大家轉載,非商業用途請在醒目位置註明本文鏈接和作者名dijia478,商業用途請聯系本人[email protected]。
一、Solr集群的系統架構
SolrCloud(solr 雲)是Solr提供的分布式搜索方案,當你需要大規模,容錯,分布式索引和檢索能力時使用 SolrCloud。當一個系統的索引數據量少的時候是不需要使用SolrCloud的,當索引量很大,搜索請求並發很高,這時需要使用SolrCloud來滿足這些需求。
SolrCloud是基於Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作為集群的配置信息中心。
它有幾個特色功能:
1)集中式的配置信息
2)自動容錯
3)近實時搜索
4)查詢時自動負載均衡
1.物理結構
三個Solr實例( 每個實例包括兩個Core),組成一個SolrCloud。
2.邏輯結構
索引集合包括兩個Shard(shard1和shard2),shard1和shard2分別由三個Core組成,其中一個Leader兩個Replication,Leader是由zookeeper選舉產生,zookeeper控制每個shard上三個Core的索引數據一致,解決高可用問題。
用戶發起索引請求分別從shard1和shard2上獲取,解決高並發問題。
2.1. collection
Collection在SolrCloud集群中是一個邏輯意義上的完整的索引結構。它常常被劃分為一個或多個Shard(分片),它們使用相同的配置信息。
比如:針對商品信息搜索可以創建一個collection。
collection=shard1+shard2+....+shardX
2.2. Core
每個Core是Solr中一個獨立運行單位,提供 索引和搜索服務。一個shard需要由一個Core或多個Core組成。由於collection由多個shard組成所以collection一般由多個core組成。
2.3. Master或Slave
Master是master-slave結構中的主結點(通常說主服務器),Slave是master-slave結構中的從結點(通常說從服務器或備服務器)。同一個Shard下master和slave存儲的數據是一致的,這是為了達到高可用目的。
2.4. Shard
Collection的邏輯分片。每個Shard被化成一個或者多個replication,通過選舉確定哪個是Leader。
3.本教程實現的solr集群架構
Zookeeper作為集群的管理工具。
1、集群管理:容錯、負載均衡。
2、配置文件的集中管理
3、集群的入口
需要實現zookeeper 高可用。需要搭建集群。建議是奇數節點。需要三個zookeeper服務器。
搭建solr集群至少需要7臺服務器。
這裏因環境限制,演示的是搭建偽分布式(在一臺虛擬機上,建議內存至少1G):
需要三個zookeeper節點
需要四個tomcat節點。
本文使用tomcat進行部署,而不使用solr自帶的jetty
4.系統環境
CentOS-6.7-i386-bin-DVD1
jdk-8u151-linux-i586
apache-tomcat-8.5.24
zookeeper-3.4.10
solr-7.1.0
註意:solr6.0以上版本,官方建議使用jdk8,tomcat8,搭建步驟和solr6以下略微有區別
二、 Zookeeper集群搭建
第一步:需要安裝jdk環境。
JDK安裝過程省略,不會的去看我的這篇文章:
SolrCloud(solr 雲)是Solr提供的分布式搜索方案,當你需要大規模,容錯,分布式索引和檢索能力時使用 SolrCloud。當一個系統的索引數據量少的時候是不需要使用SolrCloud的,當索引量很大,搜索請求並發很高,這時需要使用SolrCloud來滿足這些需求。
SolrCloud是基於Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作為集群的配置信息中心。
它有幾個特色功能:
1)集中式的配置信息
2)自動容錯
3)近實時搜索
4)查詢時自動負載均衡
1.物理結構
三個Solr實例( 每個實例包括兩個Core),組成一個SolrCloud。
2.邏輯結構
索引集合包括兩個Shard(shard1和shard2),shard1和shard2分別由三個Core組成,其中一個Leader兩個Replication,Leader是由zookeeper選舉產生,zookeeper控制每個shard上三個Core的索引數據一致,解決高可用問題。
用戶發起索引請求分別從shard1和shard2上獲取,解決高並發問題。
2.1. collection
Collection在SolrCloud集群中是一個邏輯意義上的完整的索引結構。它常常被劃分為一個或多個Shard(分片),它們使用相同的配置信息。
比如:針對商品信息搜索可以創建一個collection。
collection=shard1+shard2+....+shardX
2.2. Core
每個Core是Solr中一個獨立運行單位,提供 索引和搜索服務。一個shard需要由一個Core或多個Core組成。由於collection由多個shard組成所以collection一般由多個core組成。
2.3. Master或Slave
Master是master-slave結構中的主結點(通常說主服務器),Slave是master-slave結構中的從結點(通常說從服務器或備服務器)。同一個Shard下master和slave存儲的數據是一致的,這是為了達到高可用目的。
2.4. Shard
Collection的邏輯分片。每個Shard被化成一個或者多個replication,通過選舉確定哪個是Leader。
3.本教程實現的solr集群架構
Zookeeper作為集群的管理工具。
1、集群管理:容錯、負載均衡。
2、配置文件的集中管理
3、集群的入口
需要實現zookeeper 高可用。需要搭建集群。建議是奇數節點。需要三個zookeeper服務器。
搭建solr集群至少需要7臺服務器。
這裏因環境限制,演示的是搭建偽分布式(在一臺虛擬機上,建議內存至少1G):
需要三個zookeeper節點
需要四個tomcat節點。
本文使用tomcat進行部署,而不使用solr自帶的jetty
4.系統環境
CentOS-6.7-i386-bin-DVD1
jdk-8u151-linux-i586
apache-tomcat-8.5.24
zookeeper-3.4.10
solr-7.1.0
註意:solr6.0以上版本,官方建議使用jdk8,tomcat8,搭建步驟和solr6以下略微有區別
二、 Zookeeper集群搭建
第一步:需要安裝jdk環境。
JDK安裝過程省略,不會的去看我的這篇文章:
Linux服務器上安裝JDK小白教程
能看集群搭建教程的,應該不可能不會安JDK吧,安好之後是這樣的
第二步:把zookeeper的壓縮包上傳到服務器。
第三步:解壓縮。
解壓過程省略,我這裏解壓到了/usr/share/
第四步:把zookeeper復制三份。
先創建目錄/usr/local/solr-cloud
第五步:在每個zookeeper目錄下創建一個data目錄。
第六步:在data目錄下創建一個myid文件,文件名就叫做“myid”。內容就是每個實例的id。例如1、2、3
這裏我就截一個圖啊,其他兩個分別照著做,2和3
算了,我怕有些人不會。。。看清楚我在solr-cloud目錄下執行的啊
第七步:把conf目錄下的zoo_sample.cfg文件改名為zoo.cfg
這次我就真的只演示一個了,其他兩個照做,其實第五步和第七步可以在第四步前做,是我疏忽了。
第八步:修改zoo.cfg配置文件。
只演示第一個,另外兩個自己改。只改前兩個紅色框框裏的(目錄和端口號),最後那個紅框裏的內容三個配置文件一樣
server.1的這個1,就是上面第六步的內容。在實際工作中每個實例在不同的服務器上,所以後面的ip應該是不同的,我這裏是在一臺虛擬機上演示,所以ip相同。
第九步:啟動每個zookeeper實例
這裏一個個進目錄裏啟動實在是好麻煩啊,我替大家寫個簡單的腳本
1 2 3 4 5 6 |
cd /usr/local/solr-cloud/zookeeper01/bin/
./zkServer.sh start
cd /usr/local/solr-cloud/zookeeper02/bin/
./zkServer.sh start
cd /usr/local/solr-cloud/zookeeper03/bin/
./zkServer.sh start
|
寫完後發現沒有執行權限,添加權限:
然後運行腳本,就OK了
為了驗證,去三個zookeeper的實例裏bin目錄下分別查看每個實例的狀態
(我剛開始是把查看狀態的命令寫在腳本裏的,讓一啟動就查看,可每次都顯示not running,後來想了想,應該是因為腳本執行太快,啟動命令執行了但還沒啟動起來,就去查看狀態,所以會顯示沒有運行)
如果你顯示的是這樣子的一個領導兩個部下(leader和follower不一定是誰,隨機的),那麽就代表zookeeper集群已經搭建完成
第一步完成了,下來搭建solr集群
Solr集群搭建詳細教程(一)