1. 程式人生 > >linux搭建solr叢集環境

linux搭建solr叢集環境

一、引言

國慶第三天,天氣晴朗,風和日麗,是個寫部落格的好日子。

昨天把zookeeper的叢集環境搭建好了,那麼今天就需要派上用場了。那zookeeper怎麼用呢? 大家都知道每一個solr都有相對應的配置檔案,那麼solr叢集,當然是用同一個套配置檔案,總不能一個solr用一套配置檔案吧,這豈不是亂套了。這個時候就需要把配置檔案交給zookeeper進行管理,由他來管理和控制solr。

二、準備工作

既然是solr叢集,咱們先得搭建好solr的單機版,本次教程配置4個solr來搭建叢集環境。

步驟二:這裡是需要搭建4個solr單機版,也就是需要四個tomcat來啟動,因為真正的叢集環境,是在不同的伺服器上來搭建的,小編為了方便寫部落格,所以搭建在一臺伺服器上,請注意埠號不要衝突

步驟三:為了方便管理,solr叢集小編都放在了solrcloud資料夾下。在這裡小編搭建zookeeper叢集和solr叢集是分別搭建在兩臺不同的伺服器上了,之前zookeeper叢集搭建也是放在了solrcloud資料夾下了,如果小夥伴用的一臺伺服器,可以都放在一個目錄下。

步驟四:搭建zookeeper叢集環境,請參考小編這篇文章:linux系統搭建zookeeper叢集

步驟五:搭建了solr4個單機版後,啟動4個tomcat,通過瀏覽器訪問,需要核實搭建是否存在問題,每一個solr單機版都需要能通過瀏覽器訪問到,則表示solr是沒有問題的

步驟六:下圖是小編搭建solr叢集檔案目錄的截圖,每一個solr對應一個solrhome配置檔案,在搭建solr單機版中有配置solrhome的配置,請注意tomcat中的埠號不要衝突

步驟七 :可以寫個shell指令碼,來快速啟動、關閉4個tomcat。如有不會者,可評論,小編會及時回覆。

三、使用zookeeper配置solr環境

步驟一既然solr叢集的配置檔案由zookeeper管理,首先把solr配置檔案上傳到zookeeper。在我們solr解壓後的目錄下,有一個客戶端,通過客戶端把配置檔案上傳到zookeeper上。

               執行如下命令,以下是三個zookeeper的ip+埠號、配置上傳檔案的位置、上傳到zookeeper後的資料夾名

               進入客戶端位置:/solr-4.10.3/example/scripts/cloud-scripts,客戶端檔名:zkcli.sh

./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

步驟二檢查solr配置檔案是否上傳成功,進入任意zookeeper目錄下,在bin目錄下有個zkCli.sh檔案,進入bin目錄下,執行如下命令

./zkCli.sh //進入zookeeper客戶端

ls / //檢視目錄下資料夾,正常來說應該看到兩個資料夾:[configs, zookeeper]

ls /configs/myconf //檢視剛剛上傳上來的檔案,如果沒有myconf資料夾,則代表上傳失敗了,核實下是否能訪問到zookeeper,如果有對應的solr配置檔案,那就成了。

步驟三:回到配置solr目錄下,在每一個solrhome目錄下修改solr.xml檔案 ,找到solrcloud,共修改四次。

             配置host:表示當前執行solr服務的ip地址,配置hostPort:表示當前執行solr服務的埠號,也就是tomcat對應的埠:8080、8081、8082、8083,需要和當前執行solr的tomcat埠號一致,強調!!!!

步驟四修改每一個執行solr服務的tomcat,找到tomcat/bin目錄下的catalina.sh檔案,進行修改,找到JAVA_OPTS寫入如下配置。配置對應每一個zookeeper的ip地址以及埠號,因為小編搭建了3個zookeeper的叢集,所以寫了三個

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

步驟五重啟tomcat,能正常訪問solr後臺,則表示配置都是ok的,一切沒什麼問題。如果成功,則在瀏覽器訪問如下地址

http://ip:埠/solr/admin/collections?action=DELETE&name=collection1 ,刪除之前的collection1

http://ip+:埠/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2   # 給collection進行分片,由兩個分片組成一個solr索引庫,每一個分片都是一主一備份。

步驟六:最後solr叢集如下圖,黑點leader代表的是分片主節點,圓形Active代表的是從節點,並且是正常執行的。

              左側Cloud——Graph中檢視

四、最後

如果是在一臺伺服器上來部署solr叢集,千萬、千萬、千萬,每一個tomcat的埠號不能重複,每一個部署在tomcat中的solr服務對應的solrhome中的埠號,千萬、千萬、千萬不要弄混淆了,也就是步驟三,千萬、千萬、千萬要仔細。

如果說是採用不同的伺服器來部署,就不存在埠號衝突的問題,每一個伺服器ip地址都不同。

說實話,這個看起來不復雜,但是因為自己粗心而導致的錯誤,很難找。最後效果圖應該是每一個solr應該都是正常工作的,如果有出現Recovering這個,則表示配置還是存在問題的。 

如果有遇到什麼問題可以歡迎評論,小編會及時回覆!!!!!