tomcat下搭建SolrCloud
solr版本:4.5.1
當前我使用三臺服務器搭建集群分別是192.168.0.18、192.168.0.19、192.168.0.20,其中18為主服務器,19、20為從服務器,并且在20服務器安裝zookeeper
一、在tomcat7中部署solr4
1、首先從官網下載solr4.5.1版本到三臺服務器
2、tar -zxvf solr-4.5.1.tgz (解壓solr)
3、cd solr-4.3.1(進入solr文件夾)
4、mkdir /home/solr (在home目錄下面創建solr文件夾,我的tomcat也是安裝在home目錄下)
5、復制solr-4.5.1/example/solr 目錄下的collection1目錄和solr.xml、zoo.cfg到/home/solr目錄下
6、到這里,需要用到solr的war包。在solr-4.5.1/dist/ 下有 solr-4.5.1.war包將其更改名稱為solr.war,接下來兩種方法可以任選其一,因為solr4中將日志的jar包單獨分離出來放到了solr-4.5.1/example/lib/ext目錄下。所以在部署的時候需要將這些jar包加進去,加進去的方法有兩種:
(a)將solr.war更改后綴名為solr.zip,解壓后名稱為solr將solr-4.5.1/example/lib/ext下的五個日志包放到solr/WEB-INF/lib目錄下,重新打包成war文件。
(b)不用更改solr.war,直接將五個日志包放到tomcat的lib目錄下
我比較傾向于第一種
7、將solr.war復制到 /home/solr目錄
8、創建tomcat/conf/Catalina/localhost/solr.xml 文件,文件內容(如果目錄沒有也可以創建):
<Context docBase="/home/solr/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/home/solr" override="true" />
</Context>
9、啟動tomcat
10、輸入http://127.0.0.1:8080/solr 如果可以正常看到solr 的目錄。則表示正確部署。在firfox下打開此目錄solr4的js對IE的支持不好。
二、安裝zookeeper
11、官網下載zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/ 本人使用 zookeeper-3.4.5 將其安裝在20服務器上
12、tar -zxvf zookeeper-3.4.5.tar 解壓zookeeper
13、mkdir /home/zookeeper/data 創建zookeeper數據存放目錄
14、cd /home/zookeeper-3.4.5/conf 進入解壓后的zookeeper目錄
15、 vim zoo.cfg 修改zookeeper配置文件 內容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data (此目錄用于指定zookeeper數據存放目錄。就是剛剛創建的那個目錄)
clientPort=2181
16、修改完成后啟動zookeeper 進入bin目錄
sudo zkServer.sh start
三、配置solr集群
17、先配置主服務器192.168.1.18
vim /home/tomcat/bin/catalina.sh 在圖片所示位置加入以下代碼
JAVA_OPTS="$JAVA_OPTS -Dbootstrap_confdir=/home/www/sfbest/solr/collection1/conf -Dcollection.configName=myconf -DzkHost=192.168.1.20:2181 -DnumShards=3"
注:其中DzkHost是用來指定zookeeper服務器的ip和端口。Dnumshareds用來指定當前集群中分片數 confdir目錄指定所有的索引庫都從collection1索引庫中同步字段
18、配置從服務器 19 和20
vim /home/tomcat/bin/catalina.sh 在和上圖同樣的位置加入
JAVA_OPTS="-DzkHost=10.103.14.20:2181"
19、保存后,依次啟動tomcat服務器 在firfox中輸入網址
http://192.168.1.18:8080/solr 看到以下界面即說明集群搭建成功,此圖片中我添加了多個索引庫。所以顯示多個。正常情況下顯示一個collection1即表示正常
20、寫入后使用界面進行數據查詢得到以下數據說明數據正常
補充點:
修改solr.xml
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">7080</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:15000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<str name="zkHost">hadoop.datanode3.com:4181</str>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}</int>
<int name="connTimeout">${connTimeout:0}</int>
</shardHandlerFactory>
</solr>
官網參考:
http://wiki.apache.org/solr/SolrCloudTomcat(在tomcat下搭建solr集群)
http://wiki.apache.org/solr/SolrTomcat(在tomcat下搭建solr)