solr安裝-tomcat+solrCloud構建穩健solr集羣

solrCloud的搭建能夠有兩種方式:使用solr內嵌的jetty來搭建;使用外部web容器tomcat來搭建。對於使用jett來搭建參考solr官方的手冊照着作確定ok,下面我主要講的是如何使用tomcat來搭建solrCloud。html


廢話很少說,開始咱們的工做!java

1.搭建tomcat單機版solrnode

見個人上一篇博文solr安裝-tomcat單機版web

2.安裝配置zookeeperapache

具體下載,安裝,配置不詳細說了,很簡單。只列出個人關鍵配置項,以下:bootstrap

clientPort=4181vim

server.2=hadoop.datanode5.com:2888:9888api

server.3=hadoop.datanode2.com:2888:9888
server.1=hadoop.datanode3.com:2888:9888
tomcat

3. 配置solrCloudbash

(1)先配置主服務器tomcat 10.2.50.46

vim /usr/apache-tomcat-7.0.54/bin/catalina.sh   在圖片所示位置加入如下代碼

JAVA_OPTS="$JAVA_OPTS -Dbootstrap_confdir=/usr/solr/collection1/conf -Dcollection.configName=myconf -DzkHost=hadoop.datanode2.com:4181,hadoop.datanode3.com:4181,hadoop.datanode5.com:4181"

注:其中DzkHost是用來指定zookeeper服務器的ip和端口。 confdir目錄指定全部的索引庫都從collection1索引庫中同步字段


(2)配置從服務器tomcat 10.2.50.28 和10.2.50.52

vim /home/tomcat/bin/catalina.sh 在和上圖一樣的位置加入

JAVA_OPTS="-DzkHost=hadoop.datanode2.com:4181,hadoop.datanode3.com:4181,hadoop.datanode5.com:4181"

(3)配置solr collection配置文件

/usr/solr/solr.xml:配置hostport爲tomcat的服務端口;配置zkHhost。

<solr>

  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">8080</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:15000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    <str name="zkHost">hadoop.datanode2.com:4181,hadoop.datanode3.com:4181,hadoop.datanode5.com:4181</str></solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory></solr>

/usr/solr/collection1/core.properties:刪除該文件(這樣集羣啓動後就沒有collection)


/usr/solr/collection1/conf/solrconfig.xml:修改以下配置項:

<dataDir>${solr.data.dir:/data_solr/example-collection}</dataDir>


將全部的這些配置同步到各個節點上。

(3) 保存後依次啓動tomcat,輸入http://10.2.50.46:8080,看到以下界面說明成功


正常狀況下,應該是沒有collection和core的,我這裏是本身建立了一個collection。

(4)建立collection,shard,core

有兩種方式:一種是建立collection,自動分配shard和replica;另外一種是建立collection,手動分配shard和replica。推薦後者,由於可控性強。

方式一:

curl'http://localhost:7070/solr/admin/collections?action=CREATE&name=europe-collection&numShards=3&replicationFactor=3&maxShardsPerNode=3'

這樣會出來一個collection,它有3個shard,每一個shard有1個數據節點,2個備份節點,即該collection共有9個core

缺點:不靈活,不能選擇適合的節點,不能選擇數據存放路徑,不能選擇實例存放路徑

方式二:

curl 'http://localhost:8080/solr/admin/cores?action=CREATE&name=cz_collection-shard1-replica1&instanceDir=/usr/solr/cz_collection-shard1-replica1&dataDir=/data_solr/cz_collection-shard1-replica1&collection=cz_collection&shard=shard1'

curl 'http://localhost:8080/solr/admin/cores?action=CREATE&name=cz_collection-shard1-replica2&instanceDir=/usr/solr/cz_collection-shard1-replica2&dataDir=/data_solr/cz_collection-shard1-replica2&collection=cz_collection&shard=shard1'

這樣能夠建立出一個collection,並本身指定該collection的shard和replica的全部配置項。還能夠繼續接着建立。

以上兩種方式的具體api調用,請參看solr官方文檔。

(5)集羣運維

a.集羣會發生變化的就是collection的配置,所以當collection的配置文件發生變化後就應該使用命令更新zookeeper中配置文件信息,solr很好提供了運維工具:

#collection配置
#將配置文件上傳到ZooKeeper中
java -classpath .:/usr/solr/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost hadoop.datanode2.com:4181,hadoop.datanode3.com:4181,hadoop.datanode5.com:4181 -confdir /usr/solr/collection1/conf -confname myconf
#將上傳到ZooKeeper中配置文件與Collection相關聯
java -classpath .:/usr/solr/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection cz_collection -confname myconf -zkhost hadoop.datanode2.com:4181,hadoop.datanode3.com:4181,hadoop.datanode5.com:4181

b.對於collection,shard,core運維使用api接口便可,在此不說了。


參考文章:

http://myjeeva.com/solrcloud-cluster-single-collection-deployment.html#deploying-solrcloud

http://wiki.apache.org/solr/SolrCloudTomcat

http://wiki.apache.org/solr/SolrTomcat

http://blog.csdn.net/woshiwanxin102213/article/details/18793271


轉載:http://blog.csdn.net/xyls12345/article/details/27504965

相關文章
相關標籤/搜索