一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试

 导言:用zookeeper集群来管理solr集群,即通过zookeeper的访问来间接访问solr;zookeeper决定来调用哪台solr服务器,为了使zookeeper实现高可用,故也搭建成集群;因为zookeeper使用投票机制,判断是否宕机需其他服务器投票决定,超过半数视为宕机,所以搭建集群的个数最好为奇数个;zookeeper和solr集群中,一台为主服务器,其他为备份服务器,当主服务器挂掉后,备份服务器可升级为主服务器;一个Collection可分为n片,solr服务器均为相应n片中对应片的备份

注:本步骤如下图所示模式的集群,并且是在一台虚拟机上进行模拟。

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第1张图片


一、先参考博客一台linux虚拟机模拟搭建zookeeper集群及可能遇到的问题解决搭建zookeeper集群

二、solr集群搭建

1、参考博客linux环境下搜索引擎Solr4.10(索引库)基础与安装安装一个solr和tomcat,安装路径和zookeeper集群同一个目录,即:/myfile/programfiles/solr_cloud。注意根据自己路径修改相关的路径配置。

2、同目录下再复制三个solr和安装solr.war的tomcat

如图所示:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第2张图片

3、修改tomcat的端口号

     修改tomcat01/conf/server.xml文件

[root@linhaijing solr_cloud]# vim tomcat01/conf/server.xml

     在只读模式下输入/port,搜索port:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第3张图片

将搜索到的3个port分别改为:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第4张图片

 接下来修改tomcat02/conf/server.xml, tomcat03/conf/server.xml, tomcat04/conf/server.xml文件的端口号,为8205,8280,8209;8305,8380,8309;8405,8480,8409。

4、修改solr01/example/solr/solr.xml文件,添加对应tomcat所在ip和端口号

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第5张图片

同理,修改solr02/example/solr/solr.xml,solr03/example/solr/solr.xml,solr04/example/solr/solr.xml的ip和端口号,端口号分别为,8280,8380,8480。

5、修改tomcat下solr工程的solr_home

由于tomcat01在搭建时已经配好,现修改tomcat02, tomcat03, tomcat04的solr_home

[root@linhaijing solr]# vim /myfile/programfiles/solr_cloud/tomcat02/webapps/solr/WEB-INF/web.xml 

如下图:

同理,修改 tomcat03, tomcat04的solr_home。

6、配置zookeeper和solr工程的关联关系

编辑/myfile/programfiles/solr_cloud/tomcat01/bin/catalina.sh文件

[root@linhaijing solr]# vim /myfile/programfiles/solr_cloud/tomcat01/bin/catalina.sh

在最上面添加如下这句话,即安装的zookeeper的ip和端口号:

JAVA_OPTS="-DzkHost=192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183"

如图:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第6张图片

同理,修改tomcat02/bin/catalina.sh ,tomcat03/bin/catalina.sh ,tomcat04/bin/catalina.sh ,都加上上面这句话。

7、上传solrhome的配置文件到zookeeper中统一管理

进入:/myfile/programfiles/solr_cloud/solr01/example/scripts/cloud-scripts/目录下,使用zkcli.sh命令上传

执行命令:

[root@linhaijing cloud-scripts]# ./zkcli.sh -zkhost 192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183 -cmd upconfig -confdir /myfile/programfiles/solr_cloud/solr01/example/solr/collection1/conf/ -confname myconf

任意选择上传一个solrhome下的conf文件到zookeeper即可。

8、查看上传到zookeeper是否成功

进入目录:/myfile/programfiles/solr_cloud/zookeeper01/bin/

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第7张图片

 9、启动zookeeper

进入:/myfile/programfiles/solr_cloud/zookeeper01/bin目录下,执行如下命令启动zookeeper

默认启动2181端口执行如下命令:

[root@linhaijing bin]# ./zkCli.sh 

 如果要启动其他端口,执行如下命令:

[root@linhaijing bin]# ./zkCli.sh -server 192.168.1.130:2181

