SolrCloud4.9+zookeeper在CentOS上的搭建與安裝

Apache SolrCloud安裝

SolrCloud經過ZooKeeper集羣來進行協調,使一個索引進行分片,各個分片能夠分佈在不一樣的物理節點上,多個物理分片組成一個完成的索引Collection。SolrCloud自動支持Solr Replication,能夠同時對分片進行復制,冗餘存儲。下面,咱們基於Solr最新的4.9.0版本進行安裝配置SolrCloud集羣。 java

1. 安裝環境

我使用的安裝程序各版本以下: node

  • Solr: Apache Solr-4.9.0 web

  • Tomcat: Apache Tomcat 7 apache

  • ZooKeeper: Apache ZooKeeper 3.4.5 json

各個目錄說明: bootstrap

  • 全部的程序安裝在/home目錄下,你能夠依照你的實際狀況下修改安裝目錄。 api

  • ZooKeeper的數據目錄在:/home/zookeeper/data tomcat

  • solrhome設置在:/home/solrcloud/solrhome app

2. 規劃SolrCloud

  • 單一SolrCloud數據集合:mycollection curl

  • ZooKeeper集羣:2臺

  • SolrCloud實例:2節點

  • 索引分片:2

  • 複製因子:2

手動將2個索引分片(Shard)的複本(Replica)分佈在2個SolrCloud節點上

三個節點:

  • 192.168.56.121

  • 192.168.56.122

  • 192.168.56.123

3. 安裝ZooKeeper集羣

因爲須要用到ZooKeeper,故咱們先安裝好ZooKeeper集羣

首先,在第一個節點上將zookeeper-3.4.5.tar.gz解壓到/home目錄:

$ tar zxvf zookeeper-3.4.5.tar.gz -C /home/

建立zookeeper配置文件zookeeper-3.4.5/conf/zoo.cfg,內容以下:

tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data clientPort=2181 server.1=192.168.56.121:2888:3888 server.2=192.168.56.122:2888:3888 server.3=192.168.56.123:2888:3888

zookeeper的數據目錄指定在/home/zookeeper/data,你也可使用其餘目錄,經過下面命令進行建立該目錄:

$ mkdir /home/zookeeper/data -p

而後,初始化myid,三個節點編號依次爲1,2,3,在其他節點上分別執行命令(注意修改編號)。

$ echo "1" >/home/zookeeper/data/myid

而後,在第二個和第三個節點上依次重複上面的操做。這樣第一個節點中myid內容爲1,第二個節點爲2,第三個節點爲3。

最後,啓動ZooKeeper集羣,在每一個節點上分別啓動ZooKeeper服務:

$ cd /home $ sh zookeeper-3.4.5/bin/zkServer.sh start

能夠查看ZooKeeper集羣的狀態,保證集羣啓動沒有問題:

[root@192.168.56.121 opt]# sh zookeeper-3.4.5/bin/zkServer.sh status 
JMX enabled by default 
Using config: /home/zookeeper-3.4.5/bin/../conf/zoo.cfg 
Mode: follower

4. 安裝Solr

簡單來講,執行如下命令:

步驟以下:

首先,在執行以下操做以前創建三個文件:(1):/home/solrcloud/solrhome   (2):/home/solrcloud/solr-lib  (3)/home/solrcloud/solr-config
    mkdir -p /home/solrcloud/solrhome
    mkdir -p /home/solrcloud/solr-lib
    mkdir -p /home/solrcloud/solr-config

而後進行以下操做:

1.解壓縮apache-tomcat7.zip 到/home/solrcloud/tomcat7 文件中  
    unzip apache-tomcat7.zip -d /home/solrcloud/tomcat7
2.解壓縮solr-4.9.0.zip到/home/solr-4.9.0文件
    unzip solr-4.9.0.zip -d /home/solr-4.9.0
3.首先把solr-4.9.0/example/webapps/solr.war解壓縮,而後複製到tomcat7的webapps下面
    $ cp solr-4.9.0/example/webapps/solr.war apache-tomcat7/webapps/ 
