Solr搜索引擎集群搭建(三)
一、引言
昨天把zookeeper的集群环境搭建好了,那么今天就需要派上用场了。那zookeeper怎么用呢? 大家都知道每一个solr都有相对应的配置文件,那么solr集群,当然是用同一个套配置文件,总不能一个solr用一套配置文件吧,这岂不是乱套了。这个时候就需要把配置文件交给zookeeper进行管理,由他来管理和控制solr。
二、准备工作
既然是solr集群,咱们先得搭建好solr的单机版,本次教程配置4个solr来搭建集群环境。
步骤一:搭建solr单机版环境,请参考小编这篇文章:在linux系统中安装solr搜索引擎。
步骤二:这里是需要搭建4个solr单机版,也就是需要四个tomcat来启动,因为真正的集群环境,是在不同的服务器上来搭建的,小编为了方便写博客,所以搭建在一台服务器上,请注意端口号不要冲突。
步骤三:为了方便管理,solr集群小编都放在了solrcloud文件夹下。在这里小编搭建zookeeper集群和solr集群是分别搭建在两台不同的服务器上了,之前zookeeper集群搭建也是放在了solrcloud文件夹下了,如果小伙伴用的一台服务器,可以都放在一个目录下。
步骤四:搭建zookeeper集群环境,请参考小编这篇文章:linux系统搭建zookeeper集群
步骤五:搭建了solr4个单机版后,启动4个tomcat,通过浏览器访问,需要核实搭建是否存在问题,每一个solr单机版都需要能通过浏览器访问到,则表示solr是没有问题的
步骤六:下图是小编搭建solr集群文件目录的截图,每一个solr对应一个solrhome配置文件,在搭建solr单机版中有配置solrhome的配置,请注意tomcat中的端口号不要冲突。
步骤七 :可以写个shell脚本,来快速启动、关闭4个tomcat。如有不会者,可评论,小编会及时回复。
三、使用zookeeper配置solr环境
步骤一:既然solr集群的配置文件由zookeeper管理,首先把solr配置文件上传到zookeeper。在我们solr解压后的目录下,有一个客户端,通过客户端把配置文件上传到zookeeper上。
执行如下命令,以下是三个zookeeper的ip+端口号、配置上传文件的位置、上传到zookeeper后的文件夹名
进入客户端位置:/solr-4.10.3/example/scripts/cloud-scripts,客户端文件名:zkcli.sh
./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
步骤二:检查solr配置文件是否上传成功,进入任意zookeeper目录下,在bin目录下有个zkCli.sh文件,进入bin目录下,执行如下命令
./zkCli.sh //进入zookeeper客户端
ls / //查看目录下文件夹,正常来说应该看到两个文件夹:[configs, zookeeper]
ls /configs/myconf //查看刚刚上传上来的文件,如果没有myconf文件夹,则代表上传失败了,核实下是否能访问到zookeeper,如果有对应的solr配置文件,那就成了。
步骤三:回到配置solr目录下,在每一个solrhome目录下修改solr.xml文件 ,找到solrcloud。solrhome一共有四个。
配置host:表示当前运行solr服务的ip地址,配置hostPort:表示当前运行solr服务的端口号,也就是tomcat对应的端口:8080、8081、8082、8083,需要和当前运行solr的tomcat端口号一致,强调!!!!
步骤四:修改每一个运行solr服务的tomcat,找到tomcat/bin目录下的catalina.sh文件,进行修改,找到JAVA_OPTS写入如下配置。配置对应每一个zookeeper的ip地址以及端口号,因为小编搭建了3个zookeeper的集群,所以写了三个。
JAVA_OPTS="-DzkHost=111.231.110.51:2181,111.231.110.51:2182,111.231.110.51:2183"
步骤五:重启tomcat,能正常访问solr后台,则表示配置都是ok的,一切没什么问题。如果成功,则在浏览器访问如下地址,如果失败,则可以查看tomcat中的日志文件,看有什么错误信息
http://ip:端口/solr/admin/collections?action=DELETE&name=collection1 #删除之前的collection1
http://ip+:端口/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2 # 给collection进行分片,由两个分片组成一个solr索引库,每一个分片都是一主一备份。
### 访问以上路径,页面返回结果有包含success则表示成功,否则返回异常信息!
步骤六:最后solr集群如下图,黑点leader代表的是分片主节点,圆形Active代表的是从节点,并且是正常运行的。
左侧Cloud——Graph中查看
四、最后
如果是在一台服务器上来部署solr集群,千万、千万、千万,每一个tomcat的端口号不能重复,每一个部署在tomcat中的solr服务对应的solrhome中的端口号,千万、千万、千万不要弄混淆了,也就是步骤三,千万、千万、千万要仔细。
如果说是采用不同的服务器来部署,就不存在端口号冲突的问题,每一个服务器ip地址都不同。
说实话,这个看起来不复杂,但是因为自己粗心而导致的错误,很难找。最后效果图应该是每一个solr应该都是正常工作的,如果有出现Recovering这个,则表示配置还是存在问题的。