1. 程式人生 > >Solr集群搭建詳細教程(一)

Solr集群搭建詳細教程(一)

nbsp zookeeper 節點 功能 安裝jdk 集群 創建 主服務器 mage

註:歡迎大家轉載,非商業用途請在醒目位置註明本文鏈接和作者名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集群搭建詳細教程(一)