Solr之——SolrCloud5.2.1 tomcat7 zookeeper3.4.6環境搭建

Solr之——SolrCloud5.2.1 tomcat7 zookeeper3.4.6環境搭建

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/52090099

一、軟體環境配置

環境:Windows 7

tomcat-7.0.56 下載地址:http://tomcat.apache.org/download-70.cgi

Zookeepr v3.4.6 下載地址:http://apache.fayea.com/zookeeper/

solr-5.2.1 下載地址:
http://archive.apache.org/dist/lucene/solr/

二、部署過程

1、部署單機版Tomcat7 Solr5.2.1

第一步:在D盤根目錄下建立solrCloud目錄。並把apache-tomcat-7.0.56.zip解壓到solrCloud目錄下,複製apache-tomcat-7.0.56並重新命名為tomcat7_ser1

如圖所示:

第二步,在solrCloud目錄下新建solr_home_1 資料夾如下圖,並在目錄下,建立 home  和 server 資料夾

第三步:把solr-5.2.1\example\example-DIH\solr指定檔案複製到solr_home_1\home目錄下,如下圖

第四步:把solr-5.2.1\server\webapps\solr.war複製到solr_home_1\server目錄下。將solr.war解壓,解壓後將solr.war檔案刪除,如下圖

第五步:修改D:/solrCloud/solr_home_1/server/solr/WEB-INF目錄下的web.xml檔案,裡面修改solr/home的value值

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/solrCloud/solr_home_1/home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

如下圖:

第六步:因為我們未將solr服務放到tomcat webapps下面,所以需要修改D:/solrCloud/tomcat7_ser1/conf/server.xml指向solr服務路徑。

在Host節點下加入如下程式碼:

<Context path="/solr" docBase="D:/solrCloud/solr_home_1/server/solr">
<Environment name="/solr/home" type="java.lang.String" value="D:/solrCloud/solr_home_1/home" override="true"/>
</Context>

如下圖:

第七步:將solr-5.2.1\dist和solr-5.2.1\server\lib\ext目錄下的jar包複製到solr_home_1\server\solr\WEB-INF\lib下

第八步:現在單機版本的就已經配置OK了。啟動tomcat,訪問http://localhost:8080/solr

2、配置多Tomcat solr同時執行

第一步:
把tomcat7_ser1複製2份,分別命名tomcat7_ser2,tomcat7_ser3;
把solr_home_1複製2份,分別命名solr_home_2,solr_home_3。
目錄結構如下

第二步:修改D:\solrCloud\tomcat7_ser*\conf\server.xml配置

1、 修改 tomcat7_ser* 分別對應 各自solrhome* 和 solr 服務 。
如下圖:tomcat7_ser1對應solr_home_1、2對應2 、3對應3

2、  為了三個tomcat能夠在一臺機器上同時啟動,需要在server.xml修改tomcat的埠資訊。修改方案如下:

第三步:配置各個tomcat和solr之間的關係,修改D:\solrCloud\solr_home_*\server\solr\WEB-INF目錄下的web.xml檔案(對應關係)

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/solrCloud/solr_home_1/home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>


第四步:驗證修改是否成功,依次啟動三個Tomcat。並在瀏覽器輸入如下的URL

http://localhost:8080/solr/

http://localhost:8081/solr/

http://localhost:8082/solr/

如果都能正常訪問到solr的admin頁面,那麼說明配置是成功的。否則就需要檢查哪裡錯了或者遺漏了。

3、配置ZooKeeper叢集

這部分的內容與前面tomcat solr是沒有關聯的

第一步:解壓zookeeper-3.4.6.tar.gz到D:\solrCloud目錄,重新命名為zookeeper-1。

 如圖所示:

第二步:把D:\solrCloud\zookeeper-1\conf\目錄下的zoo_sample.cfg修改為zoo.cfg。並寫入如下的配置引數:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/solrCloud/zookeeper-1/data
dataLogDir=D:/solrCloud/zookeeper-1/datalog
clientPort=2181
#autopurge.purgeInterval=1
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883

如下圖所示:

並且按照配置建立相應的data和datalog目錄。如果不不建立目錄是無法正常啟動的

在data目錄中建立檔案myid(不需要字尾名),在myid檔案中寫入數字1並儲存退出

第三步:把zookeeper-1複製2份,分別命名為zookeeper-2、zookeeper-3。然後修改各個zookeeper-*的conf目錄下zoo.cfg的dataDir和dataLogDir和clientPort。修改方案如下:

並且修改每個data目錄下的myid檔案中的內容。zookeeper-1是1,zookeeper-2是2,zookeeper-3是3

如下圖所示:

第四步:啟動三個zookeeper。並驗證是否配置成功。目錄結構以及啟動目錄如下圖:

