什么是solrCloud
SolrCloud是solr提供的分布式搜索方案
适用情景:大规模,容错,分布式索引,检索
soLrCloud是基于solr和zookeeper的分布式搜索方案,
zookeeper的作用
使用zookeeper来管理集群:
- 监控集群中的每个节点的健康状态
- 请求来了先连zookeeper,而不是直接连solr,然后由zookeeper决定将这个请求发给哪台服务器然后哪台服务器来进行搜索
- zookeeper可以对配置文件进行集群管理,因为集群中有这么多节点,每个节点都有一套配置文件的话不统一,因此我们把配置文件提出来放到zookeeper上,让集群中所有节点都去zookeeper上读取这个配置文件
solrCloud原理
系统架构图
物理结构:
一个solr服务可以有1个或者多个core,每个core【数据库】存储不同的索引【表】,相互之间不干扰
逻辑结构:
- 一个collection代表一个完整的索引库,因为存储的内容很多,因此要分片存储,两片的内容不一样
每一片要存储到3个节点即3个core上,这3个core上内容完全一样,等于把一个片的内容复制3份放在3个core,有一个主core,2个从core
关于zookeeper集群和solr集群的节点个数
- 因为zookeeper是solr集群的入口,因此zookeeper也要实现高可用,因此才搭建zookeeper集群,而zookeeper遵循投票选举制度, 所以节点最好是奇数节点,最小的话就是3个了。
- solr集群要分片的话至少分两片,分一片的话就是主和备,就不叫分片了,而每一片至少都是一主master一备slave,实现高可用,这样就是4个core,即一个solrCloud至少7台服务器3zookeeper,4solr
开始搭建solrCloud
1 搭建zookeeper集群
1.1 在~下创建文件夹solrCloud:
mkdir solrCloud
1.2 上传zookeeper.tar包到~目录下,然后解压
tar -xzvf zookeeper-3.4.6.tar.gz
1.3 复制3份解压好的文件分别到solrCloud的zookeeper文件夹中
[root@localhost ~]# cp -r zookeeper-3.4.6 ~/solrCloud/zookeeper1
[root@localhost ~]# cp -r zookeeper-3.4.6 ~/solrCloud/zookeeper2
[root@localhost ~]# cp -r zookeeper-3.4.6 ~/solrCloud/zookeeper3
原始zookeeper文件结构
1.4 进入每个zookeeper目录,创建数据data目录,并在data目录中创建myid文件,内容为实例id,即如果为zookeeper1,则myid中内容为1,如果为zookeeper2,则myid内容为2
cd data/
echo 1>myid
cat myid
1.5 进入每个zookeeper目录,修改配置文件:conf/zoozoo_sample.cfg文件改名为zoo.cfg,并修改zoo.cfg中的配置,主要有数据目录地址的修改dataDir,服务端口号的修改clientPort,以及添加配置集群中所有节点的通讯的ip和端口
cd conf/
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
这里的集群节点配置端口虽然是128,但是后来已经更新为129
1.6 在solrCloud目录下编辑快速启动脚本start-zookeeper.sh
cd zookeeper1/bin
./zkServer.sh start
cd ../../
cd zookeeper2/bin
./zkServer.sh start
cd ../../
cd zookeeper3/bin
./zkServer.sh start
cd ../../
1.7 给快速启动脚本添加执行权限,仅授权与当前用户
chmod u+x start-zookeeper.sh
1.8 执行脚本,查看执行结果
./start-zookeeper.sh
Using config: /root/solrCloud/zookeeper1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /root/solrCloud/zookeeper2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /root/solrCloud/zookeeper3/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
1.9 进入节点目录查看节点状态,可以看到有了一个leader和两个follower
2 搭建solr集群
2.1 在solrCloud目录下创建4个tomcat实例[每个tomcat带有一个solr服务工程],并修改各自对应的端口,如第一个修改8005为8105,8080为8180,8009改为8109,以此类推,第二个tomcat,第三个tomcat,第四个tomcat端口第二位依次加1
2.2 为每个tomcat中的solr服务配置对应的solrhome,将单机版的solrhome配置文件夹直接拷贝四份,并修改每一个的solrhome下的solr.xml,单机版中无需配置此配置文件,但是集群版需要修改。文件结构如下
[root@localhost solrhome1]# ll
total 24
drwxr-xr-x. 2 root root 4096 Mar 11 20:14 bin
drwxr-xr-x. 4 root root 4096 Mar 11 20:14 collection1
drwxr-xr-x. 4 root root 4096 Mar 11 20:14 collection2
-rw-r--r--. 1 root root 2473 Mar 11 20:14 README.txt
-rw-r--r--. 1 root