1. 程式人生 > >Solr叢集搭建詳細教程(二) Solr服務在Linux上的搭建詳細教程

Solr叢集搭建詳細教程(二) Solr服務在Linux上的搭建詳細教程

三、solr叢集搭建

注意,在搭建solr叢集前,建議最好有一個solr服務是已經搭建好的,可以簡化大量重複的配置操作。

單機solr服務搭建過程參看我的這篇文章:

Solr服務在Linux上的搭建詳細教程

這個單機solr服務在solr叢集搭建第二步和第三步裡需要,搭建好一個solr服務後,就可以進行叢集搭建了。

第一步:建立四個tomcat例項。每個tomcat執行在不同的埠。8180、8280、8380、8480

上傳解壓步驟省略,這是我解壓好的

複製tomcat到之前搭建zookeeper叢集第四步時,建立的/usr/local/solr-cloud目錄裡,複製4個

去solr-cloud目錄,發現已經複製好了4個tomcat目錄

在tomcat目錄下的conf裡的server.xml,修改每個tomcat的埠號,這裡只演示第一個目錄的,另外三個都要改,埠要互不衝突

 用/port命令搜尋port字串,按n搜尋下一個,有三個地方要改,依次更改為

其他三個tomcat目錄裡的server.xml配置的埠按照234的順序全改了啊,具體過程這裡我就不截圖了。

一共要改四個檔案,每個檔案裡改三個地方,這12個埠號要互不衝突

第二步:把單機版的solr工程複製到叢集中的tomcat中

在搭建好的單機solr服務裡(這裡是另一篇教程,上面說過了),複製solr工程到第一步的4個tomcat目錄裡,一共是複製4份

第三步:為每個solr例項建立一個對應的solrhome。使用單機版的solrhome複製四份

一樣在之前搭建的單機solr服務裡,把solrhome複製4份出來到solr-cloud目錄裡

現在solr-cloud目錄裡是有這些目錄,檢查一下有沒有複製錯地方的:

第四步:配置solrCloud相關的配置。每個solrhome下都有一個solr.xml,把其中的ip及埠號配置好

之前搭建單機版solr服務的時候沒有動過solrhome裡的這個檔案,現在搭建叢集了,需要進行修改

需要修改4個solr.xml,我這裡還是隻演示第一個,另外三個目錄裡的類比著改,一樣的,就是1234的順序

找到這個地方,第一個紅框代表當前節點的ip地址,就是你部署這個solrhome01,tomcat01叢集節點的伺服器ip,實際工作中就是會部署4個伺服器,一個伺服器是一個節點,部署一個solr服務

第二個紅框代表當前solr服務例項的埠號,就是所在的tomcat的埠號,就是第一步在tomcat01的server.xml裡配置的8180

我的配置完後是這樣的

其他三個照著改啊,由於我是在一臺虛擬機器搭建的四個例項,所以肯定四個例項的ip是一樣的,但埠分別是8180,8280,8380,8480

第五步:需要修改solr服務的web.xml檔案。把solrhome關聯起來

修改這個檔案,和之前單機版的solr配置是一樣的

要注意的是,tomcat01這裡的solr服務,是上面第二步複製過來的對吧,是我之前用solr7搭建的單機solr服務,裡面的配置和solr4不太一樣,具體還是去文章最上面看我提供的單機solr服務搭建教程連結

找到這個,這裡是我之前搭建單機solr服務時,配置的solrhome路徑

現在改成叢集的solrhome01目錄,使他們關聯起來

其他三個tomcat裡的web.xml都對應著一改,solrhome02,03,04

第六步:讓zookeeper統一管理配置檔案。需要把/conf目錄上傳到zookeeper

現在我們每一個solr都有了自己的solrhome,現在我們要讓每一個solr例項的配置檔案都一樣,這個配置檔案需要集中管理,這個時候我們使用zookeeper來統一管理配置檔案。所以要將配置檔案上傳到zookeeper中。那麼上傳哪些配置檔案呢?

這裡注意下managed-schema檔案,網上有很多低版本solr,會提到一個collection1/conf下的schema.xml,但是並沒有找到。好像是從5.0版本開始不使用schema.xml的,這倆其實內容都一樣,搞不懂為啥要換個名字,而且內容格式是xml,但是檔名卻沒有.xml的後輟,這裡直接上傳整個conf目錄就行。

知道了要上傳什麼,那麼怎麼上傳呢?開啟最早solr解壓出來的原始檔案(如果刪了那就重新上傳解壓吧)

在這個目錄下有個指令碼檔案,執行這個指令碼就可以將配置檔案上傳到zookeeper了,有點難找,我是用find命令給搜出來的。不過我這裡給出了pwd路徑

 

要注意,在執行指令碼上傳配置檔案前,必須先去啟動zookeeper叢集

然後回來執行指令碼

