zoukankan      html  css  js  c++  java
  • centos solr 集群搭建

    一、什么是 SolrCloud

      SolrCloud(solr )是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud 的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。

      SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,它的主要思想是使用 Zookeeper 作为集群的配置信息中心。

    二、环境准备

    1、java 1.7  

      链接:https://pan.baidu.com/s/1ti6j9jD-RwUN5xl3bc3ZDw 密码:oc9a

    2、tomcat 7

      链接:https://pan.baidu.com/s/1-TK3AAVtJCRWyhb86i7cRw 密码:zro9

    3、zookeeper 3

      链接:https://pan.baidu.com/s/1BHV6vHcHIuj7lalvvR7w_g 密码:csvk

    4、solr 4

      链接:https://pan.baidu.com/s/1-fBmxm64y19WUtPSc1Lxdw 密码:wddz

    三、搭建 Zookeeper 集群( 在一台机器上模拟搭建 3 台 Zookeeper 的集群 )

    1、解压 zookeeper

    [root@localhost 桌面]# tar -zxvf zookeeper-3.4.6.tar.gz

    2、在 /usr/local 下创建一个 solr-cloud 目录

    [root@localhost 桌面]# mkdir /usr/local/solr-cloud

    3、复制 3 份 zookeeper 到该目录下

    [root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01
    [root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02
    [root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03

    4、在 3 份 zookeeper 中分别创建 data 目录

    [root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper01/data
    [root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper02/data
    [root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper03/data

    5、在每个 data 目录下创建一个 myid 文件,文件名就叫做 myid

    [root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper01/data/myid
    [root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper02/data/myid
    [root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper03/data/myid

    6、在 3 个 myid 文件中分别写入1、2、3。( 内容就是每个实例的id )

    7、修改配置文件

    (1)复制 zoo_sample.cfg 文件并且重命名为 zoo.cfg

    [root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper01/conf/zoo.cfg
    [root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper02/conf/zoo.cfg
    [root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper03/conf/zoo.cfg

    (2)分别修改 3 份 zookeeper 的 zoo.cfg 中的 dataDir

    dataDir = /usr/local/solr-cloud/zookeeper01/data
    dataDir = /usr/local/solr-cloud/zookeeper02/data
    dataDir = /usr/local/solr-cloud/zookeeper03/data

    (3)分别修改 3 份 zookeeper 的 zoo.cfg 中的 clientPort。( 因为是在一台服务器上模拟的,所以需要改端口。如果是在多台服务器做集群,就不需要改这个属性了 )

    clientPort=2181
    clientPort=2182
    clientPort=2183

     (4)配置节点。在每个 zoo.cfg 文件末尾加上下面内容

    server.1=192.168.25.129:2881:3881
    server.2=192.168.25.129:2882:3882
    server.3=192.168.25.129:2883:3883
    解析:
    server.1:就是在 myid 里面写的 id
    192.168.25.129:节点所在的 ip 地址
    2881:节点之间进行通行的端口号
    3881:节点之间进行投票的端口号

    8、启动 3 个 节点

    (1)写一个批处理 start-all.sh ,批处理内容如下

    cd zookeeper01/bin
    ./zkServer.sh start
    cd ../../
    cd zookeeper02/bin
    ./zkServer.sh start
    cd ../../
    cd zookeeper03/bin
    ./zkServer.sh start
    cd ../../

    (2)修改批处理文件权限,让文件变为可执行的状态

    [root@localhost solr-cloud]# chmod 744 start-all.sh

    (3)执行批处理,启动 3 个节点

    [root@localhost solr-cloud]# ./start-all.sh

    (4)查看每个节点的状态( 其中有两个 follower 一个 leader )

    [root@localhost solr-cloud]# zookeeper01/bin/zkServer.sh status
    [root@localhost solr-cloud]# zookeeper02/bin/zkServer.sh status
    [root@localhost solr-cloud]# zookeeper03/bin/zkServer.sh status

    9、zookeeper 集群搭建完毕

    四、搭建 solr 集群( 在一台机器上模拟搭建 4 台 solr 集群 )

    1、解压 tomcat

    [root@localhost 桌面]# tar -zxvf apache-tomcat-7.0.47.tar.gz

    2、复制 4 份 tomcat 到 solr-cloud 目录下

    [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat01
    [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat02
    [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat03
    [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat04

    3、复制 solr 工程到 4 份 tomcat 中

    (1)solr 工程下载

      链接:https://pan.baidu.com/s/10FBdkO-2uSniqlPlIquGxQ 密码:264n

    (2)复制 solr 工程到 tomcat

    [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat01/webapps/
    [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat02/webapps/
    [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat03/webapps/
    [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat04/webapps/

    4、修改 4 个 tomcat 的端口号

    vim tomcat01/conf/server.xml
    vim tomcat02/conf/server.xml
    vim tomcat03/conf/server.xml
    vim tomcat04/conf/server.xml

    (1)tomcat1( 修改 3 个地方 )

    <Server port="8105" shutdown="SHUTDOWN">
    <Connector port="8180" protocol="HTTP/1.1"
    <Connector port="8109" protocol="AJP/1.3" 

    (2)tomcat2 ( 修改 3 个地方 )

    <Server port="8205" shutdown="SHUTDOWN">
    <Connector port="8280" protocol="HTTP/1.1"
    <Connector port="8209" protocol="AJP/1.3" 

    (3)tomcat3 ( 修改 3 个地方 )

    <Server port="8305" shutdown="SHUTDOWN">
    <Connector port="8380" protocol="HTTP/1.1"
    <Connector port="8309" protocol="AJP/1.3" 

    (4)tomcat4 ( 修改 3 个地方 )

    <Server port="8405" shutdown="SHUTDOWN">
    <Connector port="8480" protocol="HTTP/1.1"
    <Connector port="8409" protocol="AJP/1.3" 

    4、复制 4 份 solrhome 

    (1)solrhome 下载

      链接:https://pan.baidu.com/s/1MDd5QIgFCm7WsS3BMmJkZQ 密码:w6em

    (2)复制 4 份 solrhome 到 solr-cloud

    [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome01
    [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome02
    [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome03
    [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome04

    5、将 solr 工程的  web.xml 文件指向 solrhome

    (1)tomcat1  web.xml

    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>/usr/local/solr-cloud/solrhome01/</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    (2)tomcat2   web.xml

    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>/usr/local/solr-cloud/solrhome02/</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    (3)tomcat3   web.xml

    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>/usr/local/solr-cloud/solrhome03/</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    (4)tomcat4   web.xml

    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>/usr/local/solr-cloud/solrhome04/</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    6、修改 solrhome 中 solr.xml

    (1)solrhome01

    <solrcloud>
        <str name="host">192.168.25.129</str>
        <int name="hostPort">8180</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    </solrcloud>

    (2)solrhome02

    <solrcloud>
        <str name="host">192.168.25.129</str>
        <int name="hostPort">8280</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    </solrcloud>

    (3)solrhome03

    <solrcloud>
        <str name="host">192.168.25.129</str>
        <int name="hostPort">8380</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    </solrcloud>

    (4)solrhome04

    <solrcloud>
        <str name="host">192.168.25.129</str>
        <int name="hostPort">8480</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
    </solrcloud>

    五、建立 zookeeper 和 solr 的关联关系

    1、修改每个 tomcat/bin/catalina.sh 。( 在对应的地方加上以下内容,zookeeper 的 ip 地址和端口号 )

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

    六、让 zookeeper 管理 solrhome

      将任意一个 solrhome/collection1/conf 文件夹上传到 zookeeper 即可

    (1)进入 solr-4.10.3 目录( 就是你下载 solr 4,解压后的那个目录 ) 

    (2)进入下面目录,该目录下有一个 zkcli.sh

    [root@localhost solr-4.10.3]# cd example/scripts/cloud-scripts/

    (3)执行 zkcli.sh ( 注意修改 zookeeper 集群节点 所在的 ip 地址 和端口号 )

    [root@localhost cloud-scripts]# ./zkcli.sh -zkhost 192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf

    (4)查看是否上传成功

      使用 zookeeper 的客户端连接 zookeeper

    [root@localhost solr-cloud]# zookeeper01/bin/zkCli.sh -server 192.168.25.129:2182

      连接成功后

    [zk: 192.168.25.129:2182(CONNECTED) 2] ls /configs

      返回 myconf ,说明上传成功了

    [myconf]

      退出 zookeeper 客户端的连接

    [zk: 192.168.25.129:2182(CONNECTED) 4] quit

    七、关闭防火墙

    service iptablesstop    //暂时关闭防火墙
    chkconfig iptables off    //永久关闭防火墙

    八、启动 4 个tomcat

    [root@localhost 桌面]# /usr/local/solr-cloud/tomcat01/bin/startup.sh 
    [root@localhost 桌面]# /usr/local/solr-cloud/tomcat02/bin/startup.sh 
    [root@localhost 桌面]# /usr/local/solr-cloud/tomcat03/bin/startup.sh 
    [root@localhost 桌面]# /usr/local/solr-cloud/tomcat04/bin/startup.sh 

    九、创建新的 Collection 进行分片处理

      开一个新的浏览器窗口,在地址栏输入以下内容

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

    十、刷新浏览器

    十一、删除不需要的 Collection 

       开一个新的浏览器窗口,在地址栏输入以下内容

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

     十二、刷新浏览器

     十三、solr 集群搭建完毕

  • 相关阅读:
    ci框架与smarty的整合
    jQuery 1.3.2 简单实现select二级联动
    Nginx配置https
    tp5.1最新的类库使用规则
    Linux指令大全
    Redis锁机制处理高并发
    Nginx配置https站点
    vue的入门
    HTTP 请求头中的 X-Forwarded-For,X-Real-IP
    Composer包制作以及发布!
  • 原文地址:https://www.cnblogs.com/fangwu/p/8661323.html
Copyright © 2011-2022 走看看