windows solrcloud僞分佈式搭建

一 、概述

    最近幾個月裝了好幾回windows solrcloud僞分佈式,參考了其餘博客,我本身也總結了一下,包含一些注意和一些錯誤的解決方法。
    參考博客:
                    http://blog.csdn.net/wanghui2008123/article/details/37813525
                    http://blog.csdn.net/vltic/article/details/20998269java

2、環境

    系統:windows server 2008 64位
    軟件:jdk-7u80-windows-x6四、apache-tomcat-7.0.70、solr-4.10.三、zookeeper-3.4.6
    注意:不一樣版本的solr配置不同。web

3、部署步驟

    一臺服務器部署3個節點。apache

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。以下圖: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/ 驗證是否配置成功。若是配置成功,瀏覽器的頁面以下:

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裏面的參數,修改方案以下:

                            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頁面,那麼說明配置是成功的。不然就須要檢查哪裏錯了或者遺漏了。

3.3 配置ZooKeeper集羣

    這部分的內容與前面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)。並驗證是否配置成功。注意:鏈接第一臺時有異常信息,不用管,等都鏈接起來就沒有異常了。

3.4 配置Tomcat+solr+zookeeper集羣

前面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個備份。

3.5:報錯處理

因爲我這個步驟是參考別的博文的,因此遇到了一個錯誤,只要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

相關文章
相關標籤/搜索