linux集群下 solr集群搭建
首先介紹一下系統架構:
* 這個圖中代表的是三個solr實例,每個實例包括兩個core,組成一個solrcloud
* 索引集合包括兩個 shard(shard1和shard2),shard1和shard2分別由三個core組成,其中一個L eader兩個Replication,Leader是由zookeeper選舉產生,zookeeper控制每個shard上三個core的索引數據一致,解決高可用和高並發問題.
* Collection在solrcloud集群中是一個索引結構,被劃分為一個或多個shard(分片),shard之前使用相同的配置;比如對於商品信息搜索可以創建一個collection,collection=shard1+shard2+.....+shardX
* Core提供索引和搜索服務,一個shard需要由一個或多個core組成,由於collection由多個shard組成,所以collection一般由多個core組成
* Master是master-slave結構中的主結點(通常說主服務器),Slave是master-slave結構中的從結點(通常說從服務器或備服務器)。同一個Shard下master和slave存儲的數據是一致的,這是為了達到高可用目的。
下面這張圖就是接下來要搭建的solr集群架構
需要實現zookeeper 高可用。需要搭建集群。建議是奇數節點。需要三個zookeeper服務器。
搭建solr集群需要7臺服務器。
搭建偽分布式:需要三個zookeeper節點,需要四個tomcat節點.
環境 準備:
1.JDK
2.tomcat
3.zookeeper
4.solr
下面開始講集群的詳細步驟
這裏省略jdk的安裝,tomcat,solr,zookeeper的解壓
*復制三份zookeeper解壓後的文件到/usr/local/solr-cloud下
*在每一個zookeeper下創建一個data目錄
*在每個zookeeper的data目錄下創建一個myid文件,內容是每個實例的ID,分別為1,2.3
*把conf目錄下的zoo_sample.cfg文件改名為zoo.cfg
* 修改zoo.cfg配置文件
dataDir就指向當前zookeeper的data目錄
clientPort保證zookeeper之間不沖突
最後server.1=xxx的地方就是創建的myid文件指向的id
*創建快捷啟動方式,名為start-zookeeper-all.sh,啟動每一個zookeeper
在啟動之前先修改啟動文件的權限
*創建四個tomcat實例,每個tomcat運行在不同的端口:8180、8280、8380、8480
修改tomcat的端口號
修改端口號(一共三個地方)
每個tomcat都要改
*部署solr的war包到每個tomcat的webapps下面(我用的是solr的文件夾,tomcat啟動後解壓的solr.war文件)
為每個solr實例創建solrhome,solrhome的來源參考(linux部署solr)
*把solrhome關聯起來
修改solrhome裏面的solr.xml文件
host代表當前節點
hostpart代表這個solrhome對應的tomcat的端口號
*關聯每一個solr和solrhome
修改每一個tomcat下solr項目裏面的web.xml
將solrhome關聯
*zookeeper集中管理配置文件,所以這一步是上傳配置文件
進入解壓的solr.tar.gz文件夾找到zkcli.sh文件
使用工具上傳配置文件
執行下面的命令:
./zkcli.sh -zkhost 192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
然後在zookeeper01裏面的bin目錄下有zkCli.sh文件,啟動這個文件,輸入一下命令可以看到
那個就是我們剛剛上傳的文件
*接下來就關聯solr和zookeeper的關系
修改tomcat01下面的 catalina.sh
加入初始化配置:
四個tomcat都要加
*啟動這個四個tomcat,保證zookeeper集群是啟動狀態
編寫一個啟動tomcat的程序
修改查詢權限
啟動tomcat:
在瀏覽器中訪問報錯:
HTTP Status 503 - Server is shutting down or failed to initialize
發現是catalina.sh中的初始化參數配置出錯了,
修改:
JAVA_OPTS="-DzkHost=192.168.25.133:2181,192.168.25.133:2182,192.168.25.133:2183"
重新啟動,訪問:
看見這個就代表成功了一半了
因為collection1是單片的,沒有我們所說的高用性,所以刪除這個,創建新的Collection進行分片處理。
http://192.168.25.133:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
第十一步:刪除不用的Collection。
http://192.168.25.133:8180/solr/admin/collections?action=DELETE&name=collection1
這是沒刪除之前
這才代表成功
linux集群下 solr集群搭建