共計 5605 個字符,預計需要花費 15 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 windows solrcloud 偽分布式如何搭建,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、概述
最近幾個月裝了好幾次 windows solrcloud 偽分布式,參考了其他博客,我自己也總結(jié)了一下,包含一些注意和一些錯誤的解決方法。
二、環(huán)境
系統(tǒng):windows server 2008 64 位
軟件:jdk-7u80-windows-x64、apache-tomcat-7.0.70、solr-4.10.3、zookeeper-3.4.6
注意:不同版本的 solr 配置不一樣。
三、部署步驟
一臺服務器部署 3 個節(jié)點。
3.1 單機版 Tomcat+Solr
第一步:在 D 盤根目錄下建立 solrCloud 目錄。并把 apache-tomcat-7.0.70.tar.gz 解壓到 SolrCloud 目錄下,重命名為 tomcat-server_1。把 solr-4.10.3.zip 解壓,并把 solr-4.10.3/example/solr 目錄下的 solr 文件夾復制到 SolrCloud 目錄下,重命名為 solr_home_1。如下圖:
第二步:把 solr-4.10.3\example\webapps\solr.war 復制到 tomcat-server_1/webapps 目錄下。
第三步:修改 D:\solrCloud\tomcat-server_1\bin 目錄下的 catalina.bat 文件,里面加入 tomcat 的啟動參數(shù),,參數(shù)如下:
set JAVA_OPTS=-Dsolr.solr.home=D:/SolrCloud/solr_home_1
配置 solr/home 的第二種方法,在 D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF\web.xml 中配置:
env-entry
env-entry-name solr/home /env-entry-name
env-entry-value D:\\SolrCloud\\solr_home_1 /env-entry-value
env-entry-type java.lang.String /env-entry-type
/env-entry
關于 solr/home 的設置,其實有三種方法:1、在 solr 的 web.xml 中設置,在 tomcat 啟動時附帶參數(shù),還有就是本文的方法。
第二種方法,必須首先啟動,tomcat,然后 solr.war 解壓后才能找到 solr\WEB-INF
第四步:如果 solr 版本小于 4.3,此時單機 solr 版本就可以啟動了,但是我們是 4.10.3。啟動 tomcat-server_1,發(fā)現(xiàn)是會報錯,此時你會發(fā)現(xiàn) D:\SolrCloud\tomcat-server_1\webapps\solr.war 被解壓成 solr 文件目錄。此處可以刪除 D:\SolrCloud\tomcat-server_1\webapps\solr.war,也可以不刪除,我建議刪除。
第五步:把 solr-4.10.3\solr-4.10.3\example\lib\ext 下面所有 jar 包拷貝到,D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF\lib 目錄
第六步:在 D:\SolrCloud\tomcat-server_1\webapps\solr\WEB-INF 創(chuàng)建 classes 目錄,將 \solr-4.10.3\example\resources 目錄下的 log4j.properties 文件拷貝剛剛建立的 classes 文件下,并且修改第 16 行:
log4j.appender.file.File=../solr_logs/solr.log
注意:日志路徑是自己制定的。
第七步:啟動 tomcat,并在瀏覽器中輸入:http://localhost:8080/solr/ 驗證是否配置成功。如果配置成功,瀏覽器的頁面如下:
3.2 配置多 Tomcat+solr 同時運行
第一步:把 tomcat-server_1 復制 2 份,分別命名 tomcat-server_2,tomcat-server_3;把 solr_home_1 復制 2 份,分別命名 solr_home_2,solr_home_3。,目錄如下:
第二步:為了三個 tomcat 能夠在一臺機器上同時啟動,需要修改 tomcat 的端口信息,即修改 修改位置在 D:\solrCloud\tomcat-server_*\conf\server.xml 里面的參數(shù),修改方案如下:
shutdown port HTTP/1.1 PortAJP/1.3 porttomcat-server_1800580808009tomcat-server_2801580818019tomcat-server_3802580828029
第三步:修改各個 tomcat 服務器 catalina.bat 文件里面的 solrhome
tomcat-server_2 修改成 set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_2
tomcat-server_3 修改成 set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_3
第四步:驗證修改是否成功,依次啟動三個 Tomcat。并在瀏覽器輸入如下的 URL:
http://localhost:8080/solr/
http://localhost:8081/solr/
http://localhost:8082/solr/
如果都能正常訪問到 solr 的 admin 頁面,那么說明配置是成功的。否則就需要檢查哪里錯了或者遺漏了。
3.3 配置 ZooKeeper 集群
這部分的內(nèi)容與前面 tomcat+solr 是沒有關聯(lián)的。
第一步:解壓 zookeeper-3.4.6.tar.gz 到 D:/solrCloud 目錄,重命名為 zk-server_1。
第二步:把 D:\solrCloud\zk-server_1\conf\ 目錄下的 zoo_sample.cfg 修改為 zoo.cfg。并寫入如下的配置參數(shù):
tickTime=2000
initLimit=5
syncLimit=2
dataDir=D:/SolrCloud/zk-server_1/data
clientPort=2181
dataLogDir=D:/SolrCloud/zk-server_1/logs
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
并且按照配置創(chuàng)建相應的 data 和 logs 目錄。如果不不創(chuàng)建目錄是無法正常啟動的。在 data 目錄中創(chuàng)建文件 myid(不需要后綴名),在 myid 文件中寫入數(shù)字 1 并保存退出。
第三步:把 zk-server_1 復制 2 份,分別命名為 zk-server_2、zk-server_3。然后修改各個 zk-server 的 conf 目錄下 zoo.cfg 的 dataDir 和 dataLogDir 和 clientPort。修改方案如下:
dataDirdataLogDirclientPortzk-server_1/conf/zoo.cfgD:/solrCloud/zk-server_1/dataD:/solrCloud/zk-server_1/logs2181zk-server_2/conf/zoo.cfgD:/solrCloud/zk-server_2/dataD:/solrCloud/zk-server_2/logs2182zk-server_3/conf/zoo.cfgD:/solrCloud/zk-server_3/dataD:/solrCloud/zk-server_3/logs2183
并且修改每個 data 目錄下的 myid 文件中的內(nèi)容。zk-server_1 是 1,zk-server_2 是 2,zk-server_3 是 3。
第四步:啟動三個 zk-server(D:\SolrCloud\zk-server_*\bin\zkServer.cmd)。并驗證是否配置成功。注意:連接第一臺時有異常信息,不用管,等都連接起來就沒有異常了。
3.4 配置 Tomcat+solr+zookeeper 集群
前面 tomcat+solr 能夠啟動和訪問了,而且 zookeeper 也能啟動和訪問了。接下來就需要把他們關聯(lián)起來。
第一步:修改 solr_home_* 的 solr.xml 配置信息,把 hostPort 分別修改成對應的 tomcat 端口。
solr_home_1/solr.xml
solr_home_2/solr.xml
int name= hostPort ${jetty.port:8081} /int
solr_home_3/solr.xml
int name= hostPort ${jetty.port:8082} /int
第二步: 修改 tomcat-server_* 中的 catalina.bat 的參數(shù)信息。
tomcat-server_1 參數(shù)信息如下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_1 -Dbootstrap_confdir=D:/solrCloud/solr_home_1/collection1/conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
tomcat-server_2 的參數(shù)信息如下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_2 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
tomcat-server_3 的參數(shù)信息如下:
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
參數(shù)解釋:-DnumShards=3 表示 3 個分片,由于 3 個節(jié)點,系統(tǒng)默認會一個節(jié)點一個分片。
第三步:由于 zookeeper 已經(jīng)啟動,先 tomcat-server_1,后啟動其它的 tomcat-server。啟動完成后,在瀏覽器中輸入:
http://localhost:8080/solr/#/~cloud
http://localhost:8081/solr/#/~cloud
http://localhost:8082/solr/#/~cloud
如下圖:
注意:在第三步中,第一次啟動 tomcat 集群模式時候,必須先 tomcat-server_1,后啟動其它的 tomcat-server,這里我經(jīng)過多次測試過。由于 tomcat-server_1 中有 DnumShards= 3 的參數(shù),集群會知道這個 collection 需要分為 3 個 shard,如果先啟動其他 tomcat-server,最后啟動 tomcat-server_1,集群會默認 collection 只是一個 shard 做 3 個備份。
3.5:報錯處理
由于我這個步驟是參考別的博文的,所以遇到了一個錯誤,只要 tomcat 配置上 zookeeper,就不能啟動,單機就能啟動,大概提示錯誤如下:org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
窗口報次信息的前一行提示一個錯誤,大概意思是:shard1 已經(jīng)注冊過了
原因:由于我們安裝的時候不停的啟動 tomcat,zookeeper,且有修改 tomcat 的啟動文件,導致 zookeeper 已經(jīng)記錄了 shard1 信息,tomcat-server_* 啟動時候又去注冊。
解決方法:清空如下目錄
D:\SolrCloud\zk-server_1\data\version-2
D:\SolrCloud\zk-server_2\data\version-2
D:\SolrCloud\zk-server_3\data\version-2
然后重新啟動 zookeeper,重啟動 tomcat 就好了。
如何避免這個錯誤:這個錯誤真正的導致原因是 tomcat-server_1 參數(shù) 測配置
set JAVA_OPTS=-Dsolr.solr.home=D:/solrCloud/solr_home_1 -Dbootstrap_confdir=D:/solrCloud/solr_home_1/collection1/conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
如果我們配置的時候不配置紅色部分,可以自己創(chuàng)建 collection
http://localhost:8080/solr/admin/collections?action=CREATE name= collection 1 numShards=3
關于“windows solrcloud 偽分布式如何搭建”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。