Apache Solr 9.1-(二)集群模式运行

Apache Solr 9.1-(二)集群模式运行

Solr是一个基于Apache Lucene的搜索服务器,Apache Lucene是开源的、基于Java的信息检索库,Solr能为用户提供无论在任何时候都可以根据用户的查询请求返回结果,它被设计为一个强大的文档检索引擎。

Apache Solr系列文章:
1、Apache Solr 9.1-(一)初体验单机模式运行
2、Apache Solr 9.1-(二)集群模式运行
3、Apache Solr 9.1-(三)集群模式下通过Http API操作Apache Solr

目录

  • Apache Solr 9.1-(二)集群模式运行
  • 一、准备
    • 1、各组件版本说明
    • 2、部署架构
    • 3、硬件环境准备
    • 4、各服务器节点服务部署情况
    • 5、服务器基础环境准备
  • 二、部署OpenJDK 11
    • 1、下载OpenJDK11
    • 2、上传服务器并解压
    • 3、将jdk同步到hnode2服务器上
    • 4、将jdk同步到hnode2服务器上
  • 三、部署Zookeeper集群
    • 1、在hnode1服务器上部署Zookeeper
      • 1). 解压安装包
      • 2). 配置环境变量
      • 3). 配置zookeeper
      • 4). 在zkData目录生成myid文件
    • 2、在hnode2服务器上部署Zookeeper
      • 1). 从hnode1服务器复制Zookeeper安装目录
      • 2). 配置环境变量
      • 3). 修改myid
    • 3、在hnode3服务器上部署Zookeeper
      • 1). 从hnode1服务器复制Zookeeper安装目录
      • 2). 配置环境变量
      • 3). 修改myid
  • 四、部署Apache Solr集群
    • 1、解压安装包
    • 2、配置solr环境变量
    • 3、配置jvm
    • 4、安装IK-Analyzer中文分词器
    • 5、将solr安装目录同步到hnode2节点上
    • 6、将solr安装目录同步到hnode3节点上
    • 7、启动Zookeeper集群
      • 1).在hnode1上启动Zookeeper
      • 2).在hnode2上启动Zookeeper
      • 3).在hnode3上启动Zookeeper
    • 8、启动Solr集群
      • 1).在hnode1上启动solr
      • 2).在hnode2上启动solr
      • 3).在hnode3上启动solr
    • 9、创建一个Collection
    • 10、更新Collection中Schema字段
      • 1).从Zookeeper集群中下载配置文件
      • 2).修改配置文件
      • 3).更新配置文件到Zookeeper集群中
  • 五、验证结果
    • 1、确认collection1重载配置后Schema生效![在这里插入图片描述](https://img-blog.csdnimg.cn/974a3d746fae47f1bb5d6e18288c2e8c.png)
    • 2、验证中文分词

一、准备

1、各组件版本说明

序号 软件名称 版本 说明
1 JDK 11 Apache Solr9.1要求JDK的版本最低为11,可以是openjdk
2 Apache Solr 9.1 基于Apache Lucene搜索服务器
3 IK-Analyzer 8.5.0 中文分词器
4 Zookeeper 2.4.15

2、部署架构

Apache Solr 9.1-(二)集群模式运行_第1张图片

3、硬件环境准备

序号 IP HostName 操作系统 说明
1 192.168.2.181 hnode1 CentOS7_x64
2 192.168.2.182 hnode2 CentOS7_x64
3 192.168.2.183 hnode3 CentOS7_x64

4、各服务器节点服务部署情况

序号 服务节点 Zookeeper节点 solr节点
1 hnode1
2 hnode2
3 hnode3

5、服务器基础环境准备

参见【大数据基础平台搭建-(一)基础环境准备】

二、部署OpenJDK 11

1、下载OpenJDK11

点击此处【OpenJDK11】进入下载页面下载
Apache Solr 9.1-(二)集群模式运行_第2张图片

2、上传服务器并解压

本文是将openjdk11包上传到/opt/solr/目录下了

[root@hnode1 ~]# cd /opt/solr
[root@hnode1 solr]# tar -xzvf ./openjdk-11+28_linux-x64_bin.tar.gz

在这里插入图片描述

3、将jdk同步到hnode2服务器上

[root@hnode2 ~]# cd /opt/ 
[root@hnode2 opt]# mkdir solr
[root@hnode2 opt]# cd solr
[root@hnode2 solr]# scp -r root@hnode1:/opt/solr/jdk-11 ./

4、将jdk同步到hnode2服务器上

[root@hnode3 ~]# cd /opt
[root@hnode3 opt]# mkdir solr
[root@hnode3 opt]# cd solr
[root@hnode3 solr]# scp -r root@hnode1:/opt/solr/jdk-11 ./

三、部署Zookeeper集群

根据 Solr官方文档 说明:
1、如果在生产环境中部署Solr集群,那么不要使用Solr自带的Zookeeper,要使用外部独立部署的Zookpeer集群,因为自带的Zookeeper不具备故障转移的功能。
2、强烈建议在您的集成中使用奇数个ZooKeeper服务器,这样就可以保持大多数服务器。
3、通常不建议超过5个节点。虽然看起来更多的节点提供了更大的容错性和可用性,但实际上,由于发生了大量的节点间协调,它的效率会降低。除非你有一个真正庞大的Solr集群(规模为1000个节点),否则一般情况下尽量保持在3个,如果你有更大的集群,可能保持在5个。

  • 关与更多细节请您阅读官方文档。

1、在hnode1服务器上部署Zookeeper

1). 解压安装包

[root@hnode1 ~]# cd /opt/
[root@hnode1 opt]# tar -xzvf ./apache-zookeeper-3.8.0-bin.tar.gz /opt/zk/apache-zookeeper-3.8.0-bin
[root@hnode1 opt]# cd /opt/zk/apache-zookeeper-3.8.0-bin 

2). 配置环境变量

[root@hnode1 apache-zookeeper-3.8.0-bin]# vim /etc/profile
#Zookeeper
export ZOOKEEPER_HOME=/opt/zk/apache-zookeeper-3.8.0-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@hnode1 apache-zookeeper-3.8.0-bin]# source /etc/profile

3). 配置zookeeper

[root@znode apache-zookeeper-3.8.0-bin]# mkdir zkData
[root@znode apache-zookeeper-3.8.0-bin]# cd conf
[root@znode conf]# cp ./zoo_sample.cfg ./zoo.cfg
[root@znode conf]# vim ./zoo.cfg
tickTime=2000
clientPort=2181
dataDir=/opt/zk/apache-zookeeper-3.8.0-bin/zkData

initLimit=5
syncLimit=2

#添加集群中其他节点的信息
server.1=hnode1:2888:3888
server.2=hnode2:2888:3888
server.3=hnode3:2888:3888

# 指定允许管理员在solr Admin管理画面上查看Zookeeper的状态数据
4lw.commands.whitelist=mntr,conf,ruok
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
[root@hnode1 apache-zookeeper-3.8.0-bin]# source /etc/profile

4). 在zkData目录生成myid文件

[root@znode apache-zookeeper-3.8.0-bin]# cd zkData/
[root@znode zkData]# vim myid
1

2、在hnode2服务器上部署Zookeeper

1). 从hnode1服务器复制Zookeeper安装目录

[root@hnode2 ~]# cd /opt/
[root@hnode2 opt]# mkdir zk
[root@hnode2 opt]# cd zk
[root@hnode2 zk]# scp -r root@hnode1:/opt/zk/apache-zookeeper-3.8.0-bin ./ 

2). 配置环境变量

[root@hnode2 zk]# vim /etc/profile
#Zookeeper
export ZOOKEEPER_HOME=/opt/zk/apache-zookeeper-3.8.0-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@hnode2 zk]# source /etc/profile

3). 修改myid

[root@hnode2 zk]# cd apache-zookeeper-3.8.0-bin/zkData/
[root@hnode2 zkData]# vim myid 
2

3、在hnode3服务器上部署Zookeeper

1). 从hnode1服务器复制Zookeeper安装目录

[root@hnode3 ~]# cd /opt/
[root@hnode3 opt]# mkdir zk
[root@hnode3 opt]# cd zk
[root@hnode3 zk]# scp -r root@hnode1:/opt/zk/apache-zookeeper-3.8.0-bin ./ 

2). 配置环境变量

[root@hnode3 zk]# vim /etc/profile
#Zookeeper
export ZOOKEEPER_HOME=/opt/zk/apache-zookeeper-3.8.0-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[root@hnode3 zk]# source /etc/profile

3). 修改myid

[root@hnode3 zk]# cd apache-zookeeper-3.8.0-bin/zkData/
[root@hnode3 zkData]# vim myid 
3

四、部署Apache Solr集群

1、解压安装包

本文是将solr-9.1.0.tgz包上传到/opt/solr/目录下了

[root@hnode1 ~]# cd /opt/solr
[root@hnode1 solr]# tar -xzvf ./solr-9.1.0.tgz

2、配置solr环境变量

[root@hnode1 solr]# vim ./bin/solr.in.sh

查找到下面两行配置,并解注后,参照下面值进行配置

ZK_HOST="hnode1:2181,hnode2:2181,hnode3:2181"
ZK_CLIENT_TIMEOUT="30000"
SOLR_HOST="hnode1"
SOLR_PORT=8983
SOLR_HOME="/opt/solr/solr-9.1.0"

3、配置jvm

[root@hnode1 solr]# vim ./bin/solr

在脚本开始新增下面代码

SOLR_JAVA_HOME="/opt/solr/jdk-11"
SOLR_JETTY_HOST="192.168.2.181"

4、安装IK-Analyzer中文分词器

将ik-analyzer-8.5.0.jar上传到/opt/solr/solr-9.1.0/server/solr-webapp/webapp/WEB-INF/lib/目录下

5、将solr安装目录同步到hnode2节点上

