如何部署单节点Oracle Linux 9.x solr?

Linux基础

1. 理论基础

1.1 Solr简介

– Solr基于Apache Lucene,它是一个基于Java开源信息检索库
– Solr是一款基于Apache Lucener构建的搜索服务器
– Solr旨在驱动强的的文档检索或分析应用,涵盖非结构化数据、半结构化数据或非结构化数据
– Solr为有限的关系型、图形、统计、数据分析或存储相关用力提供辅助支持。
– Solr基于Apache 2.0许可证,你可以自由地对其进行调整和优化。
– Solr适用于任何商业或非商业用例。

1.2 Solr支持的功能

– Solr的查询语法和解析器支持简单关键字或多字段金额多方面的复杂查询。
– Solr的结果折叠和聚类功能为电子商务和实体店提供极具吸引的功能
– Solr的流式表达式允许你对整个语料库、查询匹配子集或一组文档的随机样本进行分析。
– Solr强大的数学表达式以流式表达式为基于,为高级分析和预测分析用例提供支撑。
– Solr支持高级相关性调整,它几乎支持Lucene的所有文本分析功能,包括分词、词干提取、同义词等(根据用户和领域调整相关性)
– Solr支持“学习排名”功能,通过机器学习来定制相关性
– Solr支持通过HTTP 1.1或2.0请求,响应通常是结构化文档描述符的列表
– Solr文档描述符列表,经典返回10个描述符,每个描述符都包含定位URL,除此还支持返回许多其他类型的文档元数据
– Solr灵活的架构配置允许几乎任何类型的元数据与已索引的文档关联。
– Solr默认返回JSON响应格式,同时支持XML、CSV、优化二进制或任何自定义格式(因此支持各种客户端)
– Solr提供多个客户端API,支持常用的变成语言。
– Solr支持对索引进行分片和复制。

1.3 Solr特点

– Solr具有高度可靠性、可扩展性和容错性
– Solr提供分布式索引,复制和负载平衡查询
– Solr具有自动故障转移和恢复和集中式配置等功能
– Solr为全球许多的互联网站点的搜索和导航提供支持。

1.4 安装要求

1.4.1 支持的操作系统

– 支持Linux
– 支持macOS
– 支持Windows

1.4.2 支持的运行时

– 支持Java运行时环境(JRE)11或更高版本

2 最佳实践

2.1 环境配置

2.1.1 系统环境信息

IP Address = 10.168.0.27
OS = Oracle Linux 9.x x86_64

2.1.2 系统的基本配置

请参阅如下章节完成系统的基本配置,

如何完成CentOS 7.x的基本服务?

2.1.3 部署OpenJDK环境

如何部署openJDK?


安装完成后,你需要使用如下命令测试安装,

java -version

可见如下显示,

openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)

2.2 准备软件包

2.2.1 下载软件包

cd ~
wget https://dlcdn.apache.org/solr/solr/9.9.0/solr-9.9.0.tgz

以上只是命令行演示,如果你下载异常或需要其他版本,请从如下连接下载,
https://solr.apache.org/downloads.html

2.2.2 解压安装包

tar -xf solr-9.9.0.tgz

2.3 配置软件包

2.3.1 创建运行用户

groupadd  -g 889 solr
useradd -u 889 -g 889 -d /var/lib/solr -s /sbin/nologin solr

2.3.2 部署软件包

mv solr-9.9.0 /opt/
mkdir -p /var/log/solr /data/solr
chown solr:solr -R /opt/solr* /var/log/solr /data/solr
chmod 770 -R /opt/solr* /var/log/solr /data/solr
ln -s /opt/solr-9.9.0/server/etc /etc/solr

然后,你还需要使用如下配置环境变量,

vim /etc/profile.d/solr.sh

加入如下配置:

export SOLR_HOME=/opt/solr-9.9.0
export PATH=${SOLR_HOME}/bin:$PATH

2.3.3 定义环境变量配置

cp /opt/solr-9.9.0/bin/solr.in.sh /opt/solr-9.9.0/bin/solr.in.sh.default
vim /opt/solr-9.9.0/bin/solr.in.sh

