古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

SolrCloud

时间: 2023-06-28   |   分类: Solr   搜索引擎   | 字数: 2311 字 | 阅读约: 5分钟 | 阅读次数:

SolrCloud

1. 简介

SolrCloud 是Solr提供的分布式搜索方案,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。当一个系统的索引数据量少的时候是不需要使用SolrCloud的。

SolrCloud是基于Solr和Zookeeper的分布式搜索方案。它的主要思想是使用Zookeeper作为SolrCloud集群的配置信息中心,统一管理solrcloud的配置,比如solrconfifig.xml和managed-schema

使用场景:

当你需要容错,分布式索引和分布式检索能力时使用SolrCloud。 
当索引量很大,搜索请求并发很高时,同样需要使用SolrCloud来满足这些需求。

特点:

集中式的配置信息 
自动容错 
近实时搜索 
查询时自动负载均衡

2. 结构

  • 物理结构

    3个solr实例(每个实例包括两个core), 组成一个solrCloud

    core:

    每个Core是Solr中一个独立运行单位,提供 索引和搜索服务。

  • 逻辑结构

    索引集合包括两个Shard(shard1和shard2),shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。用户发起索引请求分别从shard1和shard2上获取,解决高并发问题。

    Master&Slave:
    	Master是master-slave构中的主结点(通常说主服务器),Slave是master-slave结构中的从结 点(通常说从服务器或备服务器)。 
    Shard: 
    	一个shard需要由一个Core或多个Core组成。Collection的逻辑分片。每个Shard被化成一个或者多 个replication,通过选举确定哪个是Leader。索引集合包括两个Shard(shard1和shard2), shard1和shard2分别由三个Core组成,其中一个Leader两个Replication,Leader是由zookeeper选 举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。用户发起索引请求分 别从shard1和shard2上获取,解决高并发问题。 
    collection: 
    	多个shard组成所以collection一般由多个core组成。 Collection在SolrCloud集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个 Shard(分片),它们使用相同的配置信息。 比如:针对商品信息搜索可以创建一个collection。 collection=shard1+shard2+....+shardX
    

