搞定了一切的一切之后下一步就是正式使用了讲冠,但是之前介紹的都是在單臺服務(wù)器上進行的部署顿肺,如果在生產(chǎn)環(huán)境出現(xiàn)了單臺故障怎么辦呢钟鸵?提供穩(wěn)定性和性能的最直觀的方式就是集群,solr官方提供了cloud的集群方式
附上:
喵了個咪的博客:http://w-blog.cn
Solr官網(wǎng):http://lucene.apache.org/solr/
PS:8.0.0版本已經(jīng)發(fā)布撇眯,本文使用此時較為穩(wěn)定的7.7.1版本
一报嵌,SolrCloud介紹
SolrCloud是基于Solr和Zookeeper的分布式搜索方案。它的主要思想是使用Zookeeper作為SolrCloud集群的配置信息中心熊榛,統(tǒng)一管理solrcloud的配置锚国,比如solrconfig.xml和schema.xml。
SolrCloud(solr集群)是Solr提供的分布式搜索方案玄坦,一下場景能夠比較好的使用SolrCloud
- 當你需要大規(guī)模血筑,容錯,分布式索引和檢索能力時使用SolrCloud煎楣。
- 當索引量很大豺总,搜索請求并發(fā)很高時,同樣需要使用SolrCloud來滿足這些需求择懂。
- 不過當一個系統(tǒng)的索引數(shù)據(jù)量少的時候是沒有必要使用SolrCloud的喻喳。
Solrcloud特點功能:
- 集中式的配置信息
- 自動容錯
- 近實時搜索
- 查詢時自動負載均衡
Solrcloud的結(jié)構(gòu):
solrcloud為了降低單機的處理壓力,需要由多臺服務(wù)器共同來完成索引和搜索任務(wù)困曙。實現(xiàn)的思路是將索引數(shù)據(jù)進行Shard分片表伦,每個分片由多臺服務(wù)器共同完成,當一個索引或搜索請求過來時會分別從不同的Shard的服務(wù)器中操作索引慷丽。solrcloud是基于solr和zookeeper部署蹦哼,zookeeper是一個集群管理軟件,solrcloud需要由多臺solr服務(wù)器組成要糊,然后由zookeeper來進行協(xié)調(diào)管理翔怎。
物理結(jié)構(gòu):
- 三個Solr實例( 每個實例包括兩個Core),組成一個SolrCloud杨耙。
邏輯結(jié)構(gòu): - 索引集合包括兩個Shard(shard1和shard2),shard1和shard2分別由三個Core組成飘痛,其中一個Leader兩個Replication珊膜,Leader是由zookeeper選舉產(chǎn)生,zookeeper控制每個shard上三個Core的索引數(shù)據(jù)一致宣脉,解決高可用問題车柠。用戶發(fā)起索引請求分別從shard1和shard2上獲取,解決高并發(fā)問題。
core: - 每個Core是Solr中一個獨立運行單位竹祷,提供 索引和搜索服務(wù)谈跛。一個shard需要由一個Core或多個Core組成。由于collection由多個shard組成所以collection一般由多個core組成塑陵。
Master&Slave: - Master是master-slave構(gòu)中的主結(jié)點(通常說主服務(wù)器)感憾,Slave是master-slave結(jié)構(gòu)中的從結(jié)點(通常說從服務(wù)器或備服務(wù)器)。同一個Shard下master和slave存儲的數(shù)據(jù)是一致的令花,這是為了達到高可用目的
二阻桅、環(huán)境準備
準備三臺centos 7服務(wù)器 , 并且對主機名進行改寫
hostname solr-1
hostname solr-2
hostname solr-3
修改三臺機器hosts文件通過hostname可以互相訪問,使用ping命令驗證可以互相通訊
> vim /etc/hosts
172.16.2.75 solr-1
172.16.2.74 solr-2
172.16.2.72 solr-3
安裝JAVA,可以自行安裝或oneinstack一鍵命令安裝,這里安裝了java和tomcat
> wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --tomcat_option 2 --jdk_option 2 --reboot
三、Zookeeper安裝
> cd /app/install/
> wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
> tar -zxvf zookeeper-3.4.13.tar.gz
> mv zookeeper-3.4.13 /usr/local/
修改配置文件
> cd /usr/local/zookeeper-3.4.13/conf/
> cp zoo_sample.cfg zoo.cfg
> vim zoo.cfg
tickTime=2000
dataDir=/usr/local/zookeeper-3.4.13/data
clientPort=2181
initLimit=10
syncLimit=5
server.1=solr-1:2888:3888
server.2=solr-2:2888:3888
server.3=solr-3:2888:3888
所有節(jié)點修改環(huán)境變量
> vim /etc/profile
# zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
export PATH=$ZOOKEEPER_HOME/bin:$PATH
> source /etc/profile
將zookeeper目錄復制到其他節(jié)點上
> scp -r /usr/local/zookeeper-3.4.13/ root@solr-2:/usr/local/zookeeper-3.4.13
> scp -r /usr/local/zookeeper-3.4.13/ root@solr-3:/usr/local/zookeeper-3.4.13
添加myid文件(每節(jié)點都需要)
> cd /usr/local/zookeeper-3.4.13
> mkdir data
> echo "1" > data/myid
注意兼都,每個節(jié)點myid文件要不一致
啟動并測試
# 在三臺機器上分別執(zhí)行
> zkServer.sh start
# 查看狀態(tài)
[root@solr-1 zookeeper-3.4.13]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
[root@solr-2 zookeeper-3.4.13]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
[root@solr-3 zookeeper-3.4.13]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower