【Solr】solr-4.10.3集群的搭建

前言

    SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。
    SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。

它有几个特色功能:

1)集中式的配置信息

2)自动容错

3)近实时搜索

4)查询时自动负载均衡

集群搭建

    跟之前分享的伪集群搭建一样,solr集群同样搭建在同一台服务器上,所以修改端口号的操作在真正的集群中可以忽略掉。

(1)将tomcat复制4份到同一文件夹(此为solr-cloud)下,分别命名为tomcat01/02/03/04

(2)将solr实例部署到各个tomcat中(之前写过的一版solr单机版搭建,直接将它复制到这四个tomcat的/webapps下即可)

(3)更改tomcat启动的端口号,在每个tomcat的conf目录下的server.xml里修改。每个tomcat需要改三个端口号,默认分别为:

<Server port = 8005

<Connector port = 8080

<Connector port = 8009

将其修改为不同端口号即可,本例使用的是8105/8205/8305/8405,8180/8280/8380/8480,8109/8209/8309/8409

(4)将之前安装的solrhome同样复制4份,放入该文件夹(slor-cloud)下,重命名为solrhome01/02/03/04,并配置每个tomcat下/webapps/solr-4.10.3/WEB-INF/web.xml,使其知道solrhome的位置,详细配置见博客——solr-4.10.3安装教程

(5)修改每个solrhome目录下的solr.xml

    改之前


    将host改为当前节点运行的ip地址。hostPort改为当前tomcat的端口号,其他几个solrhome同理修改


(6)之前介绍的zookeeper集群,直接将其复制到文件夹(solr-cloud)下

(7)solr和zookeeper之间建立关系,修改每个tomcat/bin目录下catalina.sh文件,更改JAVA_OPTS(java运行时参数),在JAVA_OPTS使用之前将此参数加入:

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

其中ip地址为每个zookeeper实例运行的ip地址,端口号为zookeeper端口号


(8)zookeeper管理solrhome的配置文件,将任一solrhome下/collection1/conf文件夹上传到zookeeper,使用zookeeper客户端上传,这个客户端在solr源码下,/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh,使用命令:

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

    其中,-zkhost指定zookeeper地址:端口,-cmd upconfig是使用上传命令,-confdir指定待上传文件的路径,-confname指定上传文件所在目录

(9)启动全部tomcat

(10)访问192.168.25.163:8180/solr


(11)创建新的collection进行分片处理,使用命令:

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

执行完成后,可以看到如下页面


    现在,再次刷新首页,点击Cloud


    会发现有两个collection,第一个有一片,第二个有两片,一主一备

(12)删除无用collection,使用命令:

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

    执行完成后,如下图


    刷新首页,点击Cloud


总结

    相比之下,solr集群的搭建还是比较麻烦的,不过这个solr使用的版本相对落后,新版本的solr就相对容易多了。