3. 环境搭建

  • 系统搭建结构图

    solrcloud是基于solr和zookeeper部署,zookeeper是一个集群管理软件,solrcloud需要由多台solr服务器组成,然后由zookeeper来进行协调管理

  • zk集群搭建

    参考:zookeeper分类部分

  • solr集群搭建

    • 先搭建一个单机版

      1.上传tomcat 和 solr 压缩包 到/usr/local/solr-cloud 下,tomcat中建立solr工程 
      	tar -xvf apache-tomcat-8.5.55.tar.gz 
      	mv apache-tomcat-8.5.55 tomcat 
      	tar -xvf solr-7.7.3.tgz 
      	cp /usr/local/solr-cloud/solr-7.7.3/server/solr-webapp/webapp -rf /usr/local/solr-cloud/tomcat/webapps/solr 
      2.拷贝jar包 
      	cd /usr/local/solr-cloud/solr-7.7.3/server/lib 
      	cp ext/* /usr/local/solr-cloud/tomcat/webapps/solr/WEB-INF/lib/ 
      	cp metrics-* /usr/local/solr-cloud/tomcat/webapps/solr/WEB-INF/lib/ 
      3.配置solrhome 
      	首先创建solrhome存储Solr索引文件 
      	mkdir -p /usr/local/solr-cloud/solrhome 
      	复制solr-7.7.3/server/solr目录下所有内容到solrhome 
      	cd /usr/local/solr-cloud/solr-7.7.3/server/solr 
      	cp -r * /usr/local/solr-cloud/solrhome/ 
      4.需要修改solr的web.xml文件 把solrhome关联起来 和 去掉安全认证。 
      	<env-entry>
          	<env-entry-name>solr/home</env-entry-name> 
          	<env-entry-value>/usr/local/solr-cloud/solrhome</env-entry-value> 
          	<env-entry-type>java.lang.String</env-entry-type> 
          </env-entry> 
          <!-- <security-constraint> ...... --> 
      5.启动tomcat测试 
      	./tomcat/bin/startup.sh 
      	systemctl stop firewalld
      
    • 创建四个tomcat实例。每个tomcat运行在不同的端口。8180、8280、8380、8480

      分别修改tomcat中的端口
      vim tomcat01/conf/server.xml
      
      把原来的8005 换成 8105 之前的 8009换成 8109 之前的 8080 换成 8180 其它的tomcat 也类似修改
      
      <Server port="8105" shutdown="SHUTDOWN"> </Server> 
      <Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
      <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
      
    • 建立classes文件夹 拷贝日志配置文件。

      mkdir tomcat01/webapps/solr/WEB-INF/classes 
      cp /usr/local/solr-cloud/solr-7.7.3/server/resources/log* /usr/local/solr- cloud/tomcat01/webapps/solr/WEB-INF/classes
      

      其它的tomcat中的操作 参考上面的修改即可

    • 把单机版solrhome 复制为solrhome1 solrhome2 solrhome3 solrhome4。

      cp solrhome -rf solrhome1 
      cp solrhome -rf solrhome2 
      cp solrhome -rf solrhome3 
      cp solrhome -rf solrhome4
      
    • 配置solrCloud相关的配置。每个solrhome下都有一个solr.xml,把其中的ip及端口号配置好.

      这里重点是 hostPort 要和tomcat 对应 如果是多台机器 ip 设置不同即可

      vi solrhome1/solr.xml 其它的solrhome/solr.xml 依次修改
      <solrcloud> 
          <str name="host">192.168.211.137</str> 
          <int name="hostPort">8180</int> 
          <str name="hostContext">${hostContext:solr}</str> 
      </solrcloud>
      
    • 让zookeeper统一管理配置文件。需要把solrhome/confifigsets/sample_techproducts_confifigs/conf目录上传到zookeeper。上传任意solrhome中的配置文件即可。要保证zookeeper集群是启动状态。

      使用工具上传配置文件:solr-7.7.3/server/scripts/cloud-scripts/zkcli.sh

      cd /usr/local/solr-cloud/solr-7.7.3/server/scripts/cloud-scripts
      
      ./zkcli.sh -zkhost 192.168.211.137:2181,192.168.211.137:2182,192.168.211.137:2183 -cmd upconfig - confdir /usr/local/solr-cloud/solrhome1/configsets/sample_techproducts_configs/conf -confname myconf
      
    • 查看zookeeper上的配置文件

      #使用zookeeper目录下的bin/zkCli.sh命令查看zookeeper上的配置文件
       ./zkCli.sh
       ls /
       ls /configs
       ls /configs/myconf
      
    • 修改tomcat/bin目录下的catalina.sh 文件,关联solr和zookeeper/ 把此配置添加到配置文件中:

      #vi中搜索 umask
      JAVA_OPTS="-DzkHost=192.168.211.137:2181,192.168.211.137:2182,192.168.211.137:2183"
      
    • 检查每个tomcat中项目的web.xml 看是否已经对应到对应的solrhome 检查没有问题可以启动全部tomcat

      solr/home
      /usr/local/solr-cloud/solrhome1
      java.lang.String
      

      启动每个tomcat实例。

      chmod -R 777 tomcat01/bin 
      chmod -R 777 tomcat02/bin 
      chmod -R 777 tomcat03/bin 
      chmod -R 777 tomcat04/bin
      
      ./tomcat_start.sh
      
    • 访问集群

      查看里面的 cloud 菜单,随意连接一台

    • 创建新的Collection进行分片处理

      点击页面的Collections按钮,然后就能添加了

4. Springboot 访问solrCloud

见示例代码: springboot-solrcloud

#Solr# #搜索引擎#
QQ扫一扫交流

标题:SolrCloud

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Elasticsearch基础
Solr性能优化
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 1. 简介
  • 2. 结构
  • 3. 环境搭建
  • 4. Springboot 访问solrCloud
© 2019 - 2024 京ICP备19012088号-1
0%