修改如下配置,

SOLR_JAVA_HOME="/usr/java/jdk-21.0.1"
SOLR_HEAP="512m"
SOLR_JAVA_MEM="-Xms512m -Xmx512m"
SOLR_PID_DIR=/run/solr
SOLR_DATA_HOME=/data/solr
SOLR_LOG_LEVEL=INFO
SOLR_LOGS_DIR=/var/log/solr
SOLR_PORT=8983
SOLR_JETTY_HOST="0.0.0.0"

2.3.4 获取使用帮助

sudo -u solr bash -c '/opt/solr-9.9.0/bin/solr --help'

可见如下显示,

Usage: solr COMMAND OPTIONS
       where COMMAND is one of: start, stop, restart, status, healthcheck, 
                                create, delete, auth, assert, config, cluster, export, api, package, post, stream,
                                zk ls, zk cp, zk rm , zk mv, zk mkroot, zk upconfig, zk downconfig,
                                snapshot-create, snapshot-list, snapshot-delete, snapshot-export, snapshot-prepare-export

  Standalone server example (start Solr running in the background on port 8984):

    ./solr start -p 8984

  SolrCloud example (start Solr running in SolrCloud mode using localhost:2181 to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):

    ./solr start -c -m 1g -z localhost:2181 --jvm-opts "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044"

  Omit '-z localhost:2181' from the above command if you have defined ZK_HOST in solr.in.sh.

Global Options:
  -v,  --version           Print version information and quit
       --verbose           Enable verbose mode

Run 'solr COMMAND --help' for more information on a command.

For more help on how to use Solr, head to https://solr.apache.org/

2.3.5 测试单节点启动

mkdir -p /run/solr/
chown solr:solr /run/solr/
chmod 770 /run/solr/
sudo -u solr bash -c '/opt/solr-9.9.0/bin/solr start --user-managed'

关于以上参数,
– 由于本章是需要部署单机运行
– 因此我们需要使用“user-managed”声明服务以单节点模式启动
启动后,可见如下显示,

*** [WARN] *** Your open file limit is currently 1024.  
 It should be set to 65000 to avoid operational disruption. 
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
*** [WARN] ***  Your Max Processes Limit is currently 13405. 
 It should be set to 65000 to avoid operational disruption. 
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Java 21 detected. Enabled workaround for SOLR-16463
Java 21 detected. Incubating Panama Vector APIs have been enabled
Waiting up to 180 seconds to see Solr running on port 8983 [\]  
Started Solr server on port 8983 (pid=8759). Happy searching!

服务启动后,你可以使用如下命令查找服务启动的进程号,

pgrep -u solr java -a

显示如下:

8759 /usr/java/jdk-21.0.1/bin/java -server -Xms512m -Xmx512m -XX:+UseG1GC -XX:+PerfDisableSharedMem -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=250 -XX:+UseLargePages -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Xlog:gc*:file=/var/log/solr/solr_gc.log:time,uptime:filecount=9,filesize=20M -Dsolr.jetty.inetaccess.includes= -Dsolr.jetty.inetaccess.excludes= -Dsolr.log.dir=/var/log/solr -Djetty.port=8983 -DSTOP.PORT=7983 -DSTOP.KEY=solrrocks -Djava.io.tmpdir=/tmp -Duser.timezone=UTC -XX:-OmitStackTraceInFastThrow -XX:+CrashOnOutOfMemoryError -XX:ErrorFile=/var/log/solr/jvm_crash_%p.log -Djetty.home=/opt/solr-9.9.0/server -Dsolr.solr.home=/opt/solr-9.9.0/server/solr -Dsolr.install.dir=/opt/solr-9.9.0 -Dsolr.install.symDir=/opt/solr-9.9.0 -Dsolr.default.confdir=/opt/solr-9.9.0/server/solr/configsets/_default/conf -Dsolr.jetty.host=0.0.0.0 -Xss256k -Dsolr.data.home=/data/solr -XX:CompileCommand=exclude,com.github.benmanes.caffeine.cache.BoundedLocalCache::put --add-modules jdk.incubator.vector --enable-native-access=ALL-UNNAMED -Djava.security.manager -Djava.security.policy=/opt/solr-9.9.0/server/etc/security.policy -Djava.security.properties=/opt/solr-9.9.0/server/etc/security.properties -Dsolr.internal.network.permission=* -DdisableAdminUI=false -Dsolr.log.muteconsole -jar start.jar --module=http --module=requestlog --module=gzip

