1、solr集群搭建
2、使用solrj管理solr集群
3、把搜索功能切换到集群版
1. 什么是SolrCloud
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
1. Solr集群的系统架构
1.1. 物理结构
三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。
1.2. 逻辑结构
索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。
用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。
1.2.1. collection
Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个Shard(分片),它们使用相同的配置信息。
比如:针对商品信息搜索可以创建一个collection。
collection=shard1+shard2+....+shardX
1.2.2. Core
每个Core是Solr中一个独立运行单位,提供 索引和搜索服务。一个shard需要由一个Core或多个Core组成。由于collection由多个shard组成所以collection一般由多个core组成。
1.2.3. Master或Slave
Master是master-slave结构中的主结点(通常说主服务器),Slave是master-slave结构中的从结点(通常说从服务器或备服务器)。同一个Shard下master和slave存储的数据是一致的,这是为了达到高可用目的。
1.2.4. Shard
Collection的逻辑分片。每个Shard被化成一个或者多个replication,通过选举确定哪个是Leader。
1.1. 需要实现的solr集群架构
Zookeeper作为集群的管理工具。
1、集群管理:容错、负载均衡。
2、配置文件的集中管理
3、集群的入口
需要实现zookeeper 高可用。需要搭建集群。建议是奇数节点。需要三个zookeeper服务器。
搭建solr集群需要7台服务器。
搭建伪分布式:
需要三个zookeeper节点
需要四个tomcat节点。
建议虚拟机的内容1G以上。
单机版solr参考我上一篇
1. Zookeeper集群搭建:
创建目录:
[root@localhost ~]# mkdir/usr/local/solr-cloud
[root@localhost ~]# cp -r zookeeper-3.4.6/usr/local/solr-cloud/zookeeper01
[root@localhost ~]# cp -r zookeeper-3.4.6/usr/local/solr-cloud/zookeeper02
[root@localhost ~]# cp -r zookeeper-3.4.6/usr/local/solr-cloud/zookeeper03
[root@localhost ~]# cd /usr/local/solr
solr/ solr-cloud/
[root@localhost ~]# cd/usr/local/solr-cloud/
[root@localhost solr-cloud]# ll
在zookeeper01创建并修改配置文件
[root@localhost solr-cloud]# cd zookeeper01
[root@localhost zookeeper01]# mkdir data
[root@localhost zookeeper01]# cd data
[root@localhost data]# vi myid
1
[root@localhost data]# cd ..
[root@localhost zookeeper01]# cd conf
[root@localhost conf]# ll
[root@localhost conf]# cp zoo_sample.cfgzoo.cfg
[root@localhost conf]# vi zoo.cfg
注意:每个人ip不一样
同样zookeeper02 zookeeper03更改一样
Zookeeper02:
注意:每个人ip不一样
同样zookeeper02 zookeeper03更改一样
Zookeeper02:
Zookeeper03:
编写p处理启动三个zookeeper
[root@localhost solr-cloud]# vistart-all.sh
cd zookeeper01/bin
./zkServer.sh start
cd ../../
cd zookeeper02/bin
./zkServer.sh start
cd ../../
cd zookeeper03/bin
./zkServer.sh start
cd ../../
[root@localhost solr-cloud]# chmod u+xstart-all.sh
[root@localhost solr-cloud]# ./start-all.sh
Solr集群的配置:
cp -r apache-tomcat-7.0.57 /usr/local/solr-cloud/tomcat01
将配置好的solr复制到四个tomcat下:
[root@localhost solr-cloud]# cp -r../solr/tomcat/webapps/solr/ tomcat01/webapps/
vi tomcat01/conf/server.xml
vi tomcat02/conf/server.xml
vi tomcat03/conf/server.xml
vi tomcat04/conf/server.xml
复制solrhome:
[root@localhost solr-cloud]# cp -r../solr/solrhome/ solrhome04
[root@localhost solr-cloud]# ll
[root@localhost solr-cloud]# vitomcat01/webapps/solr/WEB-INF/web.xml
[root@localhost solr-cloud]# vi tomcat02/webapps/solr/WEB-INF/web.xml
[root@localhost solr-cloud]# vi tomcat03/webapps/solr/WEB-INF/web.xml
[root@localhost solr-cloud]# vi tomcat04/webapps/solr/WEB-INF/web.xml
参照上路,改序号。
然后集群版需要更改solr.xml
[root@localhost solrhome01]# vi solr.xml
同样四个配置几乎相同,更改序号
修改tomcat/bin目录下的catalina.sh文件,关联solr和zookeeper。
把此配置添加到配置文件中:
JAVA_OPTS="-DzkHost=192.168.25.128:2182,192.168.25.128:2183,192.168.25.128:2184"
[root@localhost tomcat01]# vibin/catalina.sh
四个tomcat都是一样。添加的参数也是一样,复制就行。
让zookeeper统一管理配置文件。 需要把solrhome/collection1/conf目录上传到zookeeper。上传任意solrhome中的配置文件即可。
使用工具上传配置文件:/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh
一步一步cd 到/cloud-scripts下执行下面命令:
./zkcli.sh -zkhost 192.168.25.128:2182,192.168.25.128:2183,192.168.25.128:2184-cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf-confname myconf
我这里报错没有unzip命令,所以下载了命令zip,然后上传成功。
再输入测试,是否连接成功。。。
编写脚本启动所有tomcat
[root@localhost solr-cloud]# vistart-tomcat-all
/usr/local/solr-cloud/tomcat01/bin/startup.sh
[root@localhost solr-cloud]# chmod u+xstart-tomcat-all
启动
[root@localhost solr-cloud]#./start-tomcat-all
查看日志是否启动成功:
[root@localhost solr-cloud]# tail -f/usr/local/solr-cloud/tomcat01/logs/catalina.out
蓝瘦 过程有几个细节有问题,导致失败,后来修改修改才行。。。。。。。。。。。