配置Solr集羣

配置Solr服務器集羣java

本文所講的Solr集羣服務器是基於 Tomcat7 + Zookeeper3.4.6 + Solr4.6apache

部署Zookeepertomcat

(1)下載Zookeeper3.4.6服務器

下載地址爲 http://www.apache.org/dyn/closer.cgi/zookeeper/socket

(2)解壓Zookeeper3.4.6 .tar.gz到文件夾中待用spa

(3)打開conf文件夾,新建文件zoo.cfg(也能夠重命名zoo_sample.cfg)server

(4)修改zoo.cfgxml

tickTime=2000對象

initLimit=10部署

syncLimit=5

dataDir=D:\\tmp\\zookeeper\\server1\\data

clientPort=2181

 

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

在此示例文件中,咱們部署了三分Zookeeper服務器,數據文件分別定位到

D:\\tmp\\zookeeper\\server1

 

D:\\tmp\\zookeeper\\server2

 

D:\\tmp\\zookeeper\\server3

其中的server.x中的x爲服務器myid(myid隨後說在哪裏定義),後面的127.0.0.1:2888:3888分別對應與2181

例如,服務器A的clientPort爲2181,則對應的地址爲127.0.0.1:2888:3888

服務器B的clientPort爲2182,則對應的地址應該爲127.0.0.1:2889:3889

服務器配置文件                      dataDir                                  clientPort

 

server_1/conf/zoo.cfg               D:\\tmp\\zookeeper\\server1              2181

 

server_2/conf/zoo.cfg               D:\\tmp\\zookeeper\\server2              2182

server_3/conf/zoo.cfg               D:\\tmp\\zookeeper\\server3              2183

(4):接下來咱們該說說myid的問題了

上述文件中咱們定義了一個 dataDir 地址,此地址是程序存放數據用的地址,在此地址中,咱們定義一個myid文件,用記事本打開,寫入1,則此項目的Myid爲1

分別將三個服務器按照123進行排列寫入myid文件

(5):依次啓動Zookeeper服務器(鏈接第一臺時有異常信息,不用管,等都鏈接起來就沒有異常了)

部署Solr

按照Solr單機版的部署方式,部署三臺Solr單機版服務器,並去掉其中的全部connection

配置Solr和Zookeeper關聯

1:假設以前部署好的Zookeeper地址爲:

127.0.0.1:2181

127.0.0.1:2182

127.0.0.1:2183

2:部署好的三個solr服務器配置分別爲

solr服務器                         tomcat端口                           solrhome

 

solr1                               8081                                SolrCloud\data\solrhome1

 

solr2                               8082                                SolrCloud\data\solrhome2

 

solr3                               8083                                SolrCloud\data\solrhome3

3:打開solrhome1下的solr.xml,並修改內容:

<?xml version="1.0" encoding="UTF-8" ?>
<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">127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183</str>
  </solrcloud>
 
  <shardHandlerFactory name="shardHandlerFactory"
         class="HttpShardHandlerFactory">
      <int name="socketTimeout">${socketTimeout:0}</int>
      <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>
</solr>

 

其中hostPort爲該服務器的tomcat端口

zkHost爲Zookeeper的三個服務器地址用逗號鏈接起來。

依次啓動三個solr服務器,並訪問任意一個solr,出現下圖頁面,即說明配置集羣服務成功。

在Zookeeper 中上傳Solr的connection配置文件

1:複製相應的Solr的配置文件(例如:Solr\example\solr\collection1\conf)到指定地址

2:複製Solr\example\lib\ext\*.jar 和 war包中的全部lib中的全部jar包到一個文件夾中。

3:執行命令

java -classpath D:\\uploadCloud\\ClientLib\\* 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:\\uploadCloud\\conf -confname myconf

該命令是使用了以前複製的jar包中的ZkCLI程序進行一個指定文件夾的 upconfig 工做

4:執行命令

java -classpath D:\\uploadCloud\\ClientLib\\* org.apache.solr.cloud.ZkCLI -cmd

linkconfig -collection collection -confname myconf -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

該命令是將剛剛上傳的配置文件命名爲一個collection對象

建立connection實例

訪問剛剛配置的solr服務器

http://127.0.0.1:8081/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=3&maxShardsPerNode=3

name:collection的名稱

numShards:指定分片數量(slices)

replicationFactor:副本數量

maxShardsPerNode:默認值爲1,注意三個數值:numShards、replicationFactor、liveSolrNode,一個正常的solrCloud集羣不允許同一個liveSolrNode上部署同一個shard的多個replic,所以當maxShardsPerNode=1時,numShards*replicationFactor>liveSolrNode時,報錯。所以正確時因知足如下條件: numShards*replicationFactor<liveSolrNode*maxShardsPerNode

createNodeSet

collection.configName:指定該collection使用那份config,這份config必須存在於zk中。

相關文章
相關標籤/搜索