solrcloud 通過 zookeeper 叢集來進行協調,使一個索引進行分片,各個分片可以分布在不同的實體節點上,多個實體分片組成一個完成的索引 collection。solrcloud 自動支援 solr replication,可以同時對分片進行複制,備援存儲。下面,我們基于 solr 最新的 4.4.0 版本進行安裝配置 solrcloud 叢集。
我使用的安裝程式各版本如下:
各個目錄說明:
所有的程式安裝在 <code>/opt</code> 目錄下,你可以依照你的實際情況下修改安裝目錄。
zookeeper的資料目錄在: <code>/data/zookeeper/data</code>
solrhome設定在: <code>/usr/local/solrhome</code>
單一solrcloud資料集合: primary
zookeeper叢集: 3台
solrcloud執行個體: 3節點
索引分片: 3
複制因子: 2
手動将3個索引分片(shard)的複本(replica)分布在3個 solrcloud 節點上
三個節點:
192.168.56.121
192.168.56.122
192.168.56.123
由于需要用到 zookeeper,故我們先安裝好 zookeeper 叢集。
安裝 zookeeper 叢集之前,請確定每台機器上配置 <code>/etc/hosts</code>檔案,使每個節點都能通過機器名通路。
首先,在第一個節點上将 zookeeper-3.4.5.tar.gz 解壓到 <code>/opt</code> 目錄:
建立 zookeeper 配置檔案 zookeeper-3.4.5/conf/zoo.cfg,内容如下:
zookeeper 的資料目錄指定在 <code>/data/zookeeper/data</code> ,你也可以使用其他目錄,通過下面指令進行建立該目錄:
然後,初始化 myid ,三個節點編号依次為 <code>1,2,3</code> ,在其餘節點上分别執行指令(注意修改編号)。
然後,在第二個和第三個節點上依次重複上面的操作。這樣第一個節點中 myid 内容為1,第二個節點為2,第三個節點為3。
最後,啟動 zookeeper 叢集,在每個節點上分别啟動 zookeeper 服務:
可以檢視 zookeeper 叢集的狀态,保證叢集啟動沒有問題:
簡單來說,執行以下指令:
在其他節點上重複以上操作完成所有節點的 solr 的安裝。
1、 建立一個 solrcloud 目錄,并将 solr 的 lib 檔案拷貝到這個目錄:
2、 通過 bootstrap 設定 solrhome :
這裡設定 solrhome 為 /usr/local/solrhome,建立該目錄:
然後,運作下面指令将 solrhome 下面的配置上傳到 zookeeper:
solrcloud 叢集的所有的配置存儲在 zookeeper。 一旦 solrcloud 節點啟動時配置了 <code>-dbootstrap_confdir</code> 參數, 該節點的配置資訊将發送到 zookeeper 上存儲。基它節點啟動時會應用 zookeeper 上的配置資訊,這樣當我們改動配置時就不用一個個機子去更改了。
3、solrcloud 是通過 zookeeper 叢集來保證配置檔案的變更及時同步到各個節點上,是以,需要将我們自己的配置檔案(在 /usr/local/solrcloud/conf/primary/conf 目錄下)上傳到 zookeeper 叢集中,配置名稱設為 primaryconf:
說明:
<code>zkhost</code> 指定 zookeeper 位址,逗号分割
<code>/usr/local/solrcloud/conf/</code> 目錄下存在名稱為 primary 的目錄,該目錄下的配置是後面需要用到的。
<code>primaryconf</code> 為在 zookeeper 上的配置檔案名稱。
/usr/local/solrcloud/conf 結構如下:
schema.xml 内容如下:
solrconfig.xml 内容如下:
4、建立 collection 并和配置檔案關聯:
建立的 collection 叫做 primary,并指定和 primaryconf 連接配接
5、檢視 zookeeper 上狀态
在任意一個節點的 /opt 目錄下執行如下指令:
檢視 <code>/configs</code> 和 <code>/collections</code> 目錄均有值,說明配置檔案已經上傳到 zookeeper 上了,接下來啟動 solr。
1、修改每個節點上的 tomcat 配置檔案,在環境變量中添加 <code>zkhost</code> 變量
編輯 <code>apache-tomcat-6.0.36/bin/catalina.sh</code> ,添加如下代碼:
在 <code>/usr/local/solrhome/</code> 目錄建立 solr.xml :
<code>-djetty.port</code>:配置 solr 使用的端口,預設為 8983,這裡我們使用的是 tomcat,端口為 8080
<code>-dsolr.solr.home</code>:配置 solr/home
<code>-zkhost</code>: 配置 zookeeper 叢集位址,多個位址逗号分隔
最後,在 /opt 目錄下啟動 tomcat: