• Solr集群环境搭建


    一、准备工作

    首先保证已经安装JDK工具包:

    [root@localhost opt]# java -version
    java version "1.8.0_144"
    Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
    Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
    

    本文目的在演示solr集群环境的搭建过程,由于资源的限制这里是伪集群。

    使用版本如下:

    • solr-8.2.0
    • zookeeper-3.4.14

    这里有个坑,本来是使用zookeeper-3.5.5.tar.gz的,但是不知道为什么搭建集群的时候zookeeper节点就是无法正常启动,没办法就只好降低版本使用了3.4.14,再然后在StackOverflow网站上找到答案要使用3.5.5-bin.tar.gz,但是我并没有试过,有空再鼓捣下吧。

    二、zookeeper集群

    依照个人习惯,下载zookeeper到/opt目录下,为了阅读更直观,以下所有命令都在/opt目录下进行。

    解压:

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    
    tar -zxvf zookeeper-3.4.14.tar.gz -C .
    

    在/opt/下创建目录solr-cluster,将zookeeper-3.4.14复制三份到solr-cluster目录下,作为3个节点:

    cp -r zookeeper-3.4.14 solr-cluster/zookeeper1
    cp -r zookeeper-3.4.14 solr-cluster/zookeeper2
    cp -r zookeeper-3.4.14 solr-cluster/zookeeper3
    

    在每个zookeeper目录下都创建一个data目录作为数据存储目录:

    mkdir solr-cluster/zookeeper1/data
    mkdir solr-cluster/zookeeper2/data
    mkdir solr-cluster/zookeeper3/data
    

    在data目录下创建一个myid文件,文件内容表示每个实例的id

    echo 1 >> solr-cluster/zookeeper1/data/myid
    echo 2 >> solr-cluster/zookeeper2/data/myid
    echo 3 >> solr-cluster/zookeeper3/data/myid
    

    复制zookeeper/conf下的zoo_sample.cfg,设置新文件名为zoo.cfg

    cp solr-cluster/zookeeper1/conf/zoo_sample.cfg solr-cluster/zookeeper1/conf/zoo.cfg
    cp solr-cluster/zookeeper2/conf/zoo_sample.cfg solr-cluster/zookeeper2/conf/zoo.cfg
    cp solr-cluster/zookeeper3/conf/zoo_sample.cfg solr-cluster/zookeeper3/conf/zoo.cfg
    

    修改zoo.cfg配置文件,以zookeeper1为例:

    dataDir=/opt/solr-cluster/zookeeper1/data
    clientPort=2181
    

    dataDir表示zookeeper实例保存数据的目录,clientPort表示客户端连接zookeeper的端口号。

    末尾添加如下配置,要注意的是ip后的两个端口号不能冲突:

    server.1=192.168.56.99:3181:4881
    server.2=192.168.56.99:3182:4882
    server.3=192.168.56.99:3183:4883
    

    1,2,3表示节点id,即myid中的内容;3xxx端口号表示zookeeper内部通讯的端口号;4xxx端口号表示zookeeper选举投票端口号。

    zookeeper2、zookeeper3以同样的方式分别指定自己的data目录,分别设置clientPort为2182,2183以及添加集群节点列表配置。

    启动zookeeper节点:

    ./solr-cluster/zookeeper1/bin/zkServer.sh start
    ./solr-cluster/zookeeper2/bin/zkServer.sh start
    ./solr-cluster/zookeeper3/bin/zkServer.sh start
    

    查看zookeeper状态:

    ./solr-cluster/zookeeper1/bin/zkServer.sh status
    ./solr-cluster/zookeeper2/bin/zkServer.sh status
    ./solr-cluster/zookeeper3/bin/zkServer.sh status
    

    正常情况下,应该出现一个leader,两个follwer。

    三、solr集群

    复制tomcat到上述solr-cluster目录中,这里创建3个节点:

    cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat1
    cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat2
    cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat3
    

    修改每个节点server.xml文件,这里以tomcat1节点为例:

    <!-- 默认为8005 -->
    <Server port="8105" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
    ...
     <!-- 默认为8080 -->
     <Connector port="8180" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    ...
    <!-- 默认为8109 -->
    <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
    

    以同样方式修改为tomcat2,tomcat3,分别为82xx,83xx。

    Solr单机环境搭建及配置IK分词器中搭建好的solr复制到tomcat里:

    cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat1/webapps/
    cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat2/webapps/
    cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat3/webapps/
    

    为每一个solr接点创建solrhome,直接复制单机版的solrhome即可。

    cp -r solr/solrhome/ solr-cluster/solrhome1
    cp -r solr/solrhome/ solr-cluster/solrhome2
    cp -r solr/solrhome/ solr-cluster/solrhome3
    

    修改solrhome下的solr.xml配置文件,以下以solrhome1为例:

    <solrcloud>
        <str name="host">192.168.56.99</str>
        <int name="hostPort">8180</int>
        <str name="hostContext">${hostContext:solr}</str>
    ...
    

    host表示tomcat服务节点ip,hostPort表示solr服务端口号。

    修改solr服务web.xml配置,将web服务于solrhome目录联系起来,以tomcat1为例:

    vim solr-cluster/tomcat1/webapps/solr/WEB-INF/web.xml
    
    <env-entry>
           <env-entry-name>solr/home</env-entry-name>
           <env-entry-value>/opt/solr-cluster/solrhome1</env-entry-value>
           <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    

    tomcat2、tomcat3相似。

    接下来,需要使用zookeeper集中管理solr的配置文件,将solr配置文件上传到zookeeper:

    ./solr-8.2.0/server/scripts/cloud-scripts/zkcli.sh -zkhost 192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183 -cmd upconfig -confdir /opt/solr-cluster/solrhome1/configsets/sample_techproducts_configs/conf -confname solr-cluster-conf
    
    • 192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183表示zookeeper节点列表
    • -cmd upconfig 执行操作
    • /opt/solr-cluster/solrhome1/configsets/sample_techproducts_configs/conf 要上传的配置文件目录,其实主要是managed-schema、solrconfig.xml两个文件
    • -confname solr-cluster-conf 给上传的配置文件起个名儿,这里是solr-cluster-conf

    检查上传是否成功:

    ./solr-8.2.0/server/scripts/cloud-scripts/zkcli.sh
    ls /configs
    

    修改tomcat/bin下的catalina.sh,关联solr和zookeeper

    #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
    JAVA_OPTS="-DzkHost=192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183"
    

    这样每个solr实例和zookeeper建立了联系,solr会将自己状态及时发送给zookeeper。

    启动tomcat实例,访问管理界面,这个和单机没啥区别。

  • 相关阅读:
    2019 荔枝java面试笔试题 (含面试题解析)
    2019 乐游网络java面试笔试题 (含面试题解析)
    2019 吉比特java面试笔试题 (含面试题解析)
    2019 拉卡拉java面试笔试题 (含面试题解析)
    2019 东方财富网java面试笔试题 (含面试题解析)
    2019 途牛旅游网java面试笔试题 (含面试题解析)
    2019 263云通信java面试笔试题 (含面试题解析)
    2019 贝壳找房java面试笔试题 (含面试题解析)
    偶分频、奇分频、任意整数分频
    PWM呼吸灯
  • 原文地址:https://www.cnblogs.com/xiaoxiaoyihan/p/11720934.html
Copyright © 2020-2023  润新知