zh-hongda

搜索引擎-solrCloud搭建(win10)

Win10下基于zookeeper的solrCloud集群搭建

solr5.3.1

tomcat8.0.28

zookeeper-3.5.1-alpha

目录结构如下:

solrCloud
├─service01
├─service02
├─service03
├─solr-5.3.1
├─solrhome01
├─solrhome02
├─solrhome03
├─solrhome04
├─tomcat01
├─tomcat02
├─tomcat03
├─tomcat04
└─启动zookeeper和solr服务器

在一台服务器上部署3个zk,4个tomcat,由于是在同一台服务器上,zk和tomcat的端口不能重复,若是分布在不同的服务器上,这一步可以省略


zookeeper集群搭建

  1. 新建solrCloud\service01\zookeeper-3.4.14\conf\zoo.cfg,

  2. 再data目录新建myid文件,并写入zookeeper的id。

    #在`zoo_sample.cfg`文件的基础上对如下内容做修改
    #dataDir=/tmp/zookeeper
    dataDir=D:\\NLZ_HD\\solrCloud\\service03\\data
    dataLogDir=D:\\NLZ_HD\\solrCloud\\service03\\datalog
    # the port at which the clients will connect
    clientPort=2183
    
    #新增如下内容,其中第一个端口为通讯端口,第二个为投票选举端口
    server.1=localhost:2887:3887
    server.2=localhost:2888:3888
    server.3=localhost:2889:3889
    
  3. zookeeper配置完成,依次启动即可。

solr集群搭建

  1. 复制单机版的tomcat

  2. 编辑solrCloud\tomcat01\webapps\solr\WEB-INF\web.xml文件,找到env-entry节点,编辑为以下内容

    <env-entry>
        <env-entry-name>solr/home</env-entry-name>
        <env-entry-value>D:\NLZ_HD\solrCloud\solrhome01</env-entry-value>
        <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    
  3. 修改solrCloud\tomcat01\conf\server.xml中指定的tomcat运行端口

    <!--共修改三处,每个tomcat都需要做对应的修改-->
    <!--第1处-->
    <Server port="8105" shutdown="SHUTDOWN">
    
    <!--第2处-->
    <Connector port="8180" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    <!--第3处-->
    <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
    
  4. 将单机版solrhome下的文件拷贝至solrhome

  5. 修改solrCloud\solrhome01\solr.xml

    <!--将端口号修改为当前tomcat的运行端口-->
    <solrcloud>
        <str name="host">${host:}</str>
        <int name="hostPort">${jetty.port:8180}</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:15000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    </solrcloud>
    
  6. 新建配置文件目录(用于zk的集群配置管理),我是直接再solr_home中新建一个collection1文件夹,如下:

    ..\solrhome01\collection1(此文件夹只需要建一个,不需要再每个机器上建,他会通过zk分发到各个机器)

    将solr原包中../solr/server/solr/configsets/basic_configs/*拷贝到../solrhome01/collection1/下

  7. 修改tomcat的solrCloud\tomcat01\bin\catalina.bat文件

    <--其中一台添加如下信息-->
    set JAVA_OPTS=-Dsolr.solr.home=D:\NLZ_HD\solrCloud\solrhome01 -Dbootstrap_confdir=D:\NLZ_HD\solrCloud\solrhome01\collection1\conf -Dcollection.configName=myconf -DnumShards=3 -DzkHost=localhost:2181,localhost:2182,localhost:2183
    <--其他添加如下信息-->
    set JAVA_OPTS=-Dsolr.solr.home=D:\NLZ_HD\solrCloud\solrhome02 -DzkHost=localhost:2181,localhost:2182,localhost:2183
    
  8. solrCloud配置完成

solrCloud常用命令

  1. 依次启动zk和tomcat,开始启动zk的时候会报错,没关系,因为zk是2n+的机制,当你依次启动就好了。

  2. 访问http://localhost:8180/solr/

  3. 删除zookeeper的配置文件需要

    #连接zookeeper服务器
    zkCli.sh -server localhost:2181
    #使用rmr命令删除指定文件
    rmr /configs/collection1Conf
    
  4. 上传文件、配置;创建、reload、起别名、删除collection

    #使用solr原包中的solr-5.3.1\server\scripts\cloud-scripts下的zkcli.bat执行下述命令
    #上传一个文件
    zkcli.bat -zkhost 127.0.0.1:2181 -cmd putfile /configs/collectionxConf/data-config.xml D:\NLZ_HD\solrCloud\solrhome01\collection1\collectionxConf\data-config.xml
    
    #上传一组collection的配置
    zkcli.bat -zkhost 127.0.0.1:2181 -cmd upconfig -confname collectionxConf -confdir D:\NLZ_HD\solrCloud\solrhome01\collection1\collectionxConf
    
    #创建一个collection
    http://localhost:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=collectionxConf
    
    #删除一个collection
    http://localhost:8180/solr/admin/collections?action=DELETE&name=collection1
    http://localhost:8180/solr/admin/collections?action=DELETE&name=core2
    
    #为collection创建别名
    http://localhost:8180/solr/admin/collections?action=CREATEALIAS&name=collection1U2&collections=collection1,collection2
    
    #reload一个collection
    http://localhost:8180/solr/admin/collections?action=RELOAD&name=collection1
    
    #Link a collection to a configuration set
    zkcli.bat -zkhost 127.0.0.1:2181 \ -cmd linkconfig -collection core2 -confname new_config
    

参考:

实战搜索引擎Solr5集群和应用