4.把solr-4.9.0/example/lib/ext/下全部jar文件copy到apache-tomcat7/webapps/solr/WEB-INF/lib/下 
    $ cp solr-4.9.0/example/lib/ext/* apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/
5.把solr-4.9.0/example/resources/log4j.properties 複製 apache-tomcat7/lib/ 下
    $ cp solr-4.9.0/example/resources/log4j.properties apache-tomcat7/lib/
6.把solr-4.9.0/example/solr/solr.xml複製到/home/solrcloud/solrhome中
    $ cp solr-4.9.0/example/solr/solr.xml /home/solrcloud/solrhome
7.在/home/solrcloud/solr-config下面創建一個core目錄,好比叫mycollection/conf
    mkdir -p /home/solrcloud/solr-config/mycollection/conf
8.複製solr-4.9.0/example/solr/collection1/conf 到/home/solrcloud/solr-config/mycollection/conf
    $ cp solr-4.9.0/example/solr/collection1/conf /home/solrcloud/solr-config/mycollection/conf
9.修改/home/solrcloud/solrhome/solr.xml的 hostPort 節點的端口號爲tomcat的端口號
    <int name="hostPort">${jetty.port:8080}</int>

在其餘節點上重複以上操做完成全部節點的solr的安裝。

5. Tomcat配置與啓動

自動建立Collection及初始Shard,不須要經過zookeeper手動上傳配置文件並關聯collection。

一、在第一個節點修改tomcat啓動參數

JAVA_OPTS='-Djetty.port=8080 -Dsolr.solr.home=/home/solrcloud/solrhome -DzkHost=192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -DnumShards=3 -Dbootstrap_confdir=/home/solrcloud/solr-config/mycollection/conf -Dcollection.configName=myconf'

而後啓動tomcat。這個步驟上傳了集羣的相關配置信息(/home/solrcloud/solr-config/mycollectin/conf)到ZooKeeper中去,因此啓動下一個節點時不用再指定配置文件了。

二、在第二個和第三個節點修改tomcat啓動參數

JAVA_OPTS='-Djetty.port=8080 -Dsolr.solr.home=/home/solrcloud/solrhome -DzkHost=192.168.56.122:2181,192.168.56.122:2181,192.168.56.123:2181 -DnumShards=3'

而後啓動tomcat。

這樣就會建立3個shard分別分佈在三個節點上,若是你在增長一個節點,這節點會附加到一個shard上成爲一個replica,而不會建立新的shard。

6. 創建core跟share的一些命令

curl 'http://192.168.56.121:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1'

上面連接中的幾個參數的含義,說明以下:

  • name 待建立Collection的名稱

  • numShards 分片的數量

  • replicationFactor 複製副本的數量

能夠經過Web管理頁面,訪問http://192.168.56.121:8888/solr/#/~cloud,查看SolrCloud集羣的分片信息。

7.手動建立Replication

下面對已經建立的初始分片進行復制。 shard1已經在192.168.56.123上,咱們複製分片到192.168.56.121和192.168.56.122上,執行以下命令:

$ curl 'http://192.168.56.121:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_2&shard=shard1' 
$ curl 'http://192.168.56.122:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_3&shard=shard1'

最後的結果是,192.168.56.123上的shard1,在192.168.56.121節點上有1個副本,名稱爲primary_shard1_replica_2,在192.168.56.122節點上有一個副本,名稱爲primary_shard1_replica_3。也能夠經過查看192.168.56.121和192.168.56.122上的目錄變化,以下所示:

$  ll /usr/local/solrhome/ 
total 16 
drwxr-xr-x 3 root root 4096 Mar 10 17:11 primary_shard1_replica2 
drwxr-xr-x 3 root root 4096 Mar 10 17:02 primary_shard2_replica1 
-rw-r--r-- 1 root root  444 Mar 10 17:16 solr.xml

你還能夠對shard2和shard3添加副本。


其餘:下面是手動上傳zookeeper的方法

手動設置SolrCloud配置文件

安裝ZooKeeper集羣以前,請確保每臺機器上配置/etc/hosts文件,使每一個節點都能經過機器名訪問。

一、 建立一個SolrCloud目錄,並將solr的lib文件拷貝到這個目錄:

$ mkdir -p /home/solrcloud/solr-lib/ 
$ cp apache-tomcat7/webapps/solr/WEB-INF/lib/* /home/solrcloud/solr-lib/

二、 經過bootstrap設置solrhome:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd bootstrap -solrhome /home/solrcloud/solrhome

SolrCloud集羣的全部的配置存儲在ZooKeeper.一旦SolrCloud節點啓動時配置了-Dbootstrap_confdir參數, 該節點的配置信息將發送到ZooKeeper上存儲。基它節點啓動時會應用ZooKeeper上的配置信息,這樣當咱們改動配置時就不用一個個機子去更改了。

三、SolrCloud是經過ZooKeeper集羣來保證配置文件的變動及時同步到各個節點上,因此,須要將配置文件上傳到ZooKeeper集羣中:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd upconfig -confdir /home/solrcloud/solr-config/mycollectioin/conf -confname myconf

說明:

  • zkhost指定ZooKeeper地址,逗號分割

  • /home/solrcloud/solr-config/mycollectin/conf目錄下存在schema.xml和solrconfig.xml兩個配置文件,你能夠修改成你本身的目錄。

  • myconf爲在ZooKeeper上的配置文件名稱。

四、把配置文件和目標collection聯繫起來:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd linkconfig -collection mycollection-confname myconf

說明:

  • 建立的collection叫作mycollection,並指定和myconf鏈接

五、查看ZooKeeper上狀態

在任意一個節點的/opt目錄下執行以下命令:

$  zookeeper-3.4.5/bin/zkCli.sh  
[zk: localhost:2181(CONNECTED) 0] ls / 
[configs, zookeeper, clusterstate.json, aliases.json, live_nodes, overseer, collections, overseer_elect] 
[zk: localhost:2181(CONNECTED) 1] ls /configs 
[myconf] 
[zk: localhost:2181(CONNECTED) 1] ls /collections 
[mycollection]

查看/configs和/collections目錄均有值,說明配置文件已經上傳到ZooKeeper上了,接下來啓動solr。



幾個經常使用的命令:

/admin/collections?action=CREATEcreate a collection
/admin/collections?action=RELOADreload a collection
/admin/collections?action=SPLITSHARDsplit a shard into two new shards
/admin/collections?action=CREATESHARDcreate a new shard
/admin/collections?action=DELETESHARDdelete an inactive shard
/admin/collections?action=CREATEALIAScreate or modify an alias for a collection
/admin/collections?action=DELETEALIASdelete an alias for a collection
/admin/collections?action=DELETEdelete a collection
/admin/collections?action=DELETEREPLICAdelete a replica of a shard
/admin/collections?action=ADDREPLICAadd a replica of a shard
/admin/collections?action=CLUSTERPROPAdd/edit/delete a cluster-wide property 
/admin/collections?action=MIGRATE: 
Migrate documents to another collection 
/admin/collections?action=ADDROLE: Add a specific role to a node in the cluster
 
/admin/collections?action=REMOVEROLE: Remove an assigned role 
/admin/collections?action=OVERSEERSTATUS: Get status and statistics of the overseer 
/admin/collections?action=CLUSTERSTATUS:  Get cluster status
/admin/collections?action=REQUESTSTATUSGet the status of a previous asynchronous request
/admin/collections?action=LIST: List all collections 


===========================================================================

大致過程:

<--設置solrHome-->

 java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd bootstrap -solrhome 


/home/solrcloud/solrhome


<-- 上傳配置文件到zookeeper-->

java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd upconfig -confdir 


/home/solrcloud/solr-config/mycollectioin/conf -confname myconf


<!--關聯配置文件與collection-->

java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.120.222:2181,192.168.120.223:21811 -cmd linkconfig -collection ebop -confname ebop



<!--創建collection-->

curl 'http://192.168.120.223:8080/solr/admin/collections?action=CREATE&name=ebop&numShards=2&replicationFactor=1'


<!--創建副本-->

curl 'http://192.168.120.222:8080/solr/admin/cores?action=CREATE&collection=ebop&name=ebop_shard1_replica_2&shard=shard1'

curl 'http://192.168.120.223:8080/solr/admin/cores?action=CREATE&collection=ebop&name=ebop_shard2_replica_2&shard=shard2'


參考:http://blog.javachen.com/2014/03/10/how-to-install-solrcloud/

相關文章
相關標籤/搜索