阿里雲服務器搭建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

http://192.168.11.134:8080/solr/admin/collections?action=DELETE&name=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對象即可。

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章