1. 程式人生 > >Solr叢集搭建詳細教程(一) Linux伺服器上安裝JDK小白教程

Solr叢集搭建詳細教程(一) Linux伺服器上安裝JDK小白教程

注:歡迎大家轉載,非商業用途請在醒目位置註明本文連結和作者名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安裝過程省略,不會的去看我的這篇文章:

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叢集