# 信创环境全文检索部署手册
# 概要说明
使用与协同应用服务版本一致的全文检索服务;
全文检索服务支持Windows、Linux系统;
使用全文检索必须部署独立的全文检索服务;
使用全文检索安装程序安装全文检索的独立服务,建议安装在独立的服务器上。
# 网络拓扑
产品支持单机和集群两种部署方式,拓扑示意如下
# 单机模式
- 保证基本功能可用,面向小型客户(同时在线1000人以下)
- 资源成本需求低,只需要一台服务器,8C16G
# 集群模式
- 面向中大型客户(同时在线1000人以上)
- 满足高性能、具备高可用的要求,至少需要3台服务器,8c16G以上
# 硬件配置参考
在线用户数 | 微服务名称 | 非信创单节点配置推荐 | 信创单节点配置推荐 |
---|---|---|---|
200以下 | 全文检索 | CPU8核以上/内存16G以上 | CPU12核以上/内存20G以上 |
200~500 | 全文检索 | CPU8核以上/内存16G以上 | CPU12核以上/内存20G以上 |
500~1000 | 全文检索 | CPU8核以上/内存16G以上 | CPU12核以上/内存20G以上 |
1000~3000 | 全文检索 | CPU16核以上/内存24G以上 | CPU20核以上/内存32G以上 |
3000~5000 | 全文检索 | CPU16核以上/内存32G以上 | CPU20核以上/内存48G以上 |
5000~10000 | 全文检索(建议集群) | CPU16核以上/内存32G以上 | CPU20核以上/内存48G以上 |
# 单机部署
# 安装
- 从商务网盘下载信创部署包,上传至服务器解压,并将Search目录拷贝到自定义的应用部署路径,如
/Seeyon/A8N/Search
- 上传openjdk到服务器,如
/Seeyon/A8N/jdk
jdk版本参考:https://open.seeyoncloud.com/v5doc/142/189.html
x86架构可以直接使用安装包下的 java/jdk64
,其他架构服务器,请联系对应系统厂商提供或官网下载
# 配置
# jvm配置
修改配置文件Search/config/jvm.properties
中的search_java
为实际jdk路径,如下:
vim Search/config/jvm.properties
search_java="/Seeyon/A8N/jdk/bin/java"
searchservice_opts="-server -Xms4G -Xmx4G -XX:MaxGCPauseMillis=1000 -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:logs/gc.log -Djava.net.preferIPv4Stack=true"
注意: 建议不要把jdk或全文检索部署到/root或者其子目录下(操作不当会影响全文检索服务启动) 修改search_java
路径时,配置的值必须带双引号
# 全文检索服务的参数配置
- 登录系统管理员账号,进入"全文检索设置"界面,查看并记录下服务注册码。
- 参数配置文件:
Search/config/application.properties
,注意修改后文件格式应为UTF-8编码。
server.ip:全文检索服务器的 ip 地址,需要设置实际ip,如10.5.5.160 a8.server.url:协同服务的访问地址,注意带应用上下文/seeyon regsit.code: 注册码,需要与系统管理员账号中的服务注册码保持一致 server.port:全文检索服务的端口,默认9700,如果是分离部署需要开放端口让协同应用服务器可以访问 path_data:索引数据目录,默认是../base/data(即{全文检索安装目录}\ES\base\data),如需修改需要设置绝对路径(不建议放在挂载盘上)
# 索引数据迁移
由 8.0 以后的老版本升级到 8.2 版本的情况下,将升级前的全文检索服务的索引数据目录复制移动到新安装的全文检索服务的数据目录位置,这样才可以在启动全文检索服务以后正常使用历史索引数据。
全文检索索引数据目录默认路径为 Search/ES/base/data,如果自定义了索引数据目录,则参看12.2.1节配置说明中的 path_data 配置项的值对应的路径,如果配置的相对路径,则是指相对于 Search/ES/elasticsearch 目录,例如 ../base/data 对应的路径是 Search/ES/base/data。
# 协同服务的参数配置
使用部署包V5/ApacheJetspeed/conf/SeeyonConfig.sh启动协同的配置工具(需要图形界面):
修改"插件参数设置"中的index.xxx的参数,说明如下(未描述的不需要修改):
index.a8_to_search:协同提供给全文检索服务的端口,需要对全文检索服务器放开
index.index_a8Ip:协同提供给全文检索的ip地址,需要全文检索服务可以访问此ip
index.search_to_a8:协同提供给全文检索服务的端口,需要对全文检索服务器放开
# 系统分区路径
配置系统分区中的"全文检索网络映射路径"。该路径配置的为"分区路径"目录在全文检索服务器上的路径。若"分区路径"的目录非全文检索服务器上的磁盘,则需将对应的磁盘挂载至全文检索服务器,并设置挂载后的目录。
此配置需要配置全文检索服务器上能够访问到upload的路径!具体操作如下 1、如果全文检索服务和协同系统分区在同一磁盘,直接配置upload的绝对路径即可。 2、如果是如果是分离部署,需要将协同系统分区所在磁盘阵列挂载到全文检索服务器(推荐)或者将协同系统所在的分区文件夹进行网络> 共享后配置挂载后或者共享后的路径, 如SMB协议: \\IP地址\共享名,或使用NFS协议
# NFS挂载命令
mount -t nfs -o sync,noac 附件服务器IP:NFS共享路径 /mnt/upload
用root用户,编辑 vi /etc/fstab, 在最后面加入:
附件服务器IP:NFS共享路径 /mnt/upload nfs sync,noac 0 0
注意事项: 1、全文检索服务启动时,默认需要占用 16161 和 1099 两个端口,如果端口已被其它程序或者服务进程占用(注意避免和文件预览服 务 officetrans 进程的端口冲突!),请在全文检索服务配置文件 config/application.properties 中配置为其他可用的端口,无对应配置项表示使用默认端口,以下为配置示例: activemq.port=16161 activemq.rmi.port=1099 2、全文检索服务器需要对 OA 服务器开放 activemq.port=16161 端口或其对应的其它自定义端口!
# 服务启动/停止
使用Search下的startup.sh启动服务,shutdown.sh停止服务。
# 索引重建
全文检索8.2版本针对检索匹配效果做了优化,如果不需要使用下面图示新特性的情况下,不需要执行本章节索引重建操作:
图 全文检索三种匹配模式切换
全文检索服务安装程序提供了重建索引工具,位于安装目录下的 es-upgrade 文件夹下。
# 工具使用说明
(1) 第一步,启动运行升级工具
进入全文检索服务安装目录下的es-upgrade 文件夹下,Windows 双击运行启动脚本 startup.bat,linux 系统下运行 startup.sh 脚本。启动后的升级程序界面如下:
Windows系统启动后界面
Linux系统启动界面
启动后的界面为升级配置界面,具体说明请参照升级配置说明。
(2) 第二步,环境检查
完成第一步启动界面的相关配置后,点击【下一步】按钮,进入到升级环境检查界面:
点击【下一步】,执行当前界面的升级环境检查。根据检查结果的处理提示,进行相应问题的处理后,接着点击【下一步】继续环境检查,直到所有的检查项都通过,如下:
(3) 第三步,索引重建
在完成上一步【环境检测】处理后,进行【下一步】操作,进入当前的索引重建界面,点击【下一步】,开始索引重建处理,直到处理完成:
重建索引完成后,点击【完成】按钮,结束升级程序即可。然后正常进行索引服务的启动即可进行全文检索服务的检索验证和使用。
# 脚本工具
对于不支持可视化的Linux系统,提供了shell版本的升级脚本 es-upgrade.sh,位于全文检索服务安装根目录下的es-upgrade 目录下。
在登录Linux系统后,进入es-upgrade 目录下,编辑脚本需要的配置文件 es-upgrade.properties,添加或者修改相应的配置项,如下图,各配置项对应的说明,请参照升级配置项说明
在当前目录下运行 es-upgrade.sh 脚本文件,直到命令行提示索引重建完成,过程中检测到正在运行的elasticsearch服务,提示关闭ES进程,请选择是(y):
# 配置说明
- ES启动用户名
Linux系统下需要的配置项,Linux系统用户名,默认为es_search,不允许修改。用于启动elasticsearch服务,因为elasticsearch本身的安全机制的限制,不允许直接使用root用户启动。
- ES启动用户组
Linux系统下需要的配置项,Linux系统用户名所属用户组,默认为es_search,不允许修改。
- ES路径
新安装的8.2版本的全文检索服务的ES部署路径,位于全文检索服务安装目录下的 ES/elasticsearch,请选择到该文件夹。
# 集群部署
# 概要说明
如果是首次使用全文检索,首先正常部署单机全文检索,正常配置,并且测试能够正常使用(新发协同能够检索到),如果是已有全文检索则保证现有节点功能正常,新发数据能正常检索;
# 系统配置
部署ES前需要对操作系统配置进行调整:
- 调整最大文件描述符和最大进程数限制:
vim /etc/security/limits.conf
es_search - nofile 65535
es_search - nproc 4096
- 禁用swap
swapoff -a
- 调整可创建的最大虚拟内存区域的数量
vim /etc/sysctl.conf
vm.max_map_count=262144
# 部署配置(至少3个节点才能满足高可用)
**第一步:**停止全文检索服务后,复制现有全文检索作为集群节点二、节点三。
注意:
- 复制时注意全文检索已经停止
- 启动前,保证全文检索目录下Searchservice/ES/base数据一致,否则可能导致集群创建失败
**第二步:**需修改每个节点配置如下: Searchservice\ES\elasticsearch\config\elasticsearch.yml 见模板:
#节点 1 的配置信息:
#集群名称,节点之间要保持一致
cluster.name: es-cluster
path.data: ../base/data
#节点名称,集群内要唯一
node.name: node1
node.master: true
node.data: true
#ip 地址
network.host: 192.168.0.202
#http 端口
http.port: 9201
#tcp 监听端口
transport.tcp.port: 9301
discovery.seed_hosts: ["192.168.0.202:9301", "192.168.0.202:9302", "192.168.0.202:9303"]
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
#集群内的可以被选为主节点的节点列表
cluster.initial_master_nodes: ["node1", "node2", "node3"]
#跨域配置
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.ml.enabled: false
参数说明(其余未说明的无需修改,参照上面配置模板):
- cluster.name: 填写集群的名称,需要与config/application.properties 中保持一致
- node.name: 节点名称,每一个节点名称不能一样,例如,节点1填写:node-1001,节点3填写:node-1002
- network.host: 当前节点所在服务器ip
- discovery.seed_hosts: 集群中每个ES的地址
- cluster.initial_master_nodes: 集群的所有node
**第三步:**修改Searchservice\search\searchservice\config\application.properties 中下列配置项
#Tue Dec 17 15:51:42 CST 2019
#Tue Dec 17 15:51:42 CST 2019
##1.微服务配置项 ##
#{text} 服务ID readOnly
server.id=INDEX_SERVICE
#{text} 服务名称 readOnly
server.name=全文检索
#{text} 全文检索服务器IP
server.ip=10.3.11.47
#{text} A8访问地址
a8.server.url=http://10.3.11.47/seeyon
#{text} 全文检索配置中心注册码
regist.code=7d3b6f33-1063-4f26-a17e-f82bd03be411
##2.全文检索配置项##
#{text} 服务上下文路径 readOnly
server.servlet.context-path=/index
#{text} 服务监听端口 readOnly
server.port=9700
#{text} 索引数据目录 readOnly
path_data=../base/data
#{text} ES 集群IP地址,默认不开启配置项,集群模式情况下展开 readOnly
es_ips=192.168.0.202,192.168.0.202,192.168.0.202
#{text} ES 集群端口,默认 9200 readOnly
es_ports=9201,9202,9203
#{text} ES 集群端口,默认 9300 readOnly
es_ports_search=9301,9302,9303
#{text} ik分词器热词请求地址白名单,不配置时不做校验 readOnly
#ik_ext_dict.request.hosts=127.0.0.1,127.0.0.1,127.0.0.1
#{text} ES 集群名,默认 elasticsearch readOnly
cluster.name=my-elasticsearch
#{text} ES 索引别名,searchservice 服务调用时使用,since v8.2 readOnly
index_lib=seeyon_es_alias
#{text} ES 索引实际名称,searchservice 请求 ES 判断是否已升级时使用,since v8.2 readOnly
index_lib_real=seeyon_es_v2
#{text} 检索时完全匹配度,大于 0 的数值,0 表示完全匹配,数值越大,完全匹配度越低 readOnly
search.matchPhrasePrefix.slop=200
## 优化配置 ##
# 禁止upload文件解析结果缓存处理 readOnly
file_cache_enable=false
# flink 运行环境并发数 readOnly
core_num=8
# flink 检索历史统计处理并发数 readOnly
flink.source.his.parallelism=8
# flink 索引保存处理并发数 readOnly
#flink.source.parallelism=8
# flink es保存索引并发 readOnly
#flink.sink.parallelism=8
## 以下配置为可选配置,服务中均有默认值,一般情况下无需打开配置 ##
# OA 连接 ActiveMQ 服务器时的超时时间 readOnly
#activemq.connectResponseTimeout=5000
# 指定在连接中缓存的会话数量大小 readOnly
#activemq.sessionCacheSize=5
# 指定在接收消息时的最长等待时间 readOnly
#activemq.receiveTimeout=5000
# activemq 监听端口 readOnly
#activemq.port=16161
# activemq 索引消息队列的未消费最大消息数目 readOnly
#activemq.queueSize.limit=1000
# activemq 索引消息队列未消费消息数目达到或者超过限制后,循环等待的时长 readOnly
#activemq.producer.sleepMilliseconds=5000
# activemq rmi 端口 readOnly
#activemq.rmi.port=1099
# 发送消息的超时时间,用于指定在发送消息时的最长等待时间 readOnly
#activemq.sendTimeout=5000
# OA服务索引重试保存任务开始执行的延时时间 readOnly
#index.redoJob.delay=18000000
# OA服务索引重试保存任务定时执行的周期 readOnly
#index.redoJob.period=18000000
# OA服务 leveldb 失效索引数据删除任务开始执行的延时时间 readOnly
#index.delExpiredJob.delay=0
# OA服务 leveldb 失效索引数据删除任务执行的周期 readOnly
#index.delExpiredJob.period=18000000
# OA服务 leveldb 索引数据的达到失效状态的时长 readOnly
#index.leveldb.expiredDuration=172800000
# OA服务向 BlockingQueue 添加消息时阻塞的最长时间,超过该时间,则放弃添加 readOnly
#index.addBlockingQueue.timeout=7200000
# AI服务 ip port http://x.x.x.x:port / http://x.x.x.x readOnly
ai.server.url = http://x.x.x.x
# 全量同步ssh通道 readOnly
ai.server.ssh.url = http://127.0.0.1:6006
# Ai服务 全量同步方式 0 走AI算法服务,1 走ssh通道 默认走ssh通道
ai.index.sync.mode = 1
# ai服务 全量同步没批条数 readOnly
ai.index.sync.datas.size = 100
#ai服务 全量同步线程数 readOnly
ai.index.sync.thread.size = 2
#ai服务 是否需要重新进行全量同步: 0 不再次进行全量同步,1 重新进行全量同步 readOnly
ai.index.again.sync = 0
# ai服务,从某条数据开始重新开始全量同步 readOnly
ai.index.again.sync.from.id = 0
#{text} 自定义分词文件的存储路径,集群情况使用,多节点需要共享该目录 readOnly
mydict_path=D:/1seeyonApp/v90_425/Seeyon/mydic
# 是否AI同步节点 readOnly
ai.isSyncNode = false
参数说明(其余参数配置参照实施手册):
以下四个配置与ES配置文件内保持一致:Searchservice\ES\elasticsearch\config\elasticsearch.yml
- es_ips= ES各个节点的ip
- es_ports= ES各个节点的端口
- es_ports_search= ES各个节点的端口
- cluster.name= ES集群名称
- 以下两个配置需要新增:
- mydict_path= 分词文件路径,多个节点需要共享同一个目录
- ai.isSyncNode = 全文检索多个节点中,只有一个节点的该配置项配置未true,其余节点均配置false。
修改好配置以后,启动进行验证,由于ES开启集群后,不能使用默认的启动脚本进行启动,开启集群后,启动顺序如下:
1、先启动原有的ES,再启动新加的节点,在Searchservice\ES\elasticsearc目录下启动所有节点的es
- windows 系统下:
.\bin\elasticsearch.bat
- Linux 系统下(使用普通用户启动,如:es_search)
# 修改ES目录属主
chown -R es_search:es_search Searchservice/ES
# 切换普通用户
su - es_search
# 进入ES/elasticsearc目录,启动启动ES
./bin/elasticsearch -d
启动后通过命令 curl —X GET http://192.168.0.202:9201/_cluster/health?pretty
查看状态
节点数必须是3个才对,status:green
2、启动全文检索
通过Searchservice/search/searchservice/startup.sh|bat
,启动所有searchservice节点,然后测试功能即可。
登录系统管理员-微服务设置-全文检索-基础设置,查看注册节点是否正确
快速跳转
