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