• Solr集群(SolrCloud)的安装与部署(使用Tomcat)


    搭建SolrCloud模式的集群,使用内置的Jetty运行

    一、硬件环境

    假设有4台机,IP及主机名如下:

    192.168.100.105 c1
    192.168.100.110 c2
    192.168.100.115 c3
    192.168.100.120 c4

    二、软件环境

    操作系统:Ubuntu Server 18.04

    JDK:1.8.0

    1.安装JDK

    https://www.cnblogs.com/live41/p/14235891.html

    2.安装ZooKeeper

    https://www.cnblogs.com/live41/p/15522363.html

    安装完后,在4台机分别启动ZooKeeper,4台机都要执行。

    zkServer.sh start

    3.安装Tomcat

    https://www.cnblogs.com/live41/p/15598669.html

    三、搭建Solr集群(SolrCloud模式)

    * 先登录root账号再进行以下操作

    假定Tomcat和Solr都安装在/home/目录

    1.先在每台机安装单机版Solr

    https://www.cnblogs.com/live41/p/15608048.html

    * 不仅是下载解压,要按文章中的步骤执行,每台机都要执行

    2.复制jar包文件夹

    把安装目录(solr-x.x.x)的contrib和dist文件夹复制到Solr目录下

    cp -r /home/solr-8.11.0/contrib /home/solr
    cp -r /home/solr-8.11.0/dist /home/solr

    contrib - 第三方jar包

    dist - Solr编译的jar包

    配置solrconfig.xml属性会使用到这2个文件夹

    3.配置solr.xml

    * 所有机都要执行该步骤

    cd /home/solr
    vim solr.xml

    修改或添加以下属性:

    <str name="host">192.168.100.105</str>
    <int name="hostPort">8080</int>
    <str name="zkHost">c1:2181,c2:2181,c3:2181</str>

    host属性除了IP,也可以用主机名,例如c1、c2、……

    host属性在每台机要配置该机器的IP,例如在c1机要配置c1或192.168.100.105,在c2机要配置c2或192.168.100.110

    hostPost属性是对应Tomcat的conf目录的server.xml文件的<Connector port=""/>参数的值,默认是8080

    zkHost属性是ZooKeeper全部节点的地址,用逗号隔开。理论上,如果配置了Tomcat的catalina.sh,也可以不配置该属性,请自行测试。

    4.配置catalina.sh

    * 所有机都要执行该步骤

    cd /home/tomcat/bin
    vim catalina.sh

    添加以下内容:

    #JAVA_OPTS="$JAVA_OPTS -DzkHost=c1:2181,c2:2181,c3:2181"

    * 如果运行Solr管理平台时出现主机名+IP的重复节点,就把这里改成用IP:

    JAVA_OPTS="$JAVA_OPTS -DzkHost=192.168.100.105:2181,192.168.100.110:2181,192.168.100.115:2181"

    5.上传Solr的collection配置给ZooKeeper

    * 只在c1机执行

    为了让ZooKeeper统一管理配置,把Solr的collection配置文件上传到ZooKeeper

    如果是按照前面的文章进行操作,那么目前/home/目录下应该有3个目录:

    solr  Solr的配置及脚本
    solr-8.11.0  Solr安装包解压的目录(包含所有文件)
    tomcat  Tomcat的安装目录

    其中需要用到solr-8.11.0的zkcli.sh脚本

    cd /home/solr-8.11.0/server/scripts/cloud-scripts
    ./zkcli.sh -cmd upconfig -zkhost c1:2181,c2:2181,c3:2181 -confdir /home/solr/configsets/sample_techproducts_configs/conf -confname myconf

    -cmd upconfig  上传collection的配置

    -zkhost  上传的ZooKeeper

    -confdir  配置文件的路径

    -confname  配置名,登记到ZooKeeper

    测试是否提交成功:

    # 登入ZooKeeper
    zkCli.sh -server localhost:2181
    
    列出名为myconf的配置文件
    ls /configs/myconf
    
    # 关闭连接
    close
    
    # 退出ZooKeeper
    quit

    6.启动Tomcat

    * 所有机都要执行该步骤

    startup.sh

    7.测试

    在浏览器打开:

    http://192.168.100.105:8080/solr/index.html

    然后点击Cloud,可以看到节点信息

    8.关闭

    * 所有机都要执行该步骤

    # 注意有.sh,别打错成关机命令shutdown
    shutdown.sh
    zkServer.sh stop

    四、异常问题及处理

    1.提示ruok命令不能运行

    Could not execute ruok towards ZK host xxx:2181. Add this line to the 'zoo.cfg' configuration file on each zookeeper node: '4lw.commands.whitelist=mntr,conf,ruok'. See also chapter 'Setting Up an External ZooKeeper Ensemble' in the Solr Reference Guide.

    原因:没有配置ZooKeeper打开ruok测试命令

    解决方法:

    https://www.cnblogs.com/live41/p/15620326.html

    2.提示不建议用偶数个ZooKeeper节点

    We have an even number of zookeepers which is not recommended

    解决方法:就是减少1个ZooKeeper节点。注意,减少zk节点的话,之前的zk配置项也要跟着减少。

     

    3.页面显示403,日志提示绑定8080出错

    SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]]
    org.apache.catalina.LifecycleException: Protocol handler initialization failed.

    解决方法:

    https://www.cnblogs.com/live41/p/15624179.html

     

  • 相关阅读:
    Pick-up sticks
    The Doors
    Intersecting Lines
    Segments
    TOYS
    Palindrome
    Distinct Substrings
    Milk Patterns
    Musical Theme
    JavaScript基于时间的动画算法
  • 原文地址:https://www.cnblogs.com/live41/p/15619863.html
Copyright © 2020-2023  润新知