前面已经介绍过Solr的单机版的安装与配置,下面介绍一下集群版SolrCloud的安装与配置
1.SolrCloud是什么
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
- 集中式的配置信息
- 自动容错
- 近实时搜索
- 查询时自动负载均衡
2.Solr集群的结构
3.Solr集群的搭建
3.1 前提条件
- Linux系统
- Jdk环境
- Zookeeper
3.2 ZooKeeper的安装步骤
- 把zookeeper的安装包上传到服务器。
- 解压缩。
- 在/usr/local/目录下创建一个solrcloud目录。把zookeeper解压后的文件夹复制到此目录下三份。分别命名为zookeeper1、2、3。
[root@bogon ~]# mkdir /usr/local/solrcloud
[root@bogon ~]# mv zookeeper-3.4.6 /usr/local/solrcloud/zookeeper1
[root@bogon ~]# cd /usr/local/solrcloud
[root@bogon solrcloud]# ll
total 4
drwxr-xr-x. 10 1000 1000 4096 Feb 20 2014 zookeeper1
[root@bogon solrcloud]# cp -r zookeeper1/ zookeeper2
[root@bogon solrcloud]# cp -r zookeeper1/ zookeeper3
4.配置zookeeper。
- 在每个zookeeper文件夹下创建一个data目录。
- 在data文件夹下创建一个文件名称为myid,文件的内容就是此zookeeper的编号1、2、3。
[root@bogon data]# echo 1 >> myid
[root@bogon data]# ll
total 4
-rw-r–r–. 1 root root 2 Sep 17 23:43 myid
[root@bogon data]# cat myid
1
[root@bogon data]#
在zookeeper2、3文件夹下分别创建data目录和myid文件
[root@bogon solrcloud]# mkdir zookeeper2/data
[root@bogon solrcloud]# echo 2 >> zookeeper2/data/myid
[root@bogon solrcloud]# ll zookeeper2/data
total 4
-rw-r–r–. 1 root root 2 Sep 17 23:44 myid
[root@bogon solrcloud]# cat zookeeper2/data/myid
2
[root@bogon solrcloud]# mkdir zookeeper3/data
[root@bogon solrcloud]# echo 3 >> zookeeper3/data/myid
- 把zookeeper1下conf目录下的zoo_sample.cfg文件复制一份改名为zoo.cfg。
- 修改zoo.cfg的配置。
- 启动zookeeper。进入zookeeper1/bin目录下。
//启动zookeeper:./zkServer.sh start
//关闭:./zkServer.sh stop
//查看状态:./zkServer.sh status
[root@bogon solrcloud]# zookeeper1/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper1/bin/../conf/zoo.cfg
Mode: follower
[root@bogon solrcloud]# zookeeper2/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper2/bin/../conf/zoo.cfg
Mode: leader
[root@bogon solrcloud]# zookeeper3/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solrcloud/zookeeper3/bin/../conf/zoo.cfg
Mode: follower
3.3 Solr实例的搭建
- 创建4个tomcat实例,修改其端口。
8080
-8083
- 解压
solr-4.10.3.tar.gz
压缩包。从压缩包中复制solr.war
到tomcat。 - 启动tomcat解压war包。把
solr-4.10.3
目录下example
目录下的关于日志相关的jar包添加到solr工程中。 - 创建solrhome。修改
web.xml
指定solrhome的位置。
3.4 solr集群的搭建
第一步:
把solrhome
中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts
./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf
-confname myconf
查看配置文件是否上传成功:
//登录ZooKeeper服务器
[root@bogon bin]# ./zkCli.sh
Connecting to localhost:2181
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt,
_schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml,
_schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt,
mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf,
update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]
[zk: localhost:2181(CONNECTED) 3]
第二步:
修改solrhome下的solr.xml文件,指定当前实例运行的ip地址及端口号。
第三步:
修改每一台solr
的tomcat 的bin
目录下catalina.sh
文件中加入DzkHost
指定zookeeper服务器地址:
JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"
第四步:
重新启动tomcat。
第五步:
创建一个两片的collection,每片是一主一备。
使用以下命令创建:
http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
第六步:
删除collection1.
http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1