HZERO PaaS平台组装笔记(七)改装标准版-重新选配初始化
本文是H-ZERO 安装部署笔记,出于学习研究目的,刚开始按照开放平台->社区与合作伙伴->文档中心- 《HZERO 轻量版》技术文档进行部署实践,选择快速开始->微服务版进行安装; 但作为初学者, 水平太低, 由于轻量版合并了多个微服务,要改各种配置,过程中遇到多个困难,没有搞定🙂, 后来按照 开放平台->社区与合作伙伴->文档中心- 《HZERO汉得企业级PaaS平台》 技术文档进行 标准版(没有合并微服务的版本) 安装部署实践 ,安装部署成功了。本系列文章记录了这个过程。
需要说明的是,如果不是出于学习研究目的,是不需要这么麻烦的,技术中心有发发行版,可以一键安装,一小时不到可以全部安装完成。
本文是出于学习研究目的,按照技术文档从制品库里面拿各种零件进行组装,所以过程会比较繁琐,供学习研究参考。
实践系统环境:windows自带的Linux虚拟机 WSL ,linux版本在微软应用商店选择 Ubuntu22.04
七、放弃Lite版-改装标准版-重新选配初始化
Lite版因为服务合并了,跟标准文档说明相比,估计有很多配置要改,作为初学者,不熟悉,感觉搞不定了;是否可以考虑没有合并服务的标准版?
我们原来使用合并的hzero-lite服务是因为听说每个服务都要2G内存,如果不合并,基础服务就要有9+5 =14个,就要28G内存了,再加上飞搭3个就要34G内存了。个人笔记本跑不动,但实际我们测试下来,个人开发测试用的话,这些服务平均每个分配500M足够了(有的多一些,比如hzero-admin 给500M够了,可以稳定不掉线,有的少一些 ,比如注册中心300M够了,也可以稳定不掉线);
所以即使我们不合并服务,开发平台高低代码融合版也就14+3=17个服务,8.5G 内存就够了。没必要用Lite合并服务版;毕竟没有合并的版本已经久经沙场,比较稳定了。
接下来我打算弃用Lite合并服务,直接单独安装那9个服务了;
1、从选配开始,把注册中心、license服务、平台治理(admin)、网关、接口平台、以及lite合并的9个服务(iam、oauth、message、platform、import、file、scheduler、swagger、report) 重新选配成一个工程。
2、把 redis缓存中内容全部清除
- 把 数据库中的三个库删除掉
- 重新初始化数据
- 重新起后台服务
- 重新替换前端工程中的字符串(参考下hzerojs 手册,把原替换脚本缺失的内容完善一下)
- 验证安装可用性;
1)重新选配
1 、把原来hzero 目录改名hzero-lite , 建立新的hzero目录,新选配的内容放入这个新的hzero目录
进入开放平台/开发者/项目中心
选择或者新建一个项目:
进入服务选配:
进入服务端选配:这里简单说明下,虽然还有另外的前端选配和移动端选配,一般都用不到到,服务选配后会自动生成前端工程,所以无需进行前端选配。
点击进入选配平台:
先建立一个父组件,H-ZERO个人学习版父组件,版本跟选择依赖的HZERO父组件保持一致,点确定计入下一步:
点击“批量添加”选择我们要的组件(14个):
确认进入下一步:
服务前缀我们还是填ps
全选13项,进入下一步:
显示我们的选配结果,点下一步:
先导出工程,再下载种子数据,其他没有用;
全部下载到本地:
下载完毕,关闭当前页面,进入下一步:下载种子数据:
到这里选配准备工作就完成了。
2)清除Redis和mysql数据
接下来我们把之前安装的数据库和redis中的数据清掉:
redis中只有db1有内容:
清空的命令:redis-cli -n 1 链接redis,选择1库,用flushdb命令清空
root@desktop-jacksen:/d02/hzero/project/ps-register# redis-cli -n 1
127.0.0.1:6379[1]> FLUSHDB
OK
127.0.0.1:6379[1]> keys *
1) “websocket:socket-nodes:c40a8eb763364dec91c956c3ab2209fb”
2) “websocket:socket-nodes:all”
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379[1]> exit
root@desktop-jacksen:/d02/hzero/project/ps-register#
查看清空后的结果:
接着把mysql中的库删除掉:
把这三个库删除掉:
mysql> drop database hzero_admin;
Query OK, 68 rows affected (1.30 sec)
mysql> drop database hzero_interface;
Query OK, 162 rows affected (2.14 sec)
mysql> drop database hzero_platform;
Query OK, 444 rows affected (5.07 sec)
接下来重新初始化数据:先在/d02/hzero目录下新建resource-package目录,然后把resource-package.zip拷贝过去解压缩
root@desktop-jacksen:/d02/hzero# mkdir resource-package
root@desktop-jacksen:/d02/hzero# cp resource-package.zip ./resource-package
root@desktop-jacksen:/d02/hzero# cd resource-package
root@desktop-jacksen:/d02/hzero/resource-package# unzip resource-package.zip
3)数据初始化
先在/d02/hzero目录下新建一个project 目录,把project.zip拷贝到这个目录下,解压缩
编辑\resource-package 目录下的application.yml文件,做两处修改
1、替换MySQL驱动字符串
2、在链接数据库的url链接中增加红框部分参数。
此举是为了兼容MySQL8
更改初始化脚本的执行模式,然后执行脚本:
chmod +x database-init.sh
root@desktop-jacksen:/d02/hzero/resource-package# chmod +x database-init.sh
root@desktop-jacksen:/d02/hzero/resource-package# ./database-init.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 111M 100 111M 0 0 12.9M 0 0:00:08 0:00:08 –:–:– 10.8M
HZERO 1.12.RELEASE 更新开始…………..
启动工具…
……
The project address: http://127.0.1.1:8099
脚本执行完毕会启动一个web服务,可以打开这也页面,我的虚拟机IP是172.18.14.48,所以访问地址替换成:172.18.14.48:8099
点全选,然后点更新数据库
这个过程是往数据库中建库建表,大概需要3分钟,完成会提示更新完成。
由于我们是新建系统,不是升级系统,所以第二步可以跳过,不用做,直接做第三步 导入数据,这一步,也点全选,然后点“导入”
这一步是往数据库中导入种子数据
这个导入也很快,就几分钟;增加了8个数据库
找个表验证下数据:hzero_platform库里的 iam_menu表,3994条数据,对的。
4)构建jar并启动服务
进入project 目录,执行 mvn install , 这会把父组件(包括其所有依赖的组件)安装到本地,我们这次是最新的1.12.1,应该有些新的包会刷新到本地库。
接下来开始修改各服务的配置文件,启动服务;
接下来进入各子模块,用命令 mvn clean package -Dmaven.test.skip=true
就按从上到下的顺序:
就按照从上到下的顺序构建:
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-admin/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-file/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-gateway/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-iam-saas/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-import/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-interface/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-license/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-message/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-oauth/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-platform/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-register/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-report/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-scheduler/
drwxr-xr-x 4 root root 4096 Jul 6 15:33 ps-swagger/
所有的子模块都顺利构建成功,除了ps-license除外,原因是潇葳之前说过,他的license服务不能依赖hzero的父组件,要依赖他license的父组件,在POM中把ps-license的父组件改成:
<parent>
<groupId>org.hzero.license</groupId>
<artifactId>hzero-license-parent</artifactId>
<version>1.0.3.RELEASE</version>
</parent>
再次构建就OK了;
1、启动register服务:
把原来的注册中心模块下的 run.sh 脚本拷贝过来,并在application.yml中加上网卡IP地址选择:
cloud:
inetutils:
# 设置首选网卡,对于本机有多块网卡的情况,可以设置首选网卡来注册
# 指定忽略的网卡
ignored-interfaces[0]: lo
# 选择注册的网段
preferred-networks[0]: 172.18.14.48
运行 run.sh 后启动成功,验证页面:
2、启动License 服务
2.1 把原来license服务模块下的run.sh 和stop.sh都拷贝过来;
2.2 把原来license 服务模块下的licenseAgent 目录拷贝过来,里面有启动命令里面要用的agent文件
2.3 在bootstrap.yml文件中添加网卡选择:
inetutils:
# 设置首选网卡,对于本机有多块网卡的情况,可以设置首选网卡来注册
# 指定忽略的网卡
ignored-interfaces[0]: lo
# 选择注册的网段
preferred-networks[0]: 172.18.14.48
然后运行run.sh 成功启动服务,验证:
访问8105端口,可以看到license服务的页面,
点激活链接:会打开远程的汉得开放平台的网站页面,里面会显示你曾经申请的授权记录,选择一条通过审核的license授权申请,确认还有剩余激活次数,然后点右上角的“激活”按钮,会出来一个激活码的页面,把这个激活码复制下来。(顺便发送邮件,可以在你邮箱中保存这个激活码),关闭窗口,回到自己的license服务页面。
填入激活码验证,然后点验证按钮,可以看到激活成功;
点查看详情,可以看到具体授权信息:
在注册中心,我们也可以看到license服务已经成功注册;
license服务出现向注册中心发心跳不稳定的问题,主要原因还是eurke的版本不兼容,
把iam的POM拷贝过来改了一下,现在OK了,已经起来了,后面就观察到比较稳定不掉线了。
3、启动iam服务
3.1 把原来license服务模块下的run.sh 和stop.sh都拷贝过来;
编辑run.sh ,把端口号改成跟iam bootstrap.yml文件中定义的端口号一致 8030,把 AGENT 变量改成
-javaagent:/d02/hzero/project/ps-license/licenseAgent/license-agent111.jar
3.2 编辑iam服务的application.yml文件在数据库链接rul中添加:allowPublicKeyRetrieval=true
3.3 编辑 iam服务的bootstrap.yml 文件,在 spring.cloud层级下添加网卡选择:
inetutils:
# 设置首选网卡,对于本机有多块网卡的情况,可以设置首选网卡来注册
# 指定忽略的网卡
ignored-interfaces[0]: lo
# 选择注册的网段
preferred-networks[0]: 172.18.14.48
运行./run.sh ,成功启动,在注册中心可以看到服务已经注册上来了:
redis中也有内容了:
4、启动oauth 服务
oauth需要做的配置改动给iam类似,2个区别是
1、启动命令行不需要AGENT, 所以在run.sh中AGENT 留空即可 AGENT=””.
2、application.yml文件中,登录成功后重定向的URL地址改成:success-url: ${HZERO_OAUTH_LOGIN_SUCCESS_URL:http://dev.hzero.com.cn/workplace}
更改完配置后启动成功,验证:
在redis缓存的db3中缓存信息:
5、启动message服务
所需配置改动跟oauth类似
运行./run.sh 成功启动,但看日志在等待注册到hzero-admin
2025-07-06T18:08:39.327+08:00 INFO 64303 — [hzero-message] [ XNIO-1 task-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
2025-07-06T18:08:39.421+08:00 WARN 64303 — [hzero-message] [ration-Executor] o.h.boot.admin.AdminAutoRegistration : Register to [hzero-admin] server failed! retry to execute until success…
不过过了几十秒,它还是跳过这个步骤,继续向注册中心报到成功了:
所以,这里留个问题,是否一定要先启动hzero-admin再启动hzero-message?
1、启动admin服务
所需配置改动跟oauth类似
服务启动后在注册中心可见:
redis缓存可见hadm目录下的路由配置信息:
2、启动platform服务
所需配置更改通oauth类似,platform 服务内容比较多,启动内存从300M改成500M
启动后:
3、启动file服务
所需配置改动与 oauth类似
启动后在注册中心可见:
4、启动import服务
所需配置改动与 oauth类似
启动后在注册中心可见:
5、启动interface服务
所需配置改动与 oauth类似,调整下操作顺序,更加顺利:
10.1 编辑服务的application.yml文件在数据库链接rul中添加:allowPublicKeyRetrieval=true
10.2 编辑服务的bootstrap.yml 文件,在 spring.cloud层级下添加网卡选择:
inetutils:
# 设置首选网卡,对于本机有多块网卡的情况,可以设置首选网卡来注册
# 指定忽略的网卡
ignored-interfaces[0]: lo
# 选择注册的网段
preferred-networks[0]: 172.18.14.48
10.3 把原来oauth服务模块下的run.sh 和stop.sh都拷贝过来;编辑文件 ,把端口号改成跟bootstrap.yml文件中定义的端口号一致
启动后在注册中心可见:
6、启动report服务
所需配置改动与 interface类似
启动后在注册中心可见:
7、启动schedule服务
所需配置改动与 interface类似
启动后在注册中心可见:
Redis 缓存情况:
注意 在db4中可见gateway的配置缓存:
8、启动swagger服务
所需配置改动与 interface类似
启动后,在注册中心未见,查日志有SQL错误,有timeout, AI分析日志说是驱动不兼容或者mysql服务端问题或者网络问题, 实际盘查都没问题,mysql 的 error 日志今天一天都没有异常;网络都在同一台服务更不会有问题,AI没有给出正确的分析思路。 我仔细对比跟其他服务的POM和yml的配置差异,发现yml中数据库链接地址不一样,要改:
重新启动后在注册中心可见:
测试:http://172.18.14.48:8080/swagger/swagger-ui.html
9、启动gateway服务
所需配置改动与 interface类似,有个额外的配置是要添加下服务的端口,这应该是选配平台上准备文件的失误:
服务启动后,在注册中心可见:
- 启动alert 服务(这个服务是因为后面接口平台测试时发现缺少这个服务报错而后加的)
所需配置改动与 interface类似
服务启动后,在注册中心可见:
服务问题排查
问题1、license服务不稳定问题
License服务不稳定,时不时的会从注册中心掉线,其他服务就很稳定,基本从不掉线;
日志分析显示主要原因是eureka的版本不一致,也就是license服务依赖的eureke和注册中心依赖的eureka版本不一致,注册中心依赖的hzero parent 1.12.1 父组件,直接选配的license服务依赖这个组件构建不成功,需要改配置,把父组件改成 hzero-license的1.0.3父组件才能构建成功,这hzero-license的1.0.3父组件 跟hzero parent 1.12.1 父组件用的eureka的版本不一致可能不一致。
解决:潇葳说他后面新发版了1.1.2.RELEASE版本的license服务,使得新的license服务,可以依赖hzero parent 1.12.1 父组件成功构建,需要把本地maven库中hzero目录下的内容全部清除掉重新构建 ,然后启动命令中的agent要用112a版本的。
操作:
- 把license服务的POM文件改一下,license服务依赖改成1.1.2.RELEASE,依赖的parent组件改成hzero parent 1.12.1 父组件。
- 编辑run.sh文件把agent 改成license-agent112a.jar
- 清空本地库中hzero目录下的内容,再次执行run.sh构建
cd /root/.m2/repository/org/hzero
rm -rf ./*
cd /d02/hzero/project/ps-license
./run.sh
测试失败:构建的时候就报错了,错误显示是缺少mysql依赖的版本,但之前1.0.3版本的pom也没提供MySQL版本,也不会报错。所以实际不是版本问题,就是1.1.2版本的问题;
潇葳说license服务不需要和依赖MySQL ,就把它去掉了,去掉可以构建成功,但运行报错,潇葳另外给了一份application.yml文件,再次重启,还报错,元宝分析日志说是依赖包完整性或配置问题, 于是就把iam的POM文件拷贝一份过来,去掉mysql 依赖,替换组件名称和主依赖组件,改成了新的license的POM文件,重新构建启动,这次OK了,后面就是观察稳定性:
5)Nginx设置和前端工程重新替换标签:
1、已经编译好的前端工程Dist标签替换
nginx主配置:
/etc/nginx/nginx.conf
nginx站点配置:
/etc/nginx/sites-available/
- 在/d01/hzero 目录下新建front目录,并dist.zip文件拷贝过来, 然后解压缩
rm -rf dist
unzip dist.zip
2、更改dist 目录权限
sudo chown -R www-data:www-data /d02/hzero/front/dist
sudo chmod -R 755 /d02/hzero/front/dist
3、把原来front 目录下的run-front.sh拷贝过来,运行:
./run-front.sh
2、前端发现问题排查:
问题1:无法登录问题
在oauth的日志中 ,提示找不到静态文件 logo.svg
解决方案:在oauth的 src/main/resource 目录下新建static目录,把 /front/dist 目录下的hzero_logo_loading.svg拷贝过来,改名葳logo.svg
这么改了之后似乎没啥用;
输入超级用户 admin/Admin@123! 之后,界面重定向到了dev.hzero.com.cn/portal/home, 没有重定向到登录成功后的地址dev.hzero.com.cn/workplace;
看oauth的后台日志,报告了:
Client not assign any role! clientId: hzero-front-dev
解决方案:换成 hzero-front-uat
但问题依旧;
看前端检查,发现第一个接口调用返回404,前端架构组说这里应该返回401才对,这是取登录用户自身基础信息的接口,没登陆的时候正常用改返回401,那么前端会重定向到登录界面。
在swagger 界面去测试(http://172.18.14.48:8080/swagger/swagger-ui.html),模块选择hzero-iam
Ctrl + F 查找 self
找到Self 接口,展开
点【Excute】 执行测试,也是反馈404 ,点这个接口右上角的 锁图标进行登录认证测试:
Client 填入跟我们前端替换的client id 保持一致,勾选default, 然后点Authorizes 进行认证测试:
会跳到登录界面:
输入用户信息进行登录,登录后会跳到下面界面,一直打转:
检查错误类似:
Swagger 界面检查:
这里测试的时候返回状态应该是401; 问题定位在后端服务;
看后端iam日志:这里swagger点测试的时候,后端iam日志没有反应,说明这个服务没有到iam那里,可能在网关就被拦截掉了。
看后端网关服务日志:网关报错了:
查iam_permission表,确实找不到这个接口:
Select * from iam_permission where path like ‘%/hzero/v1/users/self%’
发现没记录;
删除记录:
Delete from iam_permission where code like ‘hzero-iam%’
然后重启iam服务,启动完成后iam服务会把内容重新刷进iam_permission表,再查询发现有了:
再次进入系统,可以正常进入界面了:
再去swagger测试,状态返回就是401,而不是404了; 404通常表明在iam_permission表中没有信息,那是不正常的。 前端调用接口如果返回404,大概率是在iam_permission表中缺失信息,那为什么会出现这种情况呢? 我们之前出现过 /hzero/v1/users/self 这个接口在iam_permission缺失信息导致404,导致主页没登陆情况下无法重定向到登录界面的问题,后来重启iam服务,才在iam_permission表中出现这个接口的,这说明iam_permission表中内容的构建是不稳定的。
问题2:show-flag服务报404错误问题:
在swagger里面查,有这个接口,但执行也报404错误
去 iam_permission 表里查询, 查不到这条路由记录,于是就把iam_permission表中hzero-admin开头的路由记录都删除了
delete from iam_permission where code like ‘hzero-admin%’
然后再重启hzero-admin服务,发现没有把记录刷回来,在hzero-admin 的日志里面没有看到刷iam_permission的日志,在hzero-iam的日志里面倒是能看到刷permission的日志。
产品组说,iam_permission表是hzero-iam服务负责的表,按照微服务设计原则,其他微服务不会直接操作这张表的,所以到一定是hzero-iam服务刷进去的。 可以到开发管理/系统工具中去重新刷一下:
操作成功之后,再去看数据库:
Iam_permission表中就又有记录了。
缺失的那条 show-flag的路由也进来了:
界面访问上,show-flag 接口反馈200, 不报错了:
那这里引发一个问题:
为什么之前在iam_permission表中, iam服务的 接口/users/self 接口会缺失? 还有这个admin服务的show-flag接口会缺失?
在iam服务的启动日志中能不能看到报错日志?是什么原因导致初次启动所有服务的时候,iam没有刷全?是内存 配置少了吗?日志中搜索memory可能不到跟内训有关的错误日志。
把这个iam服务日志整个看了一遍,只有一处错误,就是检查自己不健康不能注册到admin, 没有其他错误了;
但这个错误应该不影响permission记录刷不全的问题。
2025-07-07T21:27:16.372+08:00 ERROR 446187 — [hzero-iam] [ration-Executor] o.h.b.a.t.health.CheckHealthServiceImpl : [hzero-iam] is unhealthy, cannot be registered to the admin
org.springframework.web.client.RestClientException: http transport failed, cause: I/O error on GET request for “http://172.18.14.48:8030/v2/actuator/health”: Connect to http://172.18.14.48:8030 [/172.18.14.48] failed: Connection refused
所以这个问题依然是个迷。
3、逐菜单查验,
现在已经能正常登录了,接下来逐个菜单查验,看看是否都可用,是否有错误。
可用:就是点菜单能正常显示。
是否有错误:主要看检查/网络/里面对所有接口的调用是否都返回200OK
问题1 角色管理这三个菜单,点击没反应
请前端前端架构组团队帮忙看了之后,让空白处点击邮件查看源代码,打开了index.html , 发现里面BASE_PATH有错误.
更改保存后再测试就OK了,角色管理菜单打开就有内容了:
顺便把前端替换脚本也修复一下:
问题2 接口平台/个人集成映射配置
这个错误,表面上看是调用后台接口,Get方法不被支持,但网络里面看所有的后台接口调用都是返回200 Ok,并没有错误,请前端架构组团队帮忙看了,
跟后台石云团队沟通了下,他们说最新的前端已经修复了这个问题,给的建议是:
iam前端更新到:hzero-front-hiam@1.12.1
hitf前端更新到:hzero-front-hitf: 1.12.1-beta.3
后端接口平台话清理掉本地maven的interface的相关缓存(org/hzero/boot/hzero-boot-interface@1.12.1、org/hzero/hzero-interface-gateway@1.12.1、org/hzero/hzero-interface-saas@1.12.1),重新打包。
具体操作:
重新构建iam和hitf的前端工程
- 把原来dist目录拷贝到当前选配工程的front目录下(因为要合并dist/packages/microConfig.json 这个文件每个模块有对应的hash值,没法直接手动改,必须靠程序去合并更改)
cp -rf /d02/hzero/front/dist /d02/hzero/front/front
- 更改当前当前选配工程的front目录下的package.json文件,更新这两个前端模块的版本hzero-front-hiam@1.12.1,hzero-front-hitf@1.12.1-beta.3
在当前当前选配工程的front目录下执行(把最新的版本拉到node_moudules目录下):
yarn
之后运行npx umi hzero-info 查看当前yarn拉下来的各模块版本:
/d02/hzero/front/front# npx umi hzero-info
[System Information]
OS Version : linux – 5.15.167.4-microsoft-standard-WSL2
NodeJS Version : 20.19.3
YARN Version : 1.22.22
[Dependence Information]
@hzerojs/preset-hzero version : 1.3.6
choerodon-ui version : 1.6.6
hzero-front version : 1.12.2
umi version : 3.5.43
[Standard Module Information]
hzero-front-hpfm-dpc version : 2.1.4-beta.0
hzero-front-hfile version : 1.12.1
hzero-front-hsdr version : 1.12.1
hzero-front-hrpt version : 1.12.1
hzero-front-hpfm version : 1.12.1
hzero-front-hmsg version : 1.12.1
hzero-front-hitf version : 1.12.1-beta.4
hzero-front-himp version : 1.12.1
hzero-front-hiam version : 1.12.1
hzero-front-hgat version : 1.12.0
hzero-front-hadm version : 1.11.4
hzero-front-cusz version : 1.3.0
- 在当前选配工程的front目录下执行:
yarn run build:ms hzero-front-hiam,hzero-front-hitf
(这会单独打包这里两个子模块,并往dist目录下的microConfig.json写拼接内容,这里要注意看下microConfig.json的内容是否只是更新了两个子模块的内容,而不是更新了全文见内容,因为我们选配的模块不全,原来那个Dist 是 1.12.0 比较全的版本,还包括了低代码的,如果是根据当前选配的工程来生成microConfig.json的话就不符合我们的要求,需要另外想其他办法解决这个问题)
编译失败 , 跟前端架构组团队沟通,说可能是内存不够,查内存
root@desktop-jacksen:/d02/hzero/front/front# free -h
total used free shared buff/cache available
Mem: 19Gi 14Gi 4.4Gi 2.0Mi 211Mi 4.3Gi
Swap: 5.0Gi 4.8Gi 210Mi
只有4G剩余,不够,剩余内存要大于8G,建议停掉后端服务后重新执行。
停掉后端服务之后剩余17G够了:
root@desktop-jacksen:/d02/hzero/project# free -h
total used free shared buff/cache available
Mem: 19Gi 1.5Gi 17Gi 2.0Mi 158Mi 17Gi
Swap: 5.0Gi 429Mi 4.6Gi
再次执行编译子模块的命令:
这次编译成功了:
The bundle size is significantly larger than recommended.
Consider reducing it with code splitting: https://umijs.org/docs/load-on-demand
You can also analyze the project dependencies using ANALYZE=1
Done in 289.98s.
root@desktop-jacksen:/d02/hzero/front/front#
检查了一下 dist/packages/microConfig.json 文件内容,原来存在的,不在我们本次选配范围内模块还在,应该OK的;
从时间戳来看,他应该只改了 dist/packages/microConfig.json 文件,dist/packages/hzero_front_hiam目录,dist/packages/hzero_front_hitf目录。
- 再把新的dist目录拷贝到原来位置,更改目录权限,再执行run-front.sh 替换字符串
cp -rf /d02/hzero/front/front/dist /d02/hzero/front/
sudo chown -R www-data:www-data /d02/hzero/front/dist
sudo chmod -R 755 /d02/hzero/front/dist
cd /d02/hzero/front/
./run-front.sh
- 然后再重启所有后台服务:
cd /d02/hzero/project
sh start_all.sh
测试: 再次访问这个界面,原来的错误没有了,确实解决问题了。
不过这次因为第一次关闭所有微服务,再启动所有微服务,发现了两个新问题:
- report服务没有注册到注册中心,后来通过把内存从300M加到500M重启动解决了。
- Swagger文档看接口平台的API文档的时候报错:
Unable to render this definition
The provided definition does not specify a valid version field.
Please indicate a valid Swagger or OpenAPl version field.Supported version fields are swagger: “2.0” and those thatmatch openapi: 3.0.n (forexample, openapi: 3.0.0 ).
这个问题,实际原因不是系统提示的这个问题,后来也是把接口平台的内训从500M加到700M重启解决了。
问题是,之前非批量启动服务的时候,并没有出现这个问题,另外还注意到,一次性批量启动这么多微服务的时候,虚拟机的内训消耗飙到了18G,而服务全部启动完成后,慢慢降下来,降到了10G,这说明批量启动微服务的时候,可能存在内存争用导致异常。
问题3 接口平台/服务注册/编辑
分析:
这是后端返回的错误:
在后台接口平台的服务日志中确实能找到 target must …的java报错信息,怀疑是不是内存太小导致的,把接口平台服务内存加大到2G再重启,再测试问题依旧,看起来跟内存无关,还是把内存恢复设置到700M
问了石云,石云说是种子数据有问题,因为服务编排没有安装,所以应该把这条数据删除掉就可以了。(或者另外安装服务编排的服务(属于集成平台模块),也就没有错误了)
但实测情况是安装了编排服务后问题依旧存在:
看接口平台后台服务的日志:
问题4 接口平台/API预警
分析: 这是后端接口返回的错误:
错误分析结果是有个预警服务没有安装
解决:安装预警服务;具体步骤也是选配平台选配后先数据初始化,在安装启动服务,具体这里就不展开了可以参考本文 七、重新选配服务/四、构建jar并启动服务/ 15、启动alert服务;
alert服务启动后再测试就没有问题了:
问题5 接口平台/集成工作台
解决:这个错误在安装 编排服务和前置机服务后就没有了。
问题6 接口平台/API门户/产品首页:
解决:这个错误在安装 编排服务和前置机服务后就没有了。
关于作者:
| 昵称:Jack.shang 档案信息:jack.shang 一位从技术走向管理,再从管理走向市场的普通行者 联系方式:你可以通过syfvb@hotmail.com联系作者 点击查看Jack.shang发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/4500 |
对本文的评价:
