當前為5.1版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

国产专用机部署手册

1. 概述

1.1 国产化专用机

1.1.1 原理

专用机服务器系统不允许动态生成可执行文件,可执行文件包括:/usr/bin/ping这样的二进制 ELF 文件、动态库 so 文件、内核模块 ko 文件、shell 脚本、python 脚本等,此限制为内核(系统级)内置,无法去掉,且最终上线运行也需要满足此要求。

1.1.2 限制

限制安装其他程序,限制修改系统文件(如环境变量、sh文件等),限制 yum 等外部安装命令,限制脚本运行。

1.1.3 判定方法

用户一般知道自己的环境是否为专用机环境,一般关键字中有专用机、涉密机、可信软件、授权软件、用 rpm 安装、deb 安装等,都是严格的专用机环境。

1.2 帆软被限制的原因

1.2.1 原理

帆软部署的时候,会从fine-core-10.0.jar中,com/fr/jvm/assist里解压出 FineAssist 和 FinePrivacy 文件,解压到中间件的 temp 文件夹中临时加载对应架构的 so 文件,而专用机检测到不安全的程序,会禁止其运行,导致部署失败。因此,我们需要将对应架构的 Assist 和 Privacy 文件,做成安装包,通过专用机的授权软件安装好,系统才允许运行。这时将部署时的解压运行的方式,改为指定路径运行的方式,方可部署成功。

1.2.2 被限制的组件

FineAssist/FinePrivacy:部署 —— 部署失败,报错 tools.jar 不匹配,需要用到本文的方案。

sqlite:内置 FRDemo 数据 —— 无法预览 FRDemo 数据集的模板,后续考虑将国产化部署包中的 Demo 模板转为内置数据集模板。

j2v8:图表引擎 —— 暂无影响。

2. 确认是否为专用机

2.1 应用场景

排查和确认是否因专用机的禁用而导致部署失败,客户不清楚系统的具体情况时,可以用下述方案自主排查。

注:如果客户确认有安全管理限制,可以跳过此步骤。

2.2 确认方法

2.2.1 查看temp目录

查看部署过程中(保证进程还在),中间件的 temp 目录下,是否有 FineAssist_xxx.so 文件(说明解压出了 so 仍在加载或试图加载中)。

1623065279516326.png

2.2.2 下载工具包

下载:国产化排查工具.zip,放到客户任一目录下,解压后得到下列文件。

1623065385658548.png

2.3 确定

运行FinePrivacyTest.class文件,测试对应架构的FinePrivacy_xxx.so文件。

java FinePrivacyTest /opt/TongWeb/temp/国产化/FinePrivacy_x86_64.so 

1623065427243254.png

如果有无法加载so文件的报错,则可以确认该系统禁用了外来的so文件运行,如果没有允许执行,执行Test代码后正常返回命令行。

3. 环境检查

3.1 架构确认

目前设计器只支持 ARM 和 x86 架构的:

uname -a   //Linux架构查询

3.2 JDK 版本

java -version

确认 JDK 版本,一般国产化环境都使用自带的 openJDK ,该 JDK 需要满足帆软部署的 JDK 1.8 限制。

3.3 tools.jar 

确认客户 tools.jar ,如果客户的 openJDK 没有 tools.jar ,需要去 JDK 官网找到相同版本的 JDK 安装包,在本地安装后取用其 tools.jar 。

3.4 产品版本

需要 2020 年 11 月份以后的 JAR 才支持专用机的部署,官网部署包有一个 persist 2020.10.30 的版本也是适配的。

4. 工程部署

4.1 so文件打包安装

4.1.1 安装包获取

我们提供包含 x86 和 arm 架构的 rpm 安装包,可联系技术支持获取。技术支持联系方式:QQ「800049425」、电话「400-811-8890」。

4.1.2 安装过程

每家系统的安全管理软件画风不同,但原理一致,一般把安装包发给客户,客户可自行安装。附上一个安装实例图,以便大家理解。

1)打开软件,选中「可信软件管理」,如下图所示:

1623065803816021.png

2)添加可信软件包-找到提供的 rpm 进行安装。如下图所示:

1623065868932958.png

3)安装过程中可能报错没有自签信息,这个在安装时可以手动填写的,若没有特别要求,可填写任意值。如下图所示:

1623065945695180.png

4)安装后可以看到该 rpm 已经在白名单中,重点关注其安装路径,后续要用。

注:信任文件安装后,不要移动位置,有些环境会根据路径检测是否信任,保证初始安装位置不变。

1623065985924319.png

4.2 部署中间件

一般国产化环境都是自带安全中间件,客户会让中间件厂商提前安装好中间件,这样我们可以直接使用和修改配置。如果没有自带的中间件,还需要我们提供,中间件的 catalina.sh 和 startup.sh 都是不可执行文件,因此只能使用部署包部署,提前写好配置。

