工具:zookeeper
什么時(shí)候搭建集群?
當(dāng)我們搜索系統(tǒng)訪問(wèn)量過(guò)大的時(shí)候,solr索引量過(guò)大的時(shí)候我們就需要搭建solr集群。
怎么搭建集群?
在搭建集群之前,我們需要明白幾個(gè)名詞
Collection:Collection在solr集群中是一個(gè)邏輯上完整的索引結(jié)構(gòu),它常常被劃分為一個(gè)或多個(gè)分片(Shard),他們使用相同的配置信息。例如對(duì)商品信息搜索,可以創(chuàng)建一個(gè)collection,collection=shard1+shard2+...+shardX
Shard:每個(gè)Shard被劃成一個(gè)或多個(gè)replication,通過(guò)選舉確定那個(gè)是leader.
Core:Core是solr中一個(gè)獨(dú)立的運(yùn)行單位,提供索引,搜索服務(wù)。一個(gè)shard需要由一個(gè)Core或多個(gè)Core組成。
Master-Slave:Master-Slave一個(gè)主從結(jié)構(gòu),master為主節(jié)點(diǎn),salve是從節(jié)點(diǎn),為了達(dá)到高可用,我們?cè)谕粋€(gè)Shard下搭建一個(gè)master節(jié)點(diǎn)和salver節(jié)點(diǎn),當(dāng)master節(jié)點(diǎn)掛了,salver節(jié)點(diǎn)扶正。
zookeeper:zookeepr在這里,我們用它作為集群的管理工具它是集群的入口,它集中管理配置文件,實(shí)現(xiàn)了集群的負(fù)載均衡,和容錯(cuò)。
下面我們來(lái)看下我們要搭建的solr的架構(gòu)圖
zookeeper是集群的入口,每個(gè)collection分成兩片,每片有兩個(gè)節(jié)點(diǎn),一個(gè)主一個(gè)從。
因?yàn)閦ookeeper有一個(gè)投票選舉,為了保證可以超過(guò)半數(shù),所以需要三個(gè)
solr集群分成兩片,每片有一主一備共四片,所以需要四個(gè)
我們的集群架構(gòu)中需要三個(gè)zookeeper,四個(gè)solr,由于我的電腦里裝運(yùn)行不起來(lái)這么多的虛擬機(jī),所以我用一臺(tái)虛擬機(jī)來(lái)搭建一個(gè)偽分布式,也就是在一臺(tái)虛擬機(jī)上用不同的區(qū)分不同的應(yīng)用。
另外,zookeeper和solr都是java開(kāi)發(fā)的,java服務(wù)比較耗內(nèi)存所以虛擬機(jī)內(nèi)存建議大點(diǎn)。
搭建solr集群的搭建共兩大步:1.zookeeper集群搭建,2.solr集群搭建
zookeeper集群中
1.新建一個(gè)目錄存放集群
zookeeper集群中三個(gè)節(jié)點(diǎn)的搭建是一樣的,所以我只演示一個(gè)節(jié)點(diǎn)的搭建,另兩個(gè)省略。
命令:mkdir solr-cloud
2.把zookeeper上傳到solr-cloud里去
我是用的是xftp5
3.解壓zookeeper
命令:tar zxf zookeeper-3.4.6.tar.gz
4.復(fù)制三份解壓后的zookeeper-3.4.6到zookeeper01中
命令:cp -r zookeeper-3.4.6 /root/art/solr-cloud/zookeeper01
5.進(jìn)入zookeeper01中創(chuàng)建一個(gè)data目錄
命令:mkdir data
6.在data里創(chuàng)建一個(gè)myid文件
命令:touch myid
查看一下改沒(méi)改成功
命令:cat myid
7.把conf/zoo_sample.cfg改名成zoo.cfg
命令:mv zoo_sample.cfg zoo_sample.cfg
8.修改zoo.cfg文件,把data目錄修改成我們創(chuàng)建的data目錄
命令:vim zoo.cfg
這樣我們就完成了一個(gè)zookeeper的配置
剩下兩個(gè)zookeeper和這個(gè)一樣,此處省略
三個(gè)zookeeper搭建完成,我們需要搭建四個(gè)solr
solr集群的四個(gè)節(jié)點(diǎn)搭建也是一樣的,同樣我只演示一個(gè)節(jié)點(diǎn)的搭建。
1.把tomcat復(fù)制四份
cp -r pache-tomcat-7.0.47 /root/art/solr-cloud/tomcat01
2.把tomcat每一個(gè)的端口號(hào)改一下
命令:vim tomcat01/conf/server.xml
在這里只給出一個(gè)tomcat修改的圖,另三個(gè)省略
3.把solr的web工程部署到這四個(gè)tomcat中
也就是把配置好的單機(jī)版的賦值到tomcat的webapps中
單機(jī)版配置可以參考這篇博客https://blog.csdn.net/weixin_38497513/article/details/81410339
命令:cp -r /root/art/solr/apache-tomcat-7.0.47/webapps/solr tomcat04/webapps/
5.修改每一份solrhome的solr.xml
命令:vim solr.xml
這里只展示一份的修改,其他四個(gè)和這個(gè)一樣
6.修改每個(gè)solr工程的web.xml,建立起每個(gè)solr和solrhome的關(guān)系
命令:vim tomcat01/webapps/solr/WEB-INF/web.xml
7.接著我們建立tomcat和zookeeper之間的關(guān)系
8.讓zookeeper管理配置文件
使用一個(gè)工具,把隨便一個(gè)solehome中的conf文件上傳到zookeeper中就行,我選擇了solrhome01,工具在solr/example/scripts/zkcli.sh
執(zhí)行上傳文件命令:./zkcli.sh -zkhost 192.168.2.100:2181,192.168.2.100:2182,192.168.2.100:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf/ -confname myconf
查看是否上傳成功
先使用zookeeper的客戶端zkCli.sh連接zookeeper
他在zookeeper01/bin/zkCli.sh
開(kāi)始連接
連接的時(shí)候只要連接任意一個(gè)zookeeper節(jié)點(diǎn)就行,不是必須連leader
連接非當(dāng)前節(jié)點(diǎn)
查看文件是否上傳成功
9.啟動(dòng)tomcat
給tomcat寫(xiě)個(gè)批處理
命令:vim start-tomcat.sh
在文件中遍歷四個(gè)tomcat的啟動(dòng)命令
給批處理文件改權(quán)限
命令:chmod +x start-tomcat.sh
啟動(dòng)tomcat
命令:./start-tomcat.sh
查看日志
10.訪問(wèn)solr
192.168.2.100:8182/solr
我們的solr的集群就搭建完成了,這個(gè)是一個(gè)主三個(gè)從,把collection1分成了一片,不是我想要的集群
如果只想要一個(gè)分片的就不用看了
下面我演示一下創(chuàng)建一個(gè)collection,分成兩片,兩主,兩從
創(chuàng)建collection
我們需要向solr發(fā)起一個(gè)請(qǐng)求
http://192.168.2.100:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
順便也說(shuō)一下刪除collection吧
刪除collection
http://192.168.2.100:8180/solr/admin/collections?action=DELETE&name=collection1
聯(lián)系客服