Solr(二)solr集群搭建(伪集群),使用Zookeeper搭建SolrCloud

Solr7.x 使用教程 Solr集群搭建so easy!

Posted by Oumuv on November 28, 2018

环境要求

  • jdk1.8
  • tomcat8
  • solr7
  • zookeeper3
  • linux or mac

步骤

一、准备环境

jdk8安装:参考 Linux安装jdk8并配置环境变量

搭建Zookeeper集群:Zookeeper集群搭建(伪集群)

三个zookeeper的配置如下:

zookeeper1 zookeeper2 zookeeper3  
地址 127.0.0.1 127.0.0.1 127.0.0.1
端口 2181 2182 2183

tomcat集成Solr:参考Solr(一)基于tomcat的solr环境搭建

二、上面的步骤全部完成后开始搭建solr集群:

前提&约定

这里提前规划好,假设我们搭建solr集群有4台机器如下:

solr1 solr2 solr3 solr4  
tomcat tomcat1 tomcat2 tomcat3 tomcat4
端口 8081 8082 8083 8084

使用zookeeper作为同步组件,地址、端口等配置见上一步

  • 1、假设已经搭建好了一个基于tomcat的solr服务器的tomcat1,内部结构如下图,现在就对这个tomcat1进行相关配置的修改:

    • 1⃣️、修改tomcat1的conf/server.xml,三个端口需要修改,具体位置如下:

    • 2⃣️、修改tomcat1的bin/catalina.sh,加入zookeeper集群配置(zookeeper的地址和端口)

      1
      
        JAVA_OPTS="-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
      
    • 3⃣️、修改tomcat1中solrHome/solr.xml,配置对应tomcat的IP与端口

    • 4⃣️、修改tomcat1中webapps/solr/WEB-INF/web.xml,配置对应的solrHome位置

  • 2、配置其他的三个solr服务器,以tomcat1为模板复制出tomcat2、tomcat3、tomcat4

    • 1⃣️、复制出三个tomcat

      1
      2
      3
      
        cp -r tomcat1 tomcat2
        cp -r tomcat1 tomcat3
        cp -r tomcat1 tomcat4
      
    • 2⃣️、根据上一步对conf/server.xml、bin/catalina.sh、solrHome/solr.xml、webapps/solr/WEB-INF/web.xml进行修改,修改后的tomcat配置如下:

      / tomcat1 tomcat2 tomcat3 tomcat4
      server.xml三个端口配置 8105/8081/8109 8205/8082/8209 8305/8083/8309 8405/8084/8409
      solr.xml的ip与端口配置 (tomcat的访问地址) 127.0.0.1:8081 127.0.0.1:8082 127.0.0.1:8083 127.0.0.1:8084
      web.xml的solrHome位置 */tomcat1/solrHome */tomcat2/solrHome */tomcat3/solrHome */tomcat4/solrHome
    • 3⃣️、编写启动4个tomcat的脚本和停止4个tomcat的脚本

    启动脚本tomcat-startup.sh

    1
    2
    3
    4
    5
    6
    7
    8
    
          cd /Users/oumuv/solr/tomcat1
          bin/startup.sh
          cd /Users/oumuv/solr/tomcat2
          bin/startup.sh
          cd /Users/oumuv/solr/tomcat3
          bin/startup.sh
          cd /Users/oumuv/solr/tomcat4
          bin/startup.sh
    

    停止脚本tomcat-shutdown.sh

    1
    2
    3
    4
    5
    6
    7
    8
    
       	cd /Users/oumuv/solr/tomcat1
          bin/shutdown.sh
          cd /Users/oumuv/solr/tomcat2
          bin/shutdown.sh
          cd /Users/oumuv/solr/tomcat3
          bin/shutdown.sh
          cd /Users/oumuv/solr/tomcat4
          bin/shutdown.sh
    

    赋予执行权限

    1
    2
    
      	 chmod 755 tomcat-startup.sh
      	 chmod 755 tomcat-shutdown.sh
    
  • 3、使用zookeeper管理 solr core 配置 到了这一步solr的集群搭建已经基本完成了,现在我们要使用zookeeper来管理solr的core(核心配置),是4个solr的core同步

    • 打开solr原始目录(solr安装包解压后的目录),找到 /server/scripts/cloud-scripts/zkcli.sh,使用这个脚本来上传core配置到zookeeper,命令如下:
    1
    
      ./zkcli.sh -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -cmd upconfig -confdir /Users/oumuv/solr/tomcat1/solrHome/collectionA/conf -confname myconf
    

    解释一下这个脚本的意思:

    1
    
       三台zookeeper的通信ip及端口: -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
    
    1
    
       执行上传配置的命令: -cmd upconfig
    
    1
    
       需要上传的配置所在目录: -confdir /Users/oumuv/solr/tomcat1/solrHome/collectionA/conf
    
    1
    
       上传后的目录重命名为myconf: -confname myconf
    
    • 执行了上面的脚本后zookeeper集群中就会多出一个myconf的目录,这个目录就是我们上传的/Users/oumuv/solr/tomcat1/solrHome/collectionA/conf 目录,怎么检验呢?

      • 到其中一个zookeeper目录中执行 bin/zkCli.sh 命令
      • 再执行 ls /configs 命令查看是否存在刚刚上传的 myconf ,结果如下

三、启动、测试

看到如下页面(菜单中多了 cloud 一栏)

到此solr集群搭建完成