1. 程式人生 > >阿里雲伺服器搭建Solr叢集[圖文詳解]

阿里雲伺服器搭建Solr叢集[圖文詳解]

Solr叢集

Solr叢集的架構

SolrCloud

需要用到solr+zookeeper

要完成的叢集結構

Zookeeper

1、叢集管理

主從的管理、負載均衡、高可用的管理。叢集的入口。Zookeeper必須是叢集才能保證高可用。Zookeeper有選舉和投票的機制。叢集中至少應該有三個節點。

2、配置檔案的集中管理

搭建solr叢集時,需要把Solr的配置檔案上傳zookeeper,讓zookeeper統一管理。每個節點都到zookeeper上取配置檔案。

3、分散式鎖

4、忘了

叢集需要的伺服器

Zookeeper:3臺

Solr:4臺

偽分散式,zookeeper三個例項、tomcat(solr)需要四個例項。

Zookeeper需要安裝jdk。

叢集搭建步驟

第一部分:Zookeeper叢集搭建

第一步:需要把zookeeper的安裝包上傳到伺服器。

zookeeper-3.4.6.tar.gz

第二步:把zookeeper解壓。

第三步:把zookeeper向/usr/local/solr-cloud目錄下複製三份。

第三步:配置zookeeper。

1、在zookeeper01目錄下建立一個data資料夾。

2、在data目錄下建立一個myid的檔案

3、Myid的內容為1(02對應“2”,03對應“3”)

4、Zookeeper02、03以此類推。

5、進入conf檔案,把zoo_sample.cfg檔案改名為zoo.cfg

6、修改zoo.cfg,把dataDir=屬性指定為剛建立的data資料夾。

7、修改zoo.cfg,把clientPort指定為不衝突的埠號(01:2181、02:2182、03:2183)

8、在zoo.cfg中新增如下內容:

server.1=192.168.25.154:2881:3881

server.2=192.168.25.154:2882:3882

server.3=192.168.25.154:2883:3883

第四步:啟動zookeeper。

Zookeeper的目錄下有一個bin目錄。使用zkServer.sh啟動zookeeper服務。

啟動:./zkServer.sh start

關閉:./zkServer.sh stop

檢視服務狀態:./zkServer.sh status

第二部分:搭建solr叢集

第一步:安裝四個tomcat,修改其埠號不能衝突。8080~8083

第二步:向tomcat下部署solr。把單機版的solr工程複製到tomcat下即可。

第三步:為每個solr例項建立一solrhome。

第四步:為每個solr例項關聯對應的solrhome。修改web.xml

第五步:修改每個solrhome下的solr.xml檔案。修改host、hostPort兩個屬性。分別是對應的ip及埠號。

第六步:把配置檔案上傳到zookeeper。需要使用

/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh命令上傳配置檔案。

把/usr/local/solr-cloud/solrhome01/collection1/conf目錄上傳到zookeeper。

需要zookeeper叢集已經啟動。

./zkcli.sh -zkhost 192.168.11.134:2181,192.168.11.134:2182,192.168.11.134:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

第七步:檢視是否上傳成功。

使用zookeeper的zkCli.sh命令。

第八步:告訴solr例項zookeeper的位置。需要修改tomcat的catalina.sh新增

JAVA_OPTS="-DzkHost=192.168.11.134:2181,192.168.11.134:2182,192.168.11.134:2183"

每個節點都需要新增。

第九步:啟動每個solr例項。

第十步:叢集分片。

將叢集分為兩片,每片兩個副本。

http://192.168.11.134:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

第十一步:刪除不用collection1

使用solrJ連線叢集

@Test

public void testSolrClout() throws Exception {

//建立一個SolrServer物件

CloudSolrServer solrServer = new CloudSolrServer("192.168.11.134:2181,192.168.11.134:2182,192.168.11.134:2183");

//設定預設的collection

solrServer.setDefaultCollection("collection2");

//建立一個文件物件

SolrInputDocument document = new SolrInputDocument();

document.addField("id", "test01");

document.addField("item_title", "title1");

//新增文件

solrServer.add(document);

//提交

solrServer.commit();

}

專案切換到叢集

只需要在spring容器中配置一個叢集版的SolrServer物件即可。

以上,完成自己利用阿里雲伺服器搭建的一個偽叢集,也算是模擬一下,供大家學習參考