Apache SolrCloud安裝

來源:互聯網
上載者:User

標籤:des   Lucene   style   blog   http   color   io   os   使用   

  1.介紹 

   SolrCloud通過ZooKeeper叢集來進行協調,使一個索引進行分區,各個分區可以分布在不同的物理節點上,多個物理分區組成一個完成的索引Collection。SolrCloud自動支援Solr Replication,可以同時對分區進行複製,冗餘儲存。下面,我們基於Solr最新的4.4.0版本進行安裝配置SolrCloud叢集。

 2. 安裝環境

我使用的安裝程式各版本如下:

  • Solr: Apache Solr-4.4.0
  • Tomcat: Apache Tomcat 7.0.47
  • ZooKeeper: Apache ZooKeeper 3.3.6

各個目錄說明:

  • 所有的程式安裝在/opt目錄下,你可以依照你的實際情況下修改安裝目錄。
  • ZooKeeper的資料目錄在/data/zookeeper/data
  • solr/home設定在/usr/local/solrhome

 3. 規劃SolrCloud

  • 單一SolrCloud資料集合:product
  • ZooKeeper叢集:3台
  • SolrCloud執行個體:3節點
  • 索引分區:3
  • 複製因子:2

   手動將3個索引分區(Shard)的複本(Replica)分布在3個SolrCloud節點上

三個節點:

    • 192.168.137.101
    • 192.168.137.102
    • 192.168.137.103

4. 安裝ZooKeeper叢集

由於需要用到ZooKeeper,故我們先安裝好ZooKeeper叢集

首先,再第一個節點上將zookeeper-3.3.6.zip解壓到/opt目錄:

unzip zookeeper-3.3.6 -d /opt/

