Solr搜索引擎 — SolrCloud介紹和環境準備

搞定了一切的一切以後下一步就是正式使用了,可是以前介紹的都是在單臺服務器上進行的部署,若是在生產環境出現了單臺故障怎麼辦呢?提供穩定性和性能的最直觀的方式就是集羣,solr官方提供了cloud的集羣方式java

附上:linux

喵了個咪的博客:http://w-blog.cnapache

Solr官網:http://lucene.apache.org/solr/vim

PS:8.0.0版本已經發布,本文使用此時較爲穩定的7.7.1版本centos

一,SolrCloud介紹

SolrCloud是基於Solr和Zookeeper的分佈式搜索方案。它的主要思想是使用Zookeeper做爲SolrCloud集羣的配置信息中心,統一管理solrcloud的配置,好比solrconfig.xml和schema.xml。tomcat

SolrCloud(solr集羣)是Solr提供的分佈式搜索方案,一下場景可以比較好的使用SolrCloud服務器

  • 當你須要大規模,容錯,分佈式索引和檢索能力時使用SolrCloud。
  • 當索引量很大,搜索請求併發很高時,一樣須要使用SolrCloud來知足這些需求。
  • 不過當一個系統的索引數據量少的時候是沒有必要使用SolrCloud的。

Solrcloud特色功能:併發

  • 集中式的配置信息
  • 自動容錯
  • 近實時搜索
  • 查詢時自動負載均衡

Solrcloud的結構:   solrcloud爲了下降單機的處理壓力,須要由多臺服務器共同來完成索引和搜索任務。實現的思路是將索引數據進行Shard分片,每一個分片由多臺服務器共同完成,當一個索引或搜索請求過來時會分別從不一樣的Shard的服務器中操做索引。solrcloud是基於solr和zookeeper部署,zookeeper是一個集羣管理軟件,solrcloud須要由多臺solr服務器組成,而後由zookeeper來進行協調管理。app

物理結構:負載均衡

  • 三個Solr實例( 每一個實例包括兩個Core),組成一個SolrCloud。 邏輯結構:
  • 索引集合包括兩個Shard(shard1和shard2),shard1和shard2分別由三個Core組成,其中一個Leader兩個Replication,Leader是由zookeeper選舉產生,zookeeper控制每一個shard上三個Core的索引數據一致,解決高可用問題。用戶發起索引請求分別從shard1和shard2上獲取,解決高併發問題。 core:
  • 每一個Core是Solr中一個獨立運行單位,提供 索引和搜索服務。一個shard須要由一個Core或多個Core組成。因爲collection由多個shard組成因此collection通常由多個core組成。 Master&Slave:
  • Master是master-slave構中的主結點(一般說主服務器),Slave是master-slave結構中的從結點(一般說從服務器或備服務器)。同一個Shard下master和slave存儲的數據是一致的,這是爲了達到高可用目的

2、環境準備

準備三臺centos 7服務器 , 而且對主機名進行改寫

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

3、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

全部節點修改環境變量

> vim /etc/profile

# zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
export PATH=$ZOOKEEPER_HOME/bin:$PATH

> source /etc/profile

將zookeeper目錄複製到其餘節點上

> 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文件(每節點都須要)

> cd /usr/local/zookeeper-3.4.13
> mkdir data
> echo "1" > data/myid

注意,每一個節點myid文件要不一致

啓動並測試

# 在三臺機器上分別執行
> zkServer.sh start

# 查看狀態
[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
相關文章
相關標籤/搜索