solr安装(集群版)
工具:zookeeper
什么时候搭建集群?
当我们搜索系统访问量过大的时候,solr索引量过大的时候我们就需要搭建solr集群。
怎么搭建集群?
在搭建集群之前,我们需要明白几个名词
Collection:Collection在solr集群中是一个逻辑上完整的索引结构,它常常被划分为一个或多个分片(Shard),他们使用相同的配置信息。例如对商品信息搜索,可以创建一个collection,collection=shard1+shard2+...+shardX
Shard:每个Shard被划成一个或多个replication,通过选举确定那个是leader.
Core:Core是solr中一个独立的运行单位,提供索引,搜索服务。一个shard需要由一个Core或多个Core组成。
Master-Slave:Master-Slave一个主从结构,master为主节点,salve是从节点,为了达到高可用,我们在同一个Shard下搭建一个master节点和salver节点,当master节点挂了,salver节点扶正。
zookeeper:zookeepr在这里,我们用它作为集群的管理工具它是集群的入口,它集中管理配置文件,实现了集群的负载均衡,和容错。
下面我们来看下我们要搭建的solr的架构图
zookeeper是集群的入口,每个collection分成两片,每片有两个节点,一个主一个从。
因为zookeeper有一个投票选举,为了保证可以超过半数,所以需要三个
solr集群分成两片,每片有一主一备共四片,所以需要四个
我们开始搭建集群
我们的集群架构中需要三个zookeeper,四个solr,由于我的电脑里装运行不起来这么多的虚拟机,所以我用一台虚拟机来搭建一个伪分布式,也就是在一台虚拟机上用不同的区分不同的应用。
另外,zookeeper和solr都是java开发的,java服务比较耗内存所以虚拟机内存建议大点。
搭建solr集群的搭建共两大步:1.zookeeper集群搭建,2.solr集群搭建
搭建zookeeper集群
zookeeper集群中
1.新建一个目录存放集群
zookeeper集群中三个节点的搭建是一样的,所以我只演示一个节点的搭建,另两个省略。
命令:mkdir solr-cloud
2.把zookeeper上传到solr-cloud里去
我是用的是xftp5
3.解压zookeeper
命令:tar zxf zookeeper-3.4.6.tar.gz
4.复制三份解压后的zookeeper-3.4.6到zookeeper01中
命令:cp -r zookeeper-3.4.6 /root/art/solr-cloud/zookeeper01
5.进入zookeeper01中创建一个data目录
命令:mkdir data
6.在data里创建一个myid文件
命令:touch myid
查看一下改没改成功
命令:cat myid
7.把conf/zoo_sample.cfg改名成zoo.cfg
命令:mv zoo_sample.cfg zoo_sample.cfg
8.修改zoo.cfg文件,把data目录修改成我们创建的data目录
命令:vim zoo.cfg
这样我们就完成了一个zookeeper的配置
剩下两个zookeeper和这个一样,此处省略
solr集群搭建
三个zookeeper搭建完成,我们需要搭建四个solr
solr集群的四个节点搭建也是一样的,同样我只演示一个节点的搭建。
1.把tomcat复制四份
cp -r pache-tomcat-7.0.47 /root/art/solr-cloud/tomcat01
2.把tomcat每一个的端口号改一下
命令:vim tomcat01/conf/server.xml
在这里只给出一个tomcat修改的图,另三个省略
3.把solr的web工程部署到这四个tomcat中
也就是把配置好的单机版的赋值到tomcat的webapps中
单机版配置可以参考这篇博客https://blog.****.net/weixin_38497513/article/details/81410339
命令:cp -r /root/art/solr/apache-tomcat-7.0.47/webapps/solr tomcat04/webapps/
5.修改每一份solrhome的solr.xml
命令:vim solr.xml
这里只展示一份的修改,其他四个和这个一样
6.修改每个solr工程的web.xml,建立起每个solr和solrhome的关系
命令:vim tomcat01/webapps/solr/WEB-INF/web.xml
7.接着我们建立tomcat和zookeeper之间的关系
8.让zookeeper管理配置文件
使用一个工具,把随便一个solehome中的conf文件上传到zookeeper中就行,我选择了solrhome01,工具在solr/example/scripts/zkcli.sh
执行上传文件命令:./zkcli.sh -zkhost 192.168.2.100:2181,192.168.2.100:2182,192.168.2.100:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf/ -confname myconf
查看是否上传成功
先使用zookeeper的客户端zkCli.sh连接zookeeper
他在zookeeper01/bin/zkCli.sh
开始连接
连接的时候只要连接任意一个zookeeper节点就行,不是必须连leader
连接非当前节点
查看文件是否上传成功
9.启动tomcat
给tomcat写个批处理
命令:vim start-tomcat.sh
在文件中遍历四个tomcat的启动命令
给批处理文件改权限
命令:chmod +x start-tomcat.sh
启动tomcat
命令:./start-tomcat.sh
查看日志
10.访问solr
192.168.2.100:8182/solr
我们的solr的集群就搭建完成了,这个是一个主三个从,把collection1分成了一片,不是我想要的集群
如果只想要一个分片的就不用看了
下面我演示一下创建一个collection,分成两片,两主,两从
创建collection
我们需要向solr发起一个请求
http://192.168.2.100:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
顺便也说一下删除collection吧
删除collection
http://192.168.2.100:8180/solr/admin/collections?action=DELETE&name=collection1