這裡指令碼的執行命令有點長,主要是引數多,建議複製出來改好後再貼上上去

./zkcli.sh -zkhost 192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/configsets/sample_techproducts_configs/conf -confname myconf

我解釋下各個引數的含義:

紅色框代表zookeeper叢集的ip和埠號列表(搭建zookeeper叢集的時候配置過的)

綠色框代表要執行的是上傳配置檔案操作

黃色框代表的是要上傳的配置檔案目錄(低版本不太一樣,具體以那兩個主要的配置檔案所在目錄為準,不知到在哪就find命令搜吧)

紫色框代表的是你給上傳的配置起的名字,可以改

現在上傳完了,那麼我們怎麼確定是否上傳成功呢?去zookeeper叢集的一個目錄找到bin裡zookeeper的客戶端指令碼

執行後,裡面會出現一大堆內容,如果你不指定引數,他會預設訪問localhost:2181

在最下面執行這個命令,檢視在根目錄下有什麼,發現一個configs

再看它裡面有什麼?哈!

這就是我們剛才上傳的配置了,名字一樣的,代表上傳成功了

然後用quit命令退出

如果你需要修改配置的話,只用在剛才那個conf目錄裡改好,改好後再上傳一次就行了,就會覆蓋原來的配置檔案

第七步:修改tomcat/bin目錄下的catalina.sh 檔案,關聯solr和zookeeper

現在上傳好配置檔案了,可是solr和zookeeper還沒有建立任何關係,他們也不知道對方在哪裡,這個時候需要修改4個tomcat的配置檔案,這裡只演示tomcat01,其他三個完全相同照著改

開啟catalina.sh檔案,加一個JAVA_OPTS這個引數,初始化這個值完了會傳給solr,注意不是在這個截圖這裡修改啊

用/JAVA_OPTS搜尋紅色框框裡的這句話(因為低版本加的位置長的不太一樣,但這句話的例子是不變的),在這句話下面的位置加(注意位置啊,不要弄錯了):

加上JAVA_OPTS的值(zookeeper叢集的ip列表):

JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"

然後把其他三個tomcat也一改,改的位置和內容是一樣的,不用變

這樣每個solr例項就通過這個引數和zookeeper叢集建立了聯絡,solr會將自己的狀態傳送給zookeeper,比如ip地址啊,埠號啊,zookeeper就可以連線到solr了,建立了通訊關係

第八步:啟動每個tomcat例項。要包裝zookeeper叢集是啟動狀態

現在需要啟動每個tomcat,當然了,這個和啟動zookeeper叢集一樣,要一個一個進去啟動,太麻煩了,還是寫個批處理指令碼來執行

/usr/local/solr-cloud/tomcat01/bin/startup.sh
/usr/local/solr-cloud/tomcat02/bin/startup.sh
/usr/local/solr-cloud/tomcat03/bin/startup.sh
/usr/local/solr-cloud/tomcat04/bin/startup.sh

儲存,退出

發現沒有執行許可權,新增許可權

然後執行指令碼,等等啊,tomcat叢集啟動比較慢

如果你想看啟動起來沒,可以複製一個會話視窗(我用的xshell5),去看看tomcat的日誌資訊(相當於看控制檯列印資訊)

用這個命令檢視,我這就檢視一個,應該已經啟動好了

這裡說個小知識點,tomcat8開始,預設啟動的是NIO模式,7預設啟動的是BIO模式,還可以通過配置設定APR模式啟動,至於APR,NIO和BIO的區別,是和tomcat併發效能有關的,高併發的系統應該將tomcat的模式設定成APR模式,會大幅度的提高伺服器的處理和響應效能。感興趣的可以自己百度下。當然這個不用在意,跟本文叢集搭建沒啥關係,就是想到了說一下。

第九步:訪問叢集

然後用自己的電腦訪問下咱們的叢集吧,之前單機版是沒有紅框框出來的兩個東西的,出現這個就是OK了

我這裡還沒建立collections,所以啥都沒有:

注意下訪問地址的輸入,要寫全。訪問地址寫成這樣會404

第十步:建立新的Collection進行分片處理

點選頁面的Collections按鈕,然後就能添加了(高版本的solr才有,低版本的需要通過位址列傳遞引數去設定,比較麻煩)

我這裡選擇的是名字叫mycollection1,用自己上傳的myconf配置檔案,有2片shard,每個shard有2個備份節點一主一備

然後回去看下,這樣solr叢集就搭建ok了!

第十一步:刪除不用的Collection或core

刪除collection,點這裡,然後輸入你要刪除的collection名稱就行

 刪除core在右邊,完了如果要新增下面有add replica(如果工作中你的哪個備份機掛了,就這樣刪掉掛的伺服器,再新增一個好的就行,當然了,在這裡新增前,肯定是需要在伺服器上部署好solr服務,然後連線zookeeper叢集才行的)