• solr(六): 集群


    前言

      随着用户的增多,空间和并发量越来越多,会导致一台solr服务器干不过了。这时候,就需要将solr集群以下。

    集群架构   

     

    由多台服务器共同完成索引和搜索任务 

    实现的思路是将索引数据进行shard(分片) 拆分,每个分片由多台的服务器共同完成。

    当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作索引。 

    solrCloud需要 solr基于zookeeper部署,zookeeper是一个集群管理软件,solrCloud需要由多台服务器组成。由zookeeper来进行协调管理 ,多个分片相加起来才是一个完成的索引库  

     

    zookeeper的集群:

      见 zookeeper集群

    Solr集群搭建

    一. 拷贝tomcat和solrhome

    新建文件夹 solr-cloud。将之前solr单机版中的tomcat,solrhome拷贝到solr-cloud文件夹中。

    二. tomcat修改

    1.端口修改

    在solr-cloud文件夹中, 执行以下命令:

    vim ./tomcat1/conf/server.xml 

    查询并修改其中的三个port:

    1).

     2).

    3).

    其他的tomcat分别修改port的第二个数值为相应数值即可,

    如:8280/8209/8205,8380/8309/8305,8480/8409/8405。

    2. web.xml 修改

    分别修改 webapps/solr/WEB-INF/web.xml文件 - 将solrhome和solr关联起来

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

    tomcat2 -> /usr/java/solr-cloud/solrhome2

    tomcat3 -> /usr/java/solr-cloud/solrhome3

    tomcat4 -> /usr/java/solr-cloud/solrhome4

    3. catalina.sh修改

    通过修改这里的JAVA_OPTS将tomcat和zookeeper关联起来。

    分别修改tomcat/bin/catalina.sh文件

    加入:

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

    三. solrhome修改

    1. solrhome1下面的solr.xml文件修改

    host为对应tomcat1部署的电脑ip,hostport为tomcat1修改后的端口号。

    solrhome2(192.168.0.102, 8280)

    solrhome3(192.168.0.102, 8380)

    solrhome4(192.168.0.102, 8480)

    2. 上传solrhome/core1/conf目录

    将conf目录上传到zookeeper中,由zookeeper统一管理配置文件。只需要上传任意一个solrhome中的配置就可以了。

    切换到之前solr解压的目录中:/usr/java/solr/solr-6.6.2/server/scripts/cloud-scripts

    执行以下命令:

    ./zkcli.sh -zkhost 192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183 -cmd upconfig -confdir /usr/java/solr-cloud/solrhome1/core1/conf -confname myconf

    执行完此命令后,可以进入zookeeper目录中验证一下是否成功。

    在zookeeper1/bin目录下执行 ./zkCli.sh 命令查看zookeeper上的配置文件信息

    四. 启动tomcat

    新建一个文件,来一键启动tomcat。

    vim start-tomcat.sh

    修改文件权限

    chmod u+x start-tomcat.sh

    然后执行 ./start-tomcat.sh 命令。

    从这里并不能直观看到是否真的起来了。可以通过查看日志的方式,或者通过访问的方式。

    tail -f /usr/java/solr-cloud/tomcat1/logs/catalina.out

    OK, 到这里,终于能看到页面了。在浏览器中打开:http://localhost:8180/solr/index.html#/

    菜单上多出来了一个cloud目录。

    五.分片

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

    在浏览器中直接访问以上地址.

    如果报 org.apache.solr.handler.dataimport.DataImportHandler 错误, 则将 dataimport的jar包拷贝一份到tomcat/webapps/solr/WEB-INF/lib 中去.

    这时候, 再刷新solr/index.html页面看看

    你会发现,在core1下面,又多出一个core, 且是分片的. 以前只有一个主solr, 现在有两个主solr了.

    core1现在我们不需要了, 可以删除掉. 那怎么删呢?

    http://127.0.0.1:8180/solr/admin/collections?action=DELETE&name=core1

    也是通过浏览器直接访问的方式.

    再来看看index.html页面

     core1被删除了.

  • 相关阅读:
    Maven搭建Spring+Struts2+Hibernate项目详解
    Missing artifact com.sun:tools:jar:1.5.0
    post和get的区别?
    $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
    Spring配置dataSource的三种方式 数据库连接池
    关于sqlSessionTemplate
    sql中between and 用法
    用Java自定义一个定时器
    Tomcat unable to start within 45 seconds.
    如果 date_field = TRUNC(date_field) 就说明时分秒为0(也就是不包含),否则就包含时分秒
  • 原文地址:https://www.cnblogs.com/elvinle/p/8453771.html
Copyright © 2020-2023  润新知