1. 概述
1.1 版本
工程版本 | 功能变更 |
---|---|
FineReport11.0 FineBI6.0 | - |
注:本文不适用于FineBI6.1,如有相关场景,请联系帆软技术支持协助。
1.2 应用场景
相比于普通单机工程,容器化部署的工程,升级和维护成本较低。
本文方案,帮助用户将原有非容器化部署的单机工程,迁移为容器化部署的单机工程。
注:全文以FineBI作为演示。FineReport迁移步骤基本一致,仅需要两个点:
1)拷贝文件时,FineReport和FineBI需要拷贝的文件不完全相同,注意文档中的表格即可。
2)使用运维平台启停容器时,FineReport关闭的是fr组件,FineBI关闭的是bi6组件。
1.3 步骤简介
序号 | 说明 | |
---|---|---|
1 了解迁移步骤 | 请务必在执行迁移前,完整阅读本节步骤简介,了解每个步骤的作用 请务必先提前确认相关兼容问题,再进行工程迁移:迁移前兼容须知 | |
2 新容器化工程准备 | 2.1 部署运维平台 | 容器化部署FineReport/FineBI,需要通过FineOps运维平台前端实现 因此用户需要先部署一个FineOps运维平台 |
2.2 部署新工程 | 迁移项目,是从原有非容器化工程,迁移到新的容器化工程 因此用户需要先通过FineOps运维平台部署一个新的容器化单机工程 | |
2.3 确认新工程版本 | 由于容器化部署的工程,一般为帆软发布的较新版本 因此用户需要先确认新工程版本,确保后续升级旧工程到同一版本 | |
2.4 关闭新工程 | 迁移时,需要将老工程的一些文件拷贝到新工程中,这个操作需要在新工程停止运行的状态下进行 因此用户要通过FineOps运维平台前端快速关闭新工程 | |
2.5 备份新工程config文件夹 | 容器化部署新工程时,会自动生成工程部署所用语句,后续运营维护时可能会需要使用/查找,在迁移过程中该语句所在文件会被覆盖 因此用户需要提前异地备份该文件所在config文件夹 | |
3 原非容器化工程准备 | 3.1 备份原工程 | 在进行工程迁移前,为避免迁移失败,导致工程文件丢失无法回退等问题,请务必对原工程进行备份后再进行后续操作 |
3.2 升级原工程 | 工程迁移必须基于同版本的工程进行 因此需要将原非容器化部署的工程升级到新工程同一版本,方可进行迁移 | |
3.3 确认原工程配置外接数据库 | 容器化项目必须配置外接库,所以要确保老工程的配置库已外接,否则无法迁移 | |
3.4 备份配置库 3.5 对接备份库 | 为了防止迁移过程中对finedb配置进行写入修改,导致老工程无法回退 因此必须要将老工程的配置库进行备份,并使老工程连接备份库 | |
3.6 确认原工程已安装插件 | 迁移时,需要将原工程的插件覆盖新工程,而运维平台对接项目时,部分功能对项目的插件有要求 因此需要先确认原工程已安装符合版本要求的插件 | |
3.7 关闭原工程 | 迁移时,需要将原工程的一些文件拷贝到新工程中,这个操作需要在原工程停止运行的状态下进行 因此用户需要手动关闭原工程 | |
4 拷贝文件 | 本节即为正式迁移操作 将原非容器化工程的必要文件,拷贝到新容器化工程中 | |
5 启动原工程 | 5.1 启动原工程 | 启动原有工程 |
5.2 对接原配置库 | 由于此时新老工程均使用了同一个finedb数据库,而每个finedb数据库只能对接一个工程,否则可能导致使用异常 因此用户需要将原工程的外接数据库修改为原配置库 | |
6 启动新工程 | 6.1 启动新工程 | 接下来的操作需要在新工程平台上执行 用户要通过FineOps运维平台前端快速启动新工程 |
6.2 重新对接运维平台 | 由于拷贝文件,导致工程唯一ID发生了变化,此时运维平台对工程的状态监控可能存在异常 因此用户需要重新对运维平台和新工程进行对接 | |
6.3 迁移新工程配置库 | 由于此时新工程使用的配置库,是原工程的备份库,可能并非容器化部署的数据库组件 因此用户需要将新工程的外接数据库迁移到容器化部署的MySQL数据库 | |
6.4 重新抽取数据 | 仅FineBI工程需要执行本节操作 工程迁移后,FineBI一般需要重新进行数据抽取,业务用户方可正常使用 因此用户需要在抽取前确认并修改数据存储路径,再执行数据抽取 | |
6.5 新工程注册 | 支持全新注册,或迁移老工程授权到新工程 |
2. 新容器化工程准备
注:建议部署新工程、老工程、运维平台所用服务器内网互通,会大幅降低迁移难度。
2.1 部署运维平台
详情请参见:部署运维平台
2.2 部署新工程
详情请参见:部署新项目
注意事项1:迁移时,需要将老工程的一些必要文件、资源拷贝到新工程中,因此必须要确保新工程磁盘空间足够大。
1)检查原非容器化工程%Tomcat_home%\webapps\webroot文件夹的大小。假设为xG。
2)在准备新工程所在服务器时,请根据原工程大小,适度扩大新工程所在服务器节点剩余磁盘空间。
建议新工程最小剩余磁盘空间大小为 max(2x , 500) G。
注意事项2:迁移后,为了确保新老工程的访问地址一致,必须确保访问路径名称一致
请在「部署新项目-项目设置」环节,确认访问路径配置。
如果老工程做了短域名/IP访问,请将访问路径置空
如果老工程修改了访问路径,即http://IP:port/webroot/decision中的webroot被修改为了其他词,请将访问路径修改为对应词
注意事项3:迁移时,需要将老工程的一些文件拷贝到新工程中,因此需要记录下新工程存放文件的外挂目录位置。
请在「部署新项目-节点配置」环节,记录下主应用节点的挂载路径。
注意事项4:部署新工程时,会同时部署一些必要组件,建议记录下组件的信息,方便在后续维护过程中查看。
请在「部署新项目-部署列表」环节,记录下MySQL、ElasticSearch组件的相关信息。
由于组件密码随机生成,请务!必!修改组件的密码,方便后续使用。
2.3 确认新工程版本
1)管理员登录FineOps运维平台,在「运维管理>项目管理」中,可点击访问新工程。
2)管理员登录新工程,点击「管理系统>注册管理>版本信息」,可查看新容器化工程的小版本号(精确到JAR包日期)。
2.4 关闭新工程
1)管理员登录运维平台,选择新工程,点击「维护>组件管理」。
2)找到bi6/fr组件,点击「停止」按钮,即可关闭新工程。
2.5 备份新工程config文件夹
1)使用终端设备访问新容器化工程所在服务器,进入2.2节记录的挂载路径/fanruanxxx/bi目录下。
注:如果忘记了新工程的挂载路径,可通过导出项目部署信息查看。
2)找到config文件夹,文件夹中存放的yaml文件有着工程部署所用语句,请务必异地备份。
3. 原非容器化工程准备
3.1 备份原工程
详情请参见 工程备份还原方案 3.1节,对工程进行备份。
3.2 升级原工程
1)获取JAR包
付费用户请联系帆软技术支持,获取2.3节新工程同一小版本的工程JAR包(精确到JAR包日期)。
技术支持联系方式:前往「服务」,选择「在线支持」。
2)升级原工程
请参考「FineBI小版本升级 / FineReport小版本升级」文档升级工程至指定版本。
3.3 确认配置外接库
管理员登录原工程,点击「管理系统>系统管理>常规」,检查外接数据库是否已配置。
如显示「已配置」,说明工程已配置外接配置库,点击查看并记录下该外接数据库位置信息,即可进入下一步。
如显示「待配置」,请先为该非容器化工程配置一个外接配置库。
请在配置时勾选「迁移数据至要启用的数据库」
可使用2.2节的MySQL组件作为外接配置库。请自行新增表空间,请勿使用原有表空间!表空间要求可参考:帆软对接MySQL配置库
可自行准备配置库,建议优先考虑MySQL8,请确保新老工程所在服务器与该数据库所在服务器互通
3.4 备份配置库
请使用第三方数据库管理工具,访问老工程的配置库。
对配置库表空间进行备份,假设原配置库的表空间名称为finedb,备份表空间的名称为finedbbak。
3.5 对接备份库
管理员登录原工程,点击「管理系统>系统管理>常规」,点击外接数据库「已配置」
修改数据库名称为备份表空间名称
输入数据库用户密码
请勿勾选「迁移数据至要启用的数据库」
点击「启用新数据库」即可。
3.6 确认已安装插件
管理员登录原工程,点击「管理系统>插件管理」。
1)必须确认安装以下插件,并升级至最新:系统运维、资源调度熔断插件。
2)建议升级其他已安装插件至最新版本。
3.7 关闭原工程
请参考 关闭或重启FineBI工程 / 关闭或重启FineReport工程 文档,关闭原非容器化部署的工程。
4. 拷贝文件
1)请提前检查原非容器化部署的工程,是否配置了外挂目录、是否配置共享文件服务器,确保拷贝到正确的文件。
2)新容器化工程外挂文件所在位置,为2.2节记录的挂载路径。如果忘记了新工程的挂载路径,可通过导出项目部署信息查看。
3)将以下文件,从原非容器化部署的工程,拷贝到新容器化部署的工程中:
注1:请勿直接 docker cp 整个webroot文件夹到容器,会导致功能异常。
注2:请勿直接拷贝整个webroot文件夹到容器化工程的外挂目录,部分文件不可以被覆盖。
注2:请勿使用3.1节备份的文件,而是使用工程最终的文件进行拷贝操作。
FineBI需要拷贝的文件
原非容器化工程目录 | 新容器化工程外挂目录 | 说明 | ||
---|---|---|---|---|
%Tomcat_HOME%/logs | %BI_HOME%/fanruanxxx/bi6/tomcat_logs | 作用:Tomcat通用日志位置 是否必须拷贝:用户自行决定,Tomcat历史访问日志,可不拷贝 | ||
%Tomcat_HOME%/webapps/webroot/backup | %BI_HOME%/fanruanxxx/bi6/backup | 作用:工程历史备份文件 是否必须拷贝:用户自行决定,可存储在原始的目录下备份,可不拷贝 | ||
%Tomcat_HOME%/webapps/webroot/bi-data | %BI_HOME%/fanruanxxx/bi6/bi-data | 作用:FineBI抽取数据 是否必须拷贝:用户自行决定 如果不拷贝,在新工程启动后需要全局更新,重新抽取数据 如果拷贝,该文件夹中文件数量很多,拷贝耗时很久,请耐心等待 | ||
%Tomcat_HOME%/webapps/webroot/logs | %BI_HOME%/fanruanxxx/bi6/logs | 作用:swift日志 是否必须拷贝:用户自行决定 如果不拷贝,会丢失工程历史操作日志(即logdb),「管理系统>平台日志」功能无数据 如对历史使用情况无要求,无需拷贝 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/temp_attach | %BI_HOME%/fanruanxxx/bi6/assets/temp_attach | 作用:FineBI数据表相关信息 是否必须拷贝:必须拷贝 该文件夹中存放着工程Excel原始文件信息,如不拷贝该文件夹会导致原始Excel丢失 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/vcs | %BI_HOME%/fanruanxxx/bi6/assets/vcs | 作用:FineReport模板备份文件 是否必须拷贝:用户自行决定 如果工程未使用FineReport模板,或不需要回退历史开发的FineReport模板,则无需拷贝 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/其他文件 | %BI_HOME%/fanruanxxx/bi6/assets/其他文件 | 作用:通用的共享持久化目录 是否必须拷贝:必须拷贝 工程正常运行所需要的文件,如不拷贝会影响工程正常使用 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/classes | %BI_HOME%/fanruanxxx/bi6/classes | 作用:工程调用的默认和自定义class文件 是否必须拷贝:必须拷贝 有可能存在自定义的class文件,如不拷贝会影响工程正常使用 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/config | %BI_HOME%/fanruanxxx/bi6/config | 作用:配置库相关文件 是否必须拷贝:必须拷贝 平台调用的配置库(finedb),如不拷贝会影响工程正常使用 | ||
找到以下两个目录: %Tomcat_HOME%/webapps/webroot/WEB-INF/lib %Tomcat_HOME%/webapps/webroot/WEB-INF/customLib 以下为工程自带JAR,无需拷贝,除此之外的用户自定义JAR均需拷贝:
| %BI_HOME%/fanruanxxx/bi6/customlib | 作用:工程定制/外部引入的JAR包 是否必须拷贝:必须拷贝,如不拷贝会影响模板访问 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/dpworks | %BI_HOME%/fanruanxxx/bi6/dpworks | 作用:FineDataLink任务相关的配置文件 是否必须拷贝:必须拷贝,如不拷贝会影响FineDataLink任务使用 (如不存在该文件夹,说明工程没有使用FDL相关功能,略过) | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/plugins | %BI_HOME%/fanruanxxx/bi6/plugins | 作用:插件相关文件 是否必须拷贝:必须拷贝,如不拷贝会影响插件相关功能的实现。 请先删除文件夹中原有文件,再将老工程插件包拷贝进来,否则同一个插件可能共存多个版本,导致异常。 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/reportlets | %BI_HOME%/fanruanxxx/bi6/reportlets | 作用:FineReport模板存放目录 是否必须拷贝:用户自行决定 如果工程未使用FineReport模板,则无需拷贝 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/schedule | %BI_HOME%/fanruanxxx/bi6/schedule | 作用:定时调度生成的文件 是否必须拷贝:用户自行决定 如果不拷贝,定时任务挂载到决策平台的结果报表无法访问 | ||
任何其他需要保留的资源文件 | %BI_HOME%/fanruanxxx/bi6/help | 作用:外部资源文件 是否必须拷贝:用户自行决定 运维平台部署的工程,不支持直接在/挂载目录/fanruanxxx/bi6下新建文件夹,会因为未持久化而丢失 对于老工程下,任何其他需要保留的资源文件,可考虑存放到help文件夹下(请注意,在工程迁移成功后,相关资源引用地址,也需要自行手动更换) |
FineReport需要拷贝的文件
原非容器化工程目录 | 新容器化工程外挂目录 | 说明 | ||
---|---|---|---|---|
%Tomcat_HOME%/logs | %FR_HOME%/fanruanxxx/fr/tomcat_logs | 作用:Tomcat通用日志位置 是否必须拷贝:用户自行决定,Tomcat历史访问日志,可不拷贝 | ||
%Tomcat_HOME%/webapps/webroot/backup | %FR_HOME%/fanruanxxx/fr/backup | 作用:工程历史备份文件 是否必须拷贝:用户自行决定,可存储在原始的目录下备份,可不拷贝 | ||
%Tomcat_HOME%/webapps/webroot/logs | %FR_HOME%/fanruanxxx/fr/logs | 作用:swift日志 是否必须拷贝:用户自行决定 如果不拷贝,会丢失工程历史操作日志(即logdb),「管理系统>平台日志」功能无数据 如对历史使用情况无要求,无需拷贝 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/temp_attach | %FR_HOME%/fanruanxxx/fr/assets/temp_attach | 作用:读写缓存存储路径 是否必须拷贝:必须拷贝 该文件夹中存放着工程读写(图片)缓存,不拷贝可能会导致模板设置的背景图片预览为空 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/vcs | %FR_HOME%/fanruanxxx/fr/assets/vcs | 作用:FineReport模板备份文件 是否必须拷贝:用户自行决定 如果工程不需要回退历史开发的FineReport模板,则无需拷贝 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/assets/其他文件 | %FR_HOME%/fanruanxxx/fr/assets/其他文件 | 作用:通用的共享持久化目录 是否必须拷贝:必须拷贝 工程正常运行所需要的文件,如不拷贝会影响工程正常使用 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/classes | %FR_HOME%/fanruanxxx/fr/classes | 作用:工程调用的默认和自定义class文件 是否必须拷贝:必须拷贝 有可能存在自定义的class文件,如不拷贝会影响工程正常使用 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/config | %FR_HOME%/fanruanxxx/fr/config | 作用:配置库相关文件 是否必须拷贝:必须拷贝 平台调用的配置库(finedb),如不拷贝会影响工程正常使用 | ||
找到以下两个目录: %Tomcat_HOME%/webapps/webroot/WEB-INF/lib %Tomcat_HOME%/webapps/webroot/WEB-INF/customLib 以下为工程自带JAR,无需拷贝,除此之外的用户自定义JAR均需拷贝:
| %FR_HOME%/fanruanxxx/fr/customlib | 作用:工程定制/外部引入的JAR包 是否必须拷贝:必须拷贝,如不拷贝会影响模板访问 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/dpworks | %FR_HOME%/fanruanxxx/fr/dpworks | 作用:FineDataLink任务相关的配置文件 是否必须拷贝:必须拷贝,如不拷贝会影响FineDataLink任务使用 (如不存在该文件夹,说明工程没有使用FDL相关功能,略过) | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/plugins | %FR_HOME%/fanruanxxx/fr/plugins | 作用:插件相关文件 是否必须拷贝:必须拷贝,如不拷贝会影响插件相关功能的实现。 请先删除文件夹中原有文件,再将老工程插件包拷贝进来,否则同一个插件可能共存多个版本,导致异常。 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/reportlets | %FR_HOME%/fanruanxxx/fr/reportlets | 作用:FineReport模板存放目录 是否必须拷贝:必须拷贝,如不拷贝会导致工程所有模板丢失 | ||
%Tomcat_HOME%/webapps/webroot/WEB-INF/schedule | %FR_HOME%/fanruanxxx/fr/schedule | 作用:定时调度生成的文件 是否必须拷贝:用户自行决定 如果不拷贝,定时任务挂载到决策平台的结果报表无法访问 | ||
任何其他需要保留的资源文件 | %FR_HOME%/fanruanxxx/fr/help | 作用:外部资源文件 是否必须拷贝:用户自行决定 运维平台部署的工程,不支持直接在/挂载目录/fanruanxxx/bi6下新建文件夹,会因为未持久化而丢失 对于原工程下,任何其他需要保留的资源文件,可考虑存放到help文件夹下(请注意,在工程迁移成功后,相关资源引用地址,也需要自行手动更换) |
5. 启动原非容器化工程
5.1 启动原工程
参考 关闭或重启FineBI工程 / 关闭或重启FineReport工程 文档,启动原非容器化部署的工程。
5.2 对接原配置库
3.5节,原工程对接了备份配置库,此时需要将其切换为原配置库,确保新老工程不会同时对接一个配置库。
管理员登录原工程,点击「管理系统>系统管理>常规」,点击外接数据库「已配置」
修改数据库名称为原表空间名称
输入数据库用户密码
请勿勾选「迁移数据至要启用的数据库」
点击「启用新数据库」即可。
6. 启动新容器化工程
6.1 启动新工程
1)管理员登录运维平台,选择新工程,点击「维护>组件管理」。
2)找到bi6/fr组件,点击「启动」按钮,即可启动新工程。如下图所示:
6.2 重新对接运维平台
1)取消运维平台对接
管理员登录运维平台,选择新工程,点击「删除」,将新工程从运维平台管理列表中删除。
此处的删除,仅代表运维平台与新工程的对接中断,不代表新工程直接被铲除。
2)工程发起对接请求
管理员登录新工程,点击「管理系统>系统管理>常规」。
在「运维平台连接设置」中,输入「运维平台地址」,点击「保存」。
运维平台地址形如:http://IP:端口号/ops/decision
3)运维平台确认对接
请在五分钟内,使用管理员账号登录运维平台。运维平台提示「发现新项目」。
点击「添加项目」,设置「项目名称」,点击「确认」即可。
6.3 迁移新工程配置库
如果3.4节备份配置库,所使用的并非2.2节部署新项目时所部署的MySQL组件,请务必执行本节操作。
1)管理员登录运维平台,选择新工程,点击「维护>集群管理」,对「外接配置库」进行配置。
2)输入相关信息并迁移
数据库类型:选择「mysql」
驱动:无需调整,选择「com.mysql.jdbc.Driver」即可
数据库名称、主机、端口、用户名、密码:填写2.2节部署新项目时,记录的MySQL数据库信息。(如果忘记了,可通过2.5节留存的部署信息查找)
数据连接URL:一般无需手动修改,会由其他配置和预设参数共同组成
请勾选「迁移数据至要启用的数据库」
6.4 重新抽取数据
注:仅FineBI工程需要执行本节操作。
1)管理员登录新工程,点击「公共数据>全局更新」,即可看到数据的存储路径。
2)请确保修改为新工程容器内数据存放路径:/usr/local/tomcat/webapps/webroot/bi-data/spider/db,点击「确定」,更改成功。
3)再次访问「公共数据>全局更新」,执行「立即全局更新」,即可抽取最新数据,并存放到正确的存储路径中。
6.5 新工程注册
全新注册:容器化工程请使用 注册新项目 方式进行注册。
授权迁移:用户也可弃用原工程,将原工程的授权迁移到新工程。
1)参考 授权迁移插件 的使用步骤,向商务索要一个授权迁移插件,销毁原非容器化工程的旧授权。
2)找到原非容器化工程%BI_HOME%/webroot/WEB-INF/resources文件夹下的销毁凭证。
3)向商务索要注册镜像文件fanruan_license_server.tar,并参考 注册新项目 进行授权。
请在邮件中附上第三步获取的销毁凭证。并注明是「非容器化工程迁移容器化工程」