建立zookeeper設定檔zookeeper-3.3.6/conf/zoo.cfg內容如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
server.1=192.168.137.101:2888:3888
server.2=192.168.137.102:2888:3888
server.3=192.168.137.103:2888:3888

  zookeeper的資料目錄指定在/data/zookeeper/data,記錄檔指定目錄/data/zookeeper/logs你也可以使用其他目錄,通過下面命令進行建立該目錄

   mkdir /data/zookeeper/data -p

  初始化myid,三個節點編號依次為1,2,3,在其餘節點上分別執行命令

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

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

  啟動ZooKeeper叢集,在每個節點上分別啟動ZooKeeper服務:

   sh /opt/zookeeper-3.3.6/bin/zkServer.sh start

  可以查看ZooKeeper叢集的狀態,保證叢集啟動沒有問題:

  [[email protected] ~]# sh /opt/zookeeper-3.3.6/bin/zkServer.sh status

  JMX enabled by default
  Using config: /opt/zookeeper-3.3.6/bin/../conf/zoo.cfg
  Mode: follower

 5. 安裝Solr

 執行以下命令:

 tar zxvf apache-tomcat-7.0.47.tar.gz -C /opt/

 unzip solr-4.4.0.zip  -d /opt

 cd /opt chmod +x apache-tomcat-6.0.36/bin/*.sh

 cp solr-4.4.0/example/webapps/solr.war apache-tomcat-6.0.36/webapps/

  解壓solr.war

  unzip solr.war -d solr

 cp solr-4.4.0/example/lib/ext/* apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/ cp solr-4.4.0/example/resources/log4j.properties apache-tomcat-6.0.36/lib/ 將該節點的操作copy到其他節點

6. ZooKeeper管理設定檔

先將附件中的設定檔解壓,然後拷貝到/usr/local/solrhome/core0/conf目錄下(每個節點)

1、 建立一個SolrCloud目錄,並將solr的lib檔案拷貝到這個目錄:

mkdir -p /usr/local/SolrCloud/solr-lib/cp apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/* /usr/local/SolrCloud/solr-lib/
 2、 通過bootstrap設定solrhome:  java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd bootstrap -solrhome /usr/local/solrhome/ 3、SolrCloud是通過ZooKeeper叢集來保證設定檔的變更及時同步到各個節點上,所以,需要將設定檔上傳到ZooKeeper叢集中: java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd upconfig -confdir /usr/local/solrhome/core0/conf -confname productconf

說明:

  • zkhost指定ZooKeeper地址,逗號分割
  • /usr/local/solrhome/core0/conf目錄下存在schema.xml和solrconfig.xml兩個設定檔,你可以修改為你自己的目錄。
  • productconf為在ZooKeeper上的設定檔名稱。

 4、把設定檔和目標collection聯絡起來:

java -classpath .:/usr/local/SolrCloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181 -cmd linkconfig -collection product -confname productconf

說明:

  • 建立的collection叫做product,並指定和productconf串連

5、查看ZooKeeper上狀態

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

[root@localhost opt]# zookeeper-3.3.6/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[productconf] [zk: localhost:2181(CONNECTED) 1] ls /collections[product]查看/configs和/collections目錄均有值,說明設定檔已經上傳到ZooKeeper上了,接下來啟動solr

7. Tomcat配置與啟動

1、修改每個節點上的tomcat設定檔,在環境變數中添加zkHost變數

編輯apache-tomcat-6.0.36/bin/catalina.sh,添加如下代碼:

JAVA_OPTS=‘-Dsolr.solr.home=/usr/local/solrhome -DzkHost=192.168.137.101:2181,192.168.137.102:2181,192.168.137.103:2181‘

在/usr/local/solrhome/目錄建立solr.xml:

<?xml version="1.0" encoding="UTF-8" ?><solr persistent="true" sharedLib="lib">    <cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="${jetty.port:8080}" hostContext="${hostContext:solr}"></cores></solr> 

說明:

  • hostPort值應該和tomcat的連接埠保持一致
  • solr預設使用jetty伺服器,連接埠預設為8983

最後,在/opt目錄下啟動tomcat:

 sh apache-tomcat-7.0.47/bin/startup.sh  

 通過http://192.168.56.121:8080/solr/進行訪問,介面提示There are no SolrCores running.,這是因為設定檔尚未配置solrcore。

8. 建立Collection、Shard和Replication

建立Collection及初始Shard

直接通過REST介面來建立Collection,你也可以通過瀏覽器訪問下面地址,如下所示:

curl ‘http://192.168.137.101:8080/solr/admin/collections?action=CREATE&name=product&numShards=3&replicationFactor=1‘

如果成功,會輸出如下響應內容

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

  • name 待建立Collection的名稱
  • numShards 分區的數量
  • replicationFactor 複製副本的數量

可以通過Web管理頁面,訪問http://192.168.137.101:8080/solr/#/~cloud,查看SolrCloud叢集的分區資訊:

實際上,我們從192.168.137.101節點可以看到,SOLR的設定檔內容,已經發生了變化,如下所示:

同時,你還可以看另外兩個節點上的solr.xml檔案的變化。

手動建立Replication

下面對已經建立的初始分區進行複製。 shard1已經在192.168.137.102上,我們複製分區到192.168.56.101和192.168.56.103上,執行如下命令:

curl ‘http://192.168.137.101:8080/solr/admin/cores?action=CREATE&collection=product&name=product_shard1_replica_2&shard=shard1‘ curl ‘http://192.168.137.103:8080/solr/admin/cores?action=CREATE&collection=product&name=product_shard1_replica_3&shard=shard1‘結果192.168.137.102上的shard1,在192.168.137.101節點上有1個副本,名稱為product_shard1_replica_2,在192.168.137.103節點上有一個副本,名稱為product_shard1_replica_3。也可以通過查看192.168.137.102和192.168.137.103上的目錄變化,如下所示:

你還可以對shard2和shard3添加副本。

再次從192.168.137.101節點可以看到,SOLR的設定檔內容,又發生了變化,如下所示:

到此為止,我們已經基於3個節點,配置完成了SolrCloud叢集。

Apache SolrCloud安裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.