SolrCloud是基於Solr和Zookeeper的分佈式搜索方案,是正在開發中的Solr4.0的核心組件之一,它的主要思想是使用Zookeeper做爲集羣的配置信息中心。它有幾個特點功能:html
基本能夠用上面這幅圖來概述,這是一個擁有4個Solr節點的集羣,索引分佈在兩個Shard裏面,每一個Shard包含兩個Solr節點,一個是Leader節點,一個是Replica節點,此外集羣中有一個負責維護集羣狀態信息的Overseer節點,它是一個總控制器。集羣的全部狀態信息都放在Zookeeper集羣中統一維護。從圖中還能夠看到,任何一個節點均可以接收索引更新的請求,而後再將這個請求轉發到文檔所應該屬於的那個Shard的Leader節點,Leader節點更新結束完成,最後將版本號和文檔轉發給同屬於一個Shard的replicas節點。node
一、下載Solr-4.x http://lucene.apache.org/solr/downloads.html
二、下載Tomcat http://tomcat.apache.org/download-70.cgi
三、下載Zookeeper http://zookeeper.apache.org/releases.html
web
單機zookeeperapache
#解壓 $ tar -zxvf zookeeper-3.4.5.tar.gz #更改配置 $ cp zookeeper-3.4.5/conf/zoo_sample.cfg zookeeper-3.4.5/conf/zoo.cfg #啓動服務 $ bin/zkServer.sh start #驗證 $ bin/zkCli.sh -server host:port
zookeeper主要配置:json
# Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳 tickTime=2000 # 這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader 的 Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過 5個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 5*2000=10 秒 initLimit=10 # 這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒 syncLimit=5 # Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。 dataDir=/tmp/zookeeper # 這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。 clientPort=2181
zookeeper集羣
一、在zookeeper-3.4.5/conf/zoo.cfg追加server配置tomcat
server.1=192.168.10.14:2888:3888 server.2=192.168.10.12:2888:3888 server.3=192.168.10.16:2888:3888
二、在每一個Zookeeper保存數據的目錄下指定myid文件,對應服務名稱IDbash
#如server.id,則在myid文件中寫1便可 $ vi /tmp/zookeeper/myid
三、啓動zookeeper服務 bin/zkServer.sh start
服務器
第一臺Solr服務器啓動過程:
負載均衡
第二臺solr服務器的啓動過程:
分佈式
包含2個shard的集羣,每一個shard中有replica節點
$ copy -r solr $TOMCAT_HOME1/conf $ copy -r solr $TOMCAT_HOME2/conf $ copy -r solr $TOMCAT_HOME3/conf $ copy -r solr $TOMCAT_HOME4/conf
$TOMCAT_HOME1/bin/catalina.sh run
一、solr.xml配置文件解釋
<cores adminPath="/admin/cores" defaultCoreName="deals" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" leaderVoteWait="${leaderVoteWait:1000}"> <core name="deals" instanceDir="deals" /> </cores>
hostContext:指定服務名稱
hostPort:指定端口
leaderVoteWait:選舉leader的等待時間ms
原文連接:http://demi-panda.com/2013/03/30/solr-cloud-install/