启动结果如下:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第8张图片

 退出:quit

10、查看配置文件是否上传成功

第9步完成后未退出的情况下执行如下1,2,3步,即可查看上传的配置文件。所有zookeeper都共用这一份配置文件。

 11、启动tomcat,开启solr服务

输入quit,退出zookeeper,进入/myfile/programfiles/solr_cloud目录,执行如下命令新建并编辑启动tomcat的批处理脚本文件start-tomcat.sh

注意:启动tomcat(solr)集群前确保zookeeper集群已启动。

[root@linhaijing solr_cloud]# vim start-tomcat.sh

输入一下内容:

/myfile/programfiles/solr_cloud/tomcat01/bin/startup.sh
/myfile/programfiles/solr_cloud/tomcat02/bin/startup.sh
/myfile/programfiles/solr_cloud/tomcat03/bin/startup.sh
/myfile/programfiles/solr_cloud/tomcat04/bin/startup.sh

保存退出后,执行如下命令赋予执行权限:

[root@linhaijing solr_cloud]# chmod +x start-tomcat.sh 

 如图所示:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第9张图片

12、 用批处理文件启动tomcat,在/myfile/programfiles/solr_cloud目录下执行如下命令:

[root@linhaijing solr_cloud]# ./start-tomcat.sh

13、浏览器访问:

发现8081端口报错:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第10张图片

 8082、8083、8084端口访问没问题:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第11张图片

 查找原因发现:重新启动机器开启服务访问就正常了。

 14、浏览器查看集群结构

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第12张图片

15、分片

浏览器执行如下命令:

注:numShards=2:一个collection2分为2个分片节点,replicationFactor=2:1个分片节点2个solr备份节点(可参考本文开始的架构图)

http://192.168.25.130:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

 结果:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第13张图片

 查看cloud节点情况:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第14张图片

 删除collection1,浏览器执行如下命令:

http://192.168.25.130:8180/solr/admin/collections?action=DELETE&name=collection1

 结果显示:

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第15张图片

 查看cloud节点情况,即搭建成功了本章开头所示图的模式集群。

一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第16张图片

16、对上传到zookeeper中的文件进行修改和删除操作 

请参考博文: 对solr集群上传到zookeeper集群中的collection文件进行修改和删除操作 (更新solrcloud+zookeeper的schema.xml配置文件)


三、利用Java客户端进行集群测试

注意:要保证添加域对应的索引在zookeeper集群管理的schema.xml文件中已存在,如果没有请参照上一步进行配置;项目中要引入solrJ的jar包(可参考博客Java连接单机版solr测试代码之solrJ的运用第2步进入jar包);

测试代码:

  //新增数据
    @Test
    public void testSolrCloud()throws Exception{
        //新建一个solr集群服务器对象
        CloudSolrServer cloudSolrServer = new CloudSolrServer("192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183");
        //设置默认的collection
        cloudSolrServer.setDefaultCollection("collection2");
        //创建一个文档对象
        SolrInputDocument document = new SolrInputDocument();
        document.setField("id",10000001);
        document.setField("item_title","你是我的小宝贝");
        document.setField("item_price",9999999);
        //添加数据到索引库
        cloudSolrServer.add(document);
        //服务器提交数据
        cloudSolrServer.commit();
    }

执行结果:

 一台虚拟机模拟zookeeper集群管理solr集群搭建步骤(伪分布式zookeeper管理solr集群)及solrJ连接测试_第17张图片


 

集群搭建命令总结:

1、tomcat的catalinda.sh中的配置:
JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"

2、上传配置文件至zookeeper的命令:
./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf/ -confname myconf

3、连接zookeeper的命令:
./zkCli.sh -server 192.168.25.154:2182

4、SolrCloud创建Collection的命令
http://192.168.25.154:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

5、SolrCloud删除Collection的命令
http://192.168.25.154:8180/solr/admin/collections?action=DELETE&name=collection1

你可能感兴趣的:(solr,Mybatis)