[root@hnode2 solr]# scp -r root@hnode1:/opt/solr/solr-9.1.0 ./
[root@hnode2 solr]# vim ./solr-9.1.0/bin/solr

修改ip

SOLR_JETTY_HOST="192.168.2.182"

修改环境变量中的host即可,其它都不变

[root@hnode2 solr]# vim ./bin/solr.in.sh
SOLR_HOST="hnode2"

6、将solr安装目录同步到hnode3节点上

[root@hnode3 solr]# scp -r root@hnode1:/opt/solr/solr-9.1.0 ./
[root@hnode3 solr]# vim ./solr-9.1.0/bin/solr

修改ip

SOLR_JETTY_HOST="192.168.2.183"

修改环境变量中的host即可,其它都不变

[root@hnode3 solr]# vim ./bin/solr.in.sh
SOLR_HOST="hnode3"

7、启动Zookeeper集群

1).在hnode1上启动Zookeeper

[root@hnode1 bin]# zkServer.sh start
[root@hnode1 bin]# zkServer.sh status

Apache Solr 9.1-(二)集群模式运行_第3张图片

2).在hnode2上启动Zookeeper

[root@hnode2 bin]# zkServer.sh start
[root@hnode2 bin]# zkServer.sh status

Apache Solr 9.1-(二)集群模式运行_第4张图片

3).在hnode3上启动Zookeeper

[root@hnode3 bin]# zkServer.sh start
[root@hnode3 bin]# zkServer.sh status

Apache Solr 9.1-(二)集群模式运行_第5张图片

8、启动Solr集群

1).在hnode1上启动solr

[root@hnode1 solr]# cd /opt/solr/solr-9.1.0/bin
# 通过solr命令来在zookeeper集群上创建/solr目录来存放solr集群的数据
[root@hnode1 bin]# ./solr zk mkroot /solr -z hnode1:2181,hnode2:2181,hnode3:2181
# 启动Solr集群
[root@hnode1 bin]# ./solr start -e cloud -z hnode1:2181,hnode2:2181,hnode3:2181/solr -force

2).在hnode2上启动solr

[root@hnode2 solr]# cd /opt/solr/solr-9.1.0/bin
[root@hnode2 bin]# ./solr start -e cloud -z hnode1:2181,hnode2:2181,hnode3:2181/solr -force

3).在hnode3上启动solr

[root@hnode3 solr]# cd /opt/solr/solr-9.1.0/bin
[root@hnode3 bin]# ./solr start -e cloud -z hnode1:2181,hnode2:2181,hnode3:2181/solr -force

Apache Solr 9.1-(二)集群模式运行_第6张图片
Apache Solr 9.1-(二)集群模式运行_第7张图片

因为此时还未创建Collection,所以此时Cloud->Graph显示的Solr集群图中是空的,下面9将创建一个Collection后就可以看到了。

9、创建一个Collection

Apache Solr 9.1-(二)集群模式运行_第8张图片
Apache Solr 9.1-(二)集群模式运行_第9张图片

10、更新Collection中Schema字段

1).从Zookeeper集群中下载配置文件

[root@hnode1 solr]# solr-9.1.0/bin/solr zk downconfig -d . -n _default
[root@hnode1 solr]# cd conf

2).修改配置文件

[root@hnode1 conf]# vim managed-schema.xml

添加IK中文分词器配置和添加两个自定义字段


<fieldType name="text_ik" class="solr.TextField">
	<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
	<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
fieldType>


<field name="messageID" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

<field name="senderFullName" type="text_ik" indexed="true" stored="true" multiValued="false" /> 

3).更新配置文件到Zookeeper集群中

第一步:先删除zookeeper集群中solr目录下的配置文件

[root@hnode1 conf]# zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /solr/configs/_default
[lang, managed-schema.xml, protwords.txt, solrconfig.xml, stopwords.txt, synonyms.txt]
[zk: localhost:2181(CONNECTED) 1] delete /solr/configs/_default/managed-schema.xml

第二步:通过cloud-scripts中的zkcli.sh脚本将本地修改完成的managed-schema.xml上传到zookeeper集群中/solr/configs/_default/目录下

[root@hnode1 conf]# cd ..
[root@hnode1 solr]# cd /opt/solr/solr-9.1.0/server/scripts/cloud-scripts
[root@hnode1 cloud-scripts]# ./zkcli.sh -zkhost hnode1:2181,hnode2:2181,hnode3:2181 -cmd putfile /solr/configs/_default/managed-schema.xml /opt/solr/conf/managed-schema.xml

第三步:通过solr Admin UI画面,重新加载Collection配置

点击画面中Collections->collection1->Reload按钮

Apache Solr 9.1-(二)集群模式运行_第10张图片

五、验证结果

1、确认collection1重载配置后Schema生效Apache Solr 9.1-(二)集群模式运行_第11张图片

Apache Solr 9.1-(二)集群模式运行_第12张图片

2、验证中文分词

Apache Solr 9.1-(二)集群模式运行_第13张图片

你可能感兴趣的:(Java,#,solr,solr,apache,lucene)