注意:連線第一臺時有異常資訊,不用管,等都連線起來就沒有異常了。

進入cmd
命令,輸入:netstat-ano|findstr 2181 檢視埠是否啟用

4、搭建Tomcat7 solr-5.2.1 zookeeper3.4.6叢集

前面tomcat solr能夠啟動和訪問了,而且zookeeper也能啟動成功了。接下來就需要把他們關聯起來。大家看那麼多貼子應該知道(當然不知道也要記住這個知識點):solrcloud的所有配置需要zookeeper統一管理

第一步:將需要的配置庫集中放到一個目錄中。

在D:\solrCloud下建立cloud_conf資料夾作為配置庫,如下圖:

將solr-5.2.1\server\solr\configsets\sample_techproducts_configs\conf下配置檔案複製到cloud_conf資料夾中。(也可以使用solr-5.2.1\example\example-DIH\solr\solr\conf中的配置檔案,我這裡複製的就是solr-5.2.1\example\example-DIH\solr\solr\conf中的配置檔案)

第二步:配置zookeeper路徑

在D:\solrCloud\tomcat7_ser1\bin\catalina.bat檔案中,我是在
setlocal上一行新增:

set JAVA_OPTS=-Dbootstrap_confdir=D:/solrCloud/cloud_conf -Dcollection.configName=myconf -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -DnumShards=3

如下圖:

配置引數解釋:

-DzkHost是用來指定zookeeper伺服器的ip和埠。

-Dnumshareds=3用來指定當前叢集中分片數為3

-Dcollection.configName  是在指定你的配置檔案上傳到zookeeper後的名字,省略這個引數將導致配置名字為預設的“configuration1”

-Dbootstrap_confdir :zooKeeper需要準備一份叢集配置的副本,所以這個引數是告訴SolrCloud這些配置是放在哪裡。同時作為整個叢集共用的配置檔案。可以看作是第一份solr配置。因為後續我們可以通過上傳,來實現多collection。

其餘tomcat7_ser* catalina.bat設定

set JAVA_OPTS= -DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

第三步:  因為配置由zookeeper統一管理了,所以home下面的solr配置就不起作用了。刪除D:\solrCloud\solr_home_*\home\solr資料夾, 修改配置solr.xml,如下圖


同時,solr.xml改成如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8080}</int>
<str name="hostContext">${hostContext:solr}</str>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
</solr>

hostPort 修改為對應的tomcat埠號 8080 80818082

第四步:重啟tomcat。訪問任何一個埠都成,比如:
http://localhost:8081
,能正常訪問,且選單中,出現了Cloud說明我們已經部署成功了

三、問與答

問題一:點選Cloud可以看到Cloud還沒有形成分部式分支的圖片。是不是有問題?

答:這說明我這現在伺服器是乾淨的,需要我們建立Core來實現是屬性那個Collection、那個Shard。當我們建立完Core後分支圖就會展現出來了。

我們可以看下Cloud 的 Tree 下面就可以看到我們上傳的配置檔案,我上傳時
-Dcollection.configName=myconf 所以這裡也是顯示myconf。

問題二: 如何建立Core?

答:輸入 name , instanceDir, collection, shard,點選AddCore。 說明下,當collection 名稱樣的core 索引是通用的。(反之collection不一樣則索引之前不可相互訪問了)

即 你在 new_core 下面建立的索引,在new_core1下面也是能夠查詢到的。 當我們建立完core之後,分支圖就已經出現了。如下:

問題三:如何上傳另一份collection

答: 在window cmd模式

java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -confdir D:\solrCloud\cloud-config -confname mycollection

命令說明:
上傳(upconfig) 到指定的服務(-zkhost 27.0.0.1:2181, 127.0.0.1:2182, 127.0.0.1:2183)  配置檔案路徑(-confdir):D:\solrCloud\cloud-config。 配置名稱(-confname)為: mycollection
注: 要新增 D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\*  cmd才能識別  org.apache.solr.cloud.ZkCLI 的命令

問題四:如何刪除伺服器配置檔案

答:在window cmd 模式

1、指定檔案刪除:

java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd clear /configs/mycollection -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
說明:清空(clear) /configs 下的 mycollection  資料夾。
如下只有mycollection一份配置了:

2、刪除所有

java -classpath .;D:\solrCloud\solr_home_1\server\solr\WEB-INF\lib\* org.apache.solr.cloud.ZkCLI -cmd clear /configs -zkhost 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381

說明:清空(clear)/configs  檔案。因為上傳的所有zookeeper 都是儲存到 /configs 目錄下面的,所以當我們刪除configs   即將所有配置都刪除了。

刪除所有後: