SolrCloud是solr提供的分布式搜索方案,当需要大规模,容错,分布式索引和检索能力的时候使用SolrCloud,它是基于solr和zookeeper的分布式搜索方案。
SolrCloud的实现思路是将索引进行分片(shard)拆分,每个分片由多台服务器共同完成,当一个索引和搜索请求过来时分别从不同的shard的服务器中操作索引,它是基于zookeeper来部署的,由于SolrCloud需要多台服务器组成,由zookeeper来进行协调管理。
下图是SolrCloud的原理图:
物理结构
三个solr实例(每个solr包含2个core,组成一个SolrCloud
逻辑结构
索引集合包含两个shard(shard1和shard2 ),每个shard分别有三个core组成,其中一个leader,两个replication,leader由zookeeper选举产生,zookeeper控制每个shard上三个core的索引数据一致,解决高可用问题。
collection
collection在SolrCloud集群中是一个逻辑意义完整的索引结构,经常被分为多个shard(分片).
shard
collection的逻辑分片,每个shard被化成一个或者多个replication,通过选举确定哪个是leader
现在我们部署三台zookeeper服务器,三台solr服务器
zookeeper:192.168.10.85,192.168.10.83,192.168.10.82 端口都是30032
solr:192.168.10.85,192.168.10.83,192.168.10.82 端口都是15001
部署zookeeper集群
1 登陆 192.168.10.85服务器, 解压zookeeper压缩包
2 进入解压后的zookeeper文件,创建一个data文件夹(此文件夹是存放zookeeper的数据的),在该文件夹下面创建myid文件,填写内容1,保存myid文件。
3 进入解压以后的zookeeper的conf文件夹,找到zoo_sample.cfg,修改文件名为zoo.cfg,修改里面的配置信息
主要修改有以下几个配置
1 dataDir: zookeeper存数据的目录,就是刚才创建的data目录
2 clientPort:zookeeper对外提供服务端口,设置zookeeper对外提供端口是30032
3 server.x x是第二步myid里面填写的内容,表示zookeeper 集群所有节点信息 server.1 表示是第一个zookeeper节点。
2788和3788是投票和选举的端口号,是节点之间通讯的端口。
4 启动zookeeper ,会发现有错误,这是因为其他两台zookeeper没有启动导致的,另外两台启动了就不会报错了
5 登陆 192.168.10.83服务器,创建data目录,在该文件夹下面创建myid文件,填写内容2,保存myid文件。修改配置zoo.cfg配置文件,跟上面的是一样。
6 登陆 192.168.10.82服务器,创建data目录,在该文件夹下面创建myid文件,填写内容3,保存myid文件。修改配置zoo.cfg配置文件,跟上面的是一样。
7当三台zookeeper服务器都启动了, 以前的错误已经没有了。
2 部署solr
登陆192.168.10.85服务器,部署solr,solr在linux如何部署,前面已有文章讲述。部署好三台solr,下面就是如何来整合solr和zookeeper。
3 整合zookeeper和solr,solrcloud的搭建。
1 修改solr里面的solr.xml配置文件
hostPort :修改为为这台solr服务器的端口号
zkHost :需要连接的zookeeper服务器的ip和端口号,以都好分隔。
2 修改tomcat的bin下面catalina.sh配置文件
DzkHost是用来指定zookeeper服务器的ip和端口
3 依次启动tomcat, 在浏览器输入solr的地址,如果发现以下界面,就说明部署solrcloud成功。