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

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

附上:

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

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

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

一,SolrCloud介紹

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

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

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

Solrcloud特點功能:

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

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

物理結構:

  • 三個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存儲的數據是一致的,這是爲了達到高可用目的

二、環境準備

準備三臺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 

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

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