Solr集群搭建詳細教程(二)
註:歡迎大家轉載,非商業用途請在醒目位置註明本文鏈接和作者名dijia478,商業用途請聯系本人[email protected]。
之前步驟:Solr集群搭建詳細教程(一)
三、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集群才行的)
Solr集群搭建詳細教程(二)