4.2.1 参数配置

给中间件配置启动参数,参数的配置文件和中间件的 jvm 参数配置文件一致,参数的位置和xmx、xms等参数保持一致即可。

如 Tomcat 的catalina.sh,tongweb 的external.vmoption,apusic的vm.option。

-Dfineassist=/opt/assist/FineAssist.xxx#需要填入可信软件安装后的路径,和对应架构的完整名字FineAssist_x86_64.so
-Dfineassist.copy=disable
#无需修改
-Dfineprivacy=/opt/assist/FinePrivacy.xxx
#同上
-Dfineprivacy.copy=disable
#同上

注:参数中 D 为大写,其他全部小写,而 so 文件名称中的 F、A、P 均为大写;参数的设置位置有要求,需要将以上参数设置到 #jvm_options 以下然后 #server_options 以上的位置,如果写在#java_home后面就被当 java_home 给加载了,导致服务器虽然可以起来,但是访问系统地址出现 tools.jar 问题。

4.2.2 确认参数

上述操作做完以后正常部署,启动中间件,在启动日志中能看到 jvm 参数是否生效。

1623066281745041.png

或者ps -ef|grep apusic(或当前中间件)可以查看jvm参数情况。

1623066325199092.png

注:参数生效是一个必要条件。

4.3 常见报错

4.3.1 tools.jar不匹配

一般前台都是报错tools.jar不匹配,后台可以看到Fine assist start failed的报错。

1623066392951008.png

1623066426328851.png

1623066439285508.png

则需要查看产品 JAR 包版本是否为 2020-11-02 及以后的,可能环境有缓存或者其他应用路径,实际运行的是其他路径下的webroot等。

如果看到copy fineassist has be disable,说明成功阻止了 fineassist 拷贝;如果看到 Fine assist start successfully ,说明成功地加载到了信任软件中的 so 文件。

后续的部署则转变为常规部署,如果报错则正常排查即可。

4.3.2 fontconfig相关问题

使用openJDK,所以可能会报错 fontconfig 相关问题,处理方案如下:

1)安装 fontconfig,百度查找 fontconfig 的 rpm 安装包,放到专用机安装软件里安装。

2)需要把java/jdk/jre/lib下的 font 字体包和 fontconfig 的依赖拷贝到/tomcat-linux使用的 jre 的对应目录下。

1623066542915335.png

5. 设计器安装

5.1 打包安装

我们提供包含 x86 和 arm 架构的 rpm 安装包,可联系技术支持获取。技术支持联系方式:QQ「800049425」、电话「400-811-8890」。安装过程同 4.1 节步骤。

常规的 Linux 设计器安装文件也是 sh 文件,专用机需要打包成 rpm 来安装,常规 ARM 和 x86 设计器,可联系技术支持获取。技术支持联系方式:QQ「800049425」、电话「400-811-8890」。

注1:设计器中的地图 json 和模板文件,需要安装后手动拷贝进去(这些文件影响安装不影响使用)。

注2:AMD 的环境可以使用 FRDemo 库,其他的还没有适配。

5.2 参数配置

安装好以后需要在FineBI/bin/designer.vmoptions里添加参数配置,如下:

-Dfineassist=/opt/assist/FineAssist.xxx
#需要填入可信软件安装后的路径,和对应架构的完整名字FineAssist_x86_64.so
-Dfineassist.copy=disable
#无需修改
-Dfineprivacy=/opt/assist/FinePrivacy.xxx
#同上
-Dfineprivacy.copy=disable
#同上

注:参数中 D 为大写,其他全部小写,而 so 文件名称中的 F、A、P 均为大写。

5.3 常见报错

安装好后只出现启动加载,随后闪退,原因是 fine 参数添加错误,可以根据 fanruan.log 启动日志,或者ps -ef|grep java来查看启动参数的应用情况。

6. 注意事项

6.1 服务器部署包

服务器部署包部署时,因为部署包自带 tools.jar 和 JDK ,可以将部署包整个 Tomcat 打成 rpm 文件装入客户的专用机。

由于安装后不允许再次修改 catalina.sh(修改后会失去信任,无法执行),所以需要提前把各种配置参数写入 catalina.sh中。 

1623066866855801.png

注1:JAVA_HOME已经定义,如果客户希望引用自己的JDK,可以删掉两条 export 参数,并且将 CATALINA_HOME/lib 下的 tools.jar 更换为客户的 tools.jar。

注2:专用机部署需要的两个 so 文件已经放置到对应位置,并配置好了参数,部署前可自由调整文件在 Tomcat 里的位置,参数对应调整即可。



附件列表


主題: 部署集成
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 评价文档,奖励 1 ~ 100 随机 F 豆!