您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關windows solrcloud偽分布式如何搭建,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
最近幾個月裝了好幾次windows solrcloud偽分布式,參考了其他博客,我自己也總結了一下,包含一些注意和一些錯誤的解決方法。
系統:windows server 2008 64位
軟件:jdk-7u80-windows-x64、apache-tomcat-7.0.70、solr-4.10.3、zookeeper-3.4.6
注意:不同版本的solr配置不一樣。
一臺服務器部署3個節點。
第一步:在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的啟動參數,,參數如下:
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啟動時附帶參數,還有就是本文的方法。
第二種方法,必須首先啟動,tomcat,然后solr.war解壓后才能找到solr\WEB-INF
第四步:如果solr版本小于4.3,此時單機solr版本就可以啟動了,但是我們是4.10.3。啟動 tomcat-server_1 ,發現是會報錯,此時你會發現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創建classes目錄,將\solr-4.10.3\example\resources目錄下的log4j.properties文件拷貝剛剛建立的classes文件下,并且修改第16行:
log4j.appender.file.File=../solr_logs/solr.log
注意:日志路徑是自己制定的。
第七步:啟動tomcat,并在瀏覽器中輸入:http://localhost:8080/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里面的參數,修改方案如下:
shutdown port | HTTP/1.1 Port | AJP/1.3 port | |
tomcat-server_1 | 8005 | 8080 | 8009 |
tomcat-server_2 | 8015 | 8081 | 8019 |
tomcat-server_3 | 8025 | 8082 | 8029 |
第三步:修改各個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頁面,那么說明配置是成功的。否則就需要檢查哪里錯了或者遺漏了。
這部分的內容與前面tomcat+solr是沒有關聯的。
第一步:解壓zookeeper-3.4.6.tar.gz到D:/solrCloud目錄,重命名為zk-server_1。
第二步:把D:\solrCloud\zk-server_1\conf\目錄下的zoo_sample.cfg修改為zoo.cfg。并寫入如下的配置參數:
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 |
并且按照配置創建相應的data和logs目錄。如果不不創建目錄是無法正常啟動的。在data目錄中創建文件myid(不需要后綴名),在myid文件中寫入數字1并保存退出。
第三步:把zk-server_1復制2份,分別命名為zk-server_2、zk-server_3。然后修改各個zk-server的conf目錄下zoo.cfg的dataDir和dataLogDir和clientPort。修改方案如下:
dataDir | dataLogDir | clientPort | |
zk-server_1/conf/zoo.cfg | D:/solrCloud/zk-server_1/data | D:/solrCloud/zk-server_1/logs | 2181 |
zk-server_2/conf/zoo.cfg | D:/solrCloud/zk-server_2/data | D:/solrCloud/zk-server_2/logs | 2182 |
zk-server_3/conf/zoo.cfg | D:/solrCloud/zk-server_3/data | D:/solrCloud/zk-server_3/logs | 2183 |
并且修改每個data目錄下的myid文件中的內容。zk-server_1是1, zk-server_2是2,zk-server_3是3 。
第四步:啟動三個zk-server(D:\SolrCloud\zk-server_*\bin\zkServer.cmd)。并驗證是否配置成功。注意:連接第一臺時有異常信息,不用管,等都連接起來就沒有異常了。
前面tomcat+solr能夠啟動和訪問了,而且zookeeper也能啟動和訪問了。接下來就需要把他們關聯起來。
第一步:修改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的參數信息。
tomcat-server_1參數信息如下:
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的參數信息如下:
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的參數信息如下:
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
參數解釋:-DnumShards=3 表示 3個分片,由于3個節點,系統默認會一個節點一個分片。
第三步:由于zookeeper已經啟動,先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,這里我經過多次測試過。由于tomcat-server_1中有DnumShards=3的參數,集群會知道這個collection需要分為3個shard,如果先啟動其他tomcat-server,最后啟動tomcat-server_1,集群會默認collection只是一個shard做3個備份。
由于我這個步驟是參考別的博文的,所以遇到了一個錯誤,只要tomcat配置上zookeeper,就不能啟動,單機就能啟動,大概提示錯誤如下:org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
窗口報次信息的前一行提示一個錯誤,大概意思是:shard1已經注冊過了
原因:由于我們安裝的時候不停的啟動tomcat,zookeeper,且有修改tomcat的啟動文件,導致zookeeper已經記錄了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參數 測配置
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
如果我們配置的時候不配置紅色部分,可以自己創建collection
http://localhost:8080/solr/admin/collections?action=CREATE&name= collection 1&numShards=3
關于“windows solrcloud偽分布式如何搭建”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。