Solr集群

Solr的架构

Solr集群_第1张图片

SolrCloud需要用到solr+zookeeper

Zookeeper

1、集群管理
主从的管理、负载均衡、高可用的管理。集群的入口。Zookeeper必须是集群才能保证高可用。Zookeeper有选举和投票的机制。集群中至少应该有三个节点。
2、配置文件的集中管理
搭建solr集群时,需要把Solr的配置文件上传zookeeper,让zookeeper统一管理。每个节点都到zookeeper上取配置文件。

集群搭建步骤

第一部分:Zookeeper集群搭建
第一步:需要把zookeeper的安装包上传到服务器。
第二步:把zookeeper解压。
第三步:把zookeeper向/usr/local/solr-cloud目录下复制三份。
第三步:配置zookeeper。
1、在zookeeper01目录下创建一个data文件夹。
2、在data目录下创建一个myid的文件
3、Myid的内容为1(02对应“2”,03对应“3”)
4、Zookeeper02、03以此类推。
5、进入conf文件,把zoo_sample.cfg文件改名为zoo.cfg
6、修改zoo.cfg,把dataDir=属性指定为刚创建的data文件夹。
7、修改zoo.cfg,把clientPort指定为不冲突的端口号(01:2181、02:2182、03:2183)
8、在zoo.cfg中添加如下内容:
server.1=192.168.xx.xxx:2881:3881
server.2=192.168.xx.xxx:2882:3882
server.3=192.168.xx.xxx:2883:3883
Solr集群_第2张图片
第四步:启动zookeeper。
Zookeeper的目录下有一个bin目录。使用zkServer.sh启动zookeeper服务。
启动:./zkServer.sh start
关闭:./zkServer.sh stop
查看服务状态:./zkServer.sh status

第二部分:搭建solr集群
第一步:安装四个tomcat,修改其端口号不能冲突。8080~8083
第二步:向tomcat下部署solr。把单机版的solr工程复制到tomcat下即可。
第三步:为每个solr实例创建一solrhome。
第四步:为每个solr实例关联对应的solrhome。修改web.xml
第五步:修改每个solrhome下的solr.xml文件。修改host、hostPort两个属性。分别是对应的ip及端口号。
Solr集群_第3张图片
第六步:把配置文件上传到zookeeper。需要使用
/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh命令上传配置文件。
把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper。(只需上传一个solrhome的配置文件)
需要zookeeper集群已经启动。

./zkcli.sh -zkhost 192.168.xx.xxx:2181,192.168.xx.xxx:2182,192.168.xx.xxx:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

第七步:查看是否上传成功。
使用zookeeper的zkCli.sh命令。
第八步:告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加

JAVA_OPTS="-DzkHost
=192.168.xx.xxx:2181,192.168.xx.xxx:2182,192.168.xx.xxx:2183"

每个节点都需要添加。
第九步:启动每个solr实例。
Solr集群_第4张图片
第十步:集群分片。
将集群分为两片,每片两个副本。
http://192.168.xx.xxx:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

Solr集群_第5张图片
第十一步:删除不用collection1
http://192.168.xx.xxx:8080/solr/admin/collections?action=DELETE&name=collection1

SolrJ操作集群

public void testSolrCloud() throws Exception{
        CloudSolrServer solrServer = new CloudSolrServer("192.168.60.128:2181,192.168.60.128:2182,192.168.60.128:2183");
        //创建默认的collection
        solrServer.setDefaultCollection("collection2");
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", "123456");
        document.addField("item_title", "手机");
        solrServer.add(document);
        solrServer.commit();
    }

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