侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 292 篇文章
  • 累计创建 132 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Linux下SolrCloud集群的安装及配置

孔子说JAVA
2022-08-26 / 0 评论 / 0 点赞 / 71 阅读 / 4,406 字 / 正在检测是否收录...

SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,是 Solr 的集群版,用于在多个服务器之间分发索引内容和查询请求,具有容错性和高可用性。它的主要思想是使用Zookeeper 作为集群的配置信息中心,使用 ZooKeeper 来管理集合、分配、主节点和副本,指定哪些服务器需要处理请求。本文使用的软件版本:Solr 8.9.0、jdk1.8.0_181。

1、SolrCloud 简介

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

  • 1)集中式的配置信息
  • 2)自动容错
  • 3)近实时搜索
  • 4)查询时自动负载均衡

SolrCloud 架构图

202208251

物理结构:三个 Solr 实例(每个实例包括两个 Core)组成一个 SolrCloud。
逻辑结构:索引集合包括两个 Shard(shard1和shard2),shard1 和 shard2 分别由三个 Core 组成,其中一个 Leader 两个 Replication,Leader 是由 Zookeeper 选举产生。每个 shard 上三个 Core 的索引数据一致,解决高可用问题;用户发起索引请求负载到 shard1 和 shard2 上,解决高并发问题。

  • collection:Collection 在 SolrCloud 集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个 Shard(分片),它们使用相同的配置信息。
  • Core:每个 Core 是 Solr 中一个独立运行单位,提供索引和搜索服务。一个 shard 需要由一个 Core 或多个 Core 组成。
  • Master 或 Slave:Master 是 master-slave 结构中的主节点,Slave 是 master-slave 结构中的从节点。同一个 Shard 下 master 和 slave 存储的数据是一致的。
  • Shard:Collection 的逻辑分片。每个 Shard 被化成一个或者多个 replication,通过选举确定哪个是 Leader。

2、SolrCloud 的下载及安装

2.1 环境准备

准备4台主机,1台用于安装Zookeeper,另外3台用于安装solr实例。

主机 用途
10.40.96.10 安装 Zookeeper
10.40.96.11 安装 Solr 实例
10.40.96.12 安装 Solr 实例
10.40.96.13 安装 Solr 实例

另外Solr是java开发的,所以我们的环境需要安装jdk(JDK1.8及以上)。

2.2 安装 Zookeeper

Zookeeper的下载及安装教程:linux环境下zookeeper3.8.0的安装教程,安装后 Zookeeper 地址为:10.40.96.10:2181 。

2.3 单机安装 Solr

先在一台机器(10.40.96.11)上安装 Solr,配置完成后再分发 Solr 到其他主机。

2.3.1 下载solr

下载solr,windows和linux都可以下载 .tgz(.tgz本质是.tar.gz),和.zip解压出来都一样的。solr下载地址:

2.3.2 解压solr

把solr 的压缩包上传到Linux系统,然后解压。

tar zxvf solr-8.9.0.tgz

2.3.3 配置 IK 分词器

1)下载 IK 分词器

下载 IK 分词器的 jar 包放入 server/solr-webapp/webapp/WEB-INF/lib 目录下;可到 Maven 中央仓库(https://search.maven.org/)下载 jar 包:

<dependency>
    <groupId>com.github.magese</groupId>
    <artifactId>ik-analyzer</artifactId>
    <version>8.4.0</version>
</dependency>

也可以使用自带的中文分词器 lucene-analyzers-smartcn,将lucene-analyzers-smartcn.jar 复制到 solr-8.9.0/server/solr-webapp/webapp/WEB_INF/lib下。

2)配置 IK 分词器

将 resources 目录下的 IKAnalyzer.cfg.xml、ext.dic、stopword.dic 放入 server/resources 目录下;可以在 github (https://github.com/magese/ik-analyzer-solr) 上下载这些配置文件。

复制默认配置用于 IK 配置

cd ${SOLR_HOME}/server/solr/configsets
cp -r _default/ ik_default

将 resources 目录下的 ik.conf 及 dynamicdic.txt 放入 ${SOLR_HOME}/server/solr/configsets/ik_default/conf 目录下;可以在 github (https://github.com/magese/ik-analyzer-solr) 上下载这些配置文件。

修改 ${SOLR_HOME}/server/solr/configsets/ik_default/conf/managed-schema,添加 IK 分词器:

<fieldType name="text_ik" class="solr.TextField">
  <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

3)将配置文件上传至 Zookeeper

cd  ${SOLR_HOME}/server/scripts/cloud-scripts
./zkcli.sh -zkhost 10.40.96.10:2181 -cmd upconfig -confname my-config -confdir ${SOLR_HOME}/server/solr/configsets/ik_default/conf/

IK 分词器详细的使用可参考官网:https://github.com/magese/ik-analyzer-solr/blob/master/README-CLOUD.md

2.4 其他机器安装 Solr

将 10.40.96.11 安装的 Solr 分发到其他主机(10.40.96.12、10.40.96.13)。

scp -r ${SOLR_HOME} hadoop@10.40.96.12:/home/hadoop
scp -r ${SOLR_HOME} hadoop@10.40.96.13:/home/hadoop

2.5 启动/停止 SolrCloud

启动命令

分别在各 Solr 主机上运行如下命令启动SolrCloud:

bin/solr start -c -z 10.40.96.10:2181 [-p port]

停止命令

bin/solr stop [-p port]

3、SolrCloud 控制台使用

访问 SolrCloud 控制台:http://ip:8983/solr

image-1661390212872

3.1 添加 Collection 对应的配置

通过命令行来添加配置到 Zookeeper,先使用带 IK 分词器的默认配置(第一台 Solr 主机 10.40.96.11 上有)添加一个新的配置,再在该配置上进行调整修改。

cd  ${SOLR_HOME}/server/scripts/cloud-scripts
./zkcli.sh -zkhost 10.40.96.10:2181 -cmd upconfig -confname new_config_1 -confdir ${SOLR_HOME}/server/solr/configsets/ik_default/conf/

3.2 添加 Collection

使用上一步新加的配置 new_config_1:

image-1661390408520

3.3 在 Collection 中添加 schema 信息

image-1661390442488

3.4 查看添加的字段信息

在 managed-schema 中查看添加的字段信息:

image-1661390472042

3.5 添加/更新文档

在Documents中可以添加/更新文档。

{"id": "123456","age": 40,"name": "李白","poems": "望庐山瀑布","about": "字太白","success": "创造了古代浪漫主义文学高峰、歌行体和七绝达到后人难及的高度"},
{"id": "123457","age": 31,"name": "杜甫","poems": "望岳","about": "字子美","success": "唐代伟大的现实主义文学作家,唐诗思想艺术的集大成者"}

image-1661390523371

3.6 查询文档

在Query中可以查询文档。

image-1661390543564

0

评论区