Linux系列之solr集群版环境搭建(六)
Linux系列之solr集群版环境搭建(六)SolrCloud简介SolrCloud是solr提供的分布式搜索方案,当需要大规模容错、分布式索引和检索能力时使用。当一个系统的索引数量少时,不需要使用SolrCloud;当索引量很大,搜索请求并发很高时,需要使用SolrCloud。SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:1) 集中式的配置信息2) 自动容错3) 近实时搜索4) 查询时自动负载均衡Zookeeper简介顾名思义zookeeper就是动物园管理员,他是用来管理hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员,Apache Hbase和Apache Solr的分布式集群都用到了zookeeper。Zookeeper是一个分布式的、开源的程序协调服务,是hadoop项目下的一个子项目。zookeeper:集群管理工具,集群入口。集群管理主从的管理、负载均衡、高可用的管理。集群的入口。Zookeeper必须是集群才能保证高可用。Zookeeper有选举和投票的机制。集群中至少应该有三个节点。配置文件的集中管理搭建solr集群时,需要把Solr的配置文件上传zookeeper,让zookeeper统一管理。每个节点都到zookeeper上取配置文件。分布式锁SolrCloud结构SolrCloud为了降低单击的处理压力,需要由多态服务器共同来完成索引的搜索任务。实现的思路是将索引数据进行Shard(分片)拆分,每个分片由多态服务器共同完成,当一个索引或搜索请求过来时,会分别从不同的shard的服务器中操作索引。SolrCloud需要Solr基于Zookeeper部署,Zookeeper是一个集群管理软件,由于SolrCloud需要由多台服务器组成,由zookeeper来进行协调管理。
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037101.png
搭建步骤Zookeeper集群搭建第一步:需要把zookeeper-3.4.6.tar.gz的安装包上传到服务器。第二步:把zookeeper解压:tar –zxvfzookeeper-3.4.6.tar.gz第三步:把zookeeper向/usr/local/solr-cloud目录下复制三份。
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037102.png
第三步:配置zookeeper。1.在zookeeper01目录下创建一个data文件夹。2.在data目录下创建一个myid的文件3.myid的内容为1(02对应“2”,03对应“3”)
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037103.png
在data文件夹下建立一个myid文件,并在myid文件中,写入内容1
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037104.png
4.zookeeper02、03以此类推。5.进入conf文件,把zoo_sample.cfg文件改名为zoo.cfg;或者复制zoo_sample.cfg一份,并命名为zoo.cfg
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037105.png
6.修改zoo.cfg,把dataDir=属性指定为刚创建的data文件夹。(本demo路径:/usr/local/solr-cloud/zookeeper01/data/)7.修改zoo.cfg,把clientPort指定为不冲突的端口号(01:2181、02:2182、03:2183)(2181:这个端口是客户端连接端口8.在zoo.cfg中添加如下内容:server.1=192.168.33.10:2881:3881server.2=192.168.33.10:2882:3882server.3=192.168.33.10:2883:3883(这个端口是服务器连接端口,不能重复)
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037106.jpg
第四步:启动zookeeper。Zookeeper的目录下有一个bin目录。使用zkServer.sh启动zookeeper服务。启动命令:./zkServer.sh start另一种启动zookeeper的方式:./zkServer.sh start-foreground //这种启动方式,能够查看zookeeper的日志关闭命令:./zkServer.sh stop查看服务状态:./zkServer.sh status
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037107.png
Solr集群搭建第一步:安装四个tomcat,修改其端口号不能冲突。8080~8083
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037108.png
端口号分别修改为:8005-8006-8007-80088080-8081-8082-80838009-8010-8011-8012
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037109.png
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037110.png
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037111.png
第二步:向tomcat下部署solr。把单机版的solr工程复制到tomcat下即可。(将单机版的solr/tomcat/webapps下的solr复制到solr-cloud/tomcat01/webapps/下面)第三步:为每个solr实例创建一solrhome。将单机版的solr/下的solrhome复制到solr-cloud/目录下,分别命名为solrhome01-solrhome04第四步:为每个solr实例关联对应的solrhome。修改web.xml(为tomcat关联solrhome)修改solr-cloud/tomcat01/webapps/solr/WEB-INF/web.xml文件
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037112.png
第五步:修改每个solrhome下的solr.xml文件。修改host、hostPort两个属性。分别是对应的ip及端口号。host:当前实例运行的ip地址port:当前实例运行的端口号,是当前tomcat的端口号
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037113.png
第六步:把配置文件上传到zookeeper。需要使用/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh命令上传配置文件。把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper。需要zookeeper集群已经启动。(上传任意一个)./zkcli.sh -zkhost 192.168.33.10:2181,192.168.33.10:2182,192.168.33.10:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf第七步:查看是否上传成功。使用zookeeper的zkcli.sh命令。zkcli.sh存在位置:/usr/local/solr-cloud/zookeeper01/bin(注:zookeeper只要连接上任意节点,就行了)第八步:告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加 (tomcat/bin/catalina.sh)JAVA_OPTS="-DzkHost=192.168.33.10:2181,192.168.33.10:2182,192.168.33.10:2183"
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091037114.png
在使用JAVA_OPTS之前添加这句话:每个节点都需要添加。第九步:启动每个solr实例。使用脚本,启动所有solr实例vi start-all.sh
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038115.png
查看启动日志 :tail -f tomcat01/logs/catalina.out查看solrCloud搭建是否成功,使用浏览器查看solr,点击Cloud可以看到solr集群
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038116.png
第十步:集群分片。将集群分为两片,每片两个副本。(numShards:分成两片;replicationFactor:两个副本)在浏览器中运行下面的链接:http://192.168.33.10:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2看到success,就说明成功了。
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038117.jpg
拆分结果:
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038118.jpg
第十一步:删除不用collection1在浏览器中打开下面的链接:http://192.168.33.10:8080/solr/admin/collections?action=DELETE&name=collection1看到success,就说明成功了。
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038119.jpg
删除之后的效果:
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038120.jpg
问题解决问题一:查看zookeeper服务状态时,报错:Error contacting service. It is probably not running.启动没有问题,但是查看solr集群状态时,总是报错。solr明明显示已经起来了,但是查看solr状态时,却提示没有启动:
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038121.jpg
解决办法:可能是真的没有启动,虽然显示成功,但是成功之后,就马上关闭了。可以关闭之后,再重新启动。在网上搜索到的解决办法:打开zkServer.sh找到status,即找到下面的这句话:STAT='echo stat | nc localhost$(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode'在nc与localhost之间加上 -q 1(是数字1而不是字母l),如果已存在,则去掉。如果没有这句话,则加上。问题二:用日志方式启动zookeeper时,报错:Unexpected exception, exiting abnormallyjava.net.BindException: Address already in use原因:端口被占用解决方法:1、如果使用ps aux|grep 2181,查看不到端口被占用。2、使用lsof -i:2181命令查看端口占用情况3、若执行lsof -i:2181命令提示:-bash: lsof: command not found4、执行yum install lsof命令5、再查看端口占用情况,停调被占用的端口,即可。问题三:启动solr集群后,浏览器打开solr链接,报错:
http://www.2cto.com/uploadfile/Collfiles/20160831/20160831091038122.png
原因:正如问题一一样,显示zookeeper已经启动成功了,但实际,没有真正启动成功。解决办法:重新启动
http://www.2cto.com/os/201608/543462.html
Linux系列之solr集群版环境搭建(六)
页:
[1]