然后,你可以使用如下命令查看服务启动的端口倾听状态,

ss -antp | grep $(pgrep -u solr java)

可见如下信息:

LISTEN 0      50     [::ffff:127.0.0.1]:7983            *:*     users:(("java",pid=8759,fd=45))                      
LISTEN 0      50                      *:8983            *:*     users:(("java",pid=8759,fd=47)) 

根据端口的倾听状态,你可能需要开放防火墙的如下端口,

firewall-cmd --permanent --add-port=8983/tcp
firewall-cmd --reload
firewall-cmd --list-all

最后,如果你需要停止服务,请执行如下脚本,

sudo -u solr bash -c '/opt/solr-9.9.0/bin/solr stop'

2.3.6 创建服务控制脚本

vim /etc/systemd/system/solr.service

加入如下配置,

[Unit]
Description=Apache Solr
After=network.target

[Service]
Type=forking
User=solr
Group=solr
RuntimeDirectory=solr
ExecStart=/opt/solr-9.9.0/bin/solr start --user-managed
ExecStop=/opt/solr-9.9.0/bin/solr stop
Restart=on-failure
LimitNOFILE=65000
LimitNPROC=65000

[Install]
WantedBy=multi-user.target

服务创建后,你需要使用如下命令重载服务,

systemctl daemon-reload

然后,使用如下命令启动服务并设置自启动,

systemctl start solr
systemctl enable solr

另外,运行一段时间服务会自动停止,使用如下命令查询,

systemctl status solr

可见如下日志,

Aug 15 17:39:58 solr01.cmdschool.org solr[10665]: NOTE: Please install lsof as this script needs it to determine if Solr is listening on port 8983.
Aug 15 17:40:08 solr01.cmdschool.org solr[10665]: Started Solr server on port 8983 (pid=10717). Happy searching!
Aug 15 17:40:08 solr01.cmdschool.org solr[10782]: Sending stop command to Solr running on port 8983 ... waiting up to 180 seconds to allow Jetty process 1>
Aug 15 17:40:10 solr01.cmdschool.org solr[10782]: [56B blob data]
Aug 15 17:40:10 solr01.cmdschool.org systemd[1]: solr.service: Deactivated successfully.
Aug 15 17:40:10 solr01.cmdschool.org systemd[1]: solr.service: Consumed 9.345s CPU time.

你需要按照提示安装如下软件包才能正常持续运行,

dnf install -y lsof

2.4 测试Web服务

http://10.168.0.170:8983

参阅文档
==============

安装部署指南
————–
https://solr.apache.org/guide/solr/latest/deployment-guide/system-requirements.html

软件首页
————
https://solr.apache.org/

使用指南
———-
https://solr.apache.org/guide/solr/latest/index.html

启动参数
—————
https://solr.apache.org/guide/solr/latest/deployment-guide/solr-control-script-reference.html

日志配置
———–
https://solr.apache.org/guide/solr/latest/deployment-guide/configuring-logging.html

身份认证插件
—————–
https://solr.apache.org/guide/solr/latest/deployment-guide/authentication-and-authorization-plugins.html#using-security-json-with-solr

其他参考
————–

如何熟悉Solr?

没有评论

发表回复

Linux基础
如何让IPv4地址优先于IPv6?

1 前言 一个问题,一篇文章,一出故事。 笔者在生产环境遇到过DNS的解析IPv6优先与IPv4的情 …

Linux基础
如何安装部署Collabora Online?

1 基础知识 1.1 Collabora Online 1.1.1 Collabora Online …

Linux基础
如何安装Oracle Linux 9.x的milvus-cli

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署好Milvus的服务端,想在Oracle Li …