最近幾個月裝了好幾回windows solrcloud僞分佈式,參考了其餘博客,我本身也總結了一下,包含一些注意和一些錯誤的解決方法。
參考博客:
http://blog.csdn.net/wanghui2008123/article/details/37813525
http://blog.csdn.net/vltic/article/details/20998269java
系統:windows server 2008 64位
軟件:jdk-7u80-windows-x6四、apache-tomcat-7.0.70、solr-4.10.三、zookeeper-3.4.6
注意:不一樣版本的solr配置不同。web
一臺服務器部署3個節點。apache
第一步:在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。以下圖:bootstrap
第二步:把solr-4.10.3\example\webapps\solr.war複製到tomcat-server_1/webapps目錄下。windows
第三步:修改D:\solrCloud\tomcat-server_1\bin目錄下的catalina.bat文件,裏面加入tomcat的啓動參數,,參數以下:瀏覽器
set JAVA_OPTS=-Dsolr.solr.home=D:/SolrCloud/solr_home_1tomcat
配置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>app
關於solr/home的設置,其實有三種方法:一、在solr的web.xml中設置,在tomcat啓動時附帶參數,還有就是本文的方法。webapp
第二種方法,必須首先啓動,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_二、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