
国产化迁移适配问题解决记录
文章平均质量分 84
基于Spring Cloud Alibaba的微服务架构项目的全栈信创部署实战,从操作系统、数据库(达梦、人大金仓、神舟通用)到中间件等国产化组件替代经验总结,助你快速完成信创环境迁移适配。
Heartsuit
物联网平台架构师,优快云博客专家,阿里云专家博主,PMI认证项目管理专家(PMP),具备物联网、云原生、大数据等领域的研发经验。
展开
-
Nginx高可用极速实战:通过KeepAlived与华为云虚拟IP实现
背景接触 Nginx 也有几年了,但是以前的服务都是通过一台机器上的 Nginx 来代理,一直没使用过 Nginx 高可用方案。在严格要求高可用 HA (High Availability)的场景中,一台 Nginx 服务难免出故障,作为流量入口,单实例部署的 Nginx 服务挂掉后的后果不堪设想。今天就来体验下业界主流的结合 KeepAlived 实现的 Nginx 高可用方案(抢占模式),并在华为云的生产环境下进行实战。KeepAlived 是基于虚拟路由冗余协议(Virtual Router Re原创 2022-05-04 14:22:48 · 2513 阅读 · 1 评论 -
从MySQL迁移至神通数据库报错:ERROR, Attribute XX must be GROUPed or used in an aggregate function
一个在 MySQL 下正常运行的分组语句,迁移至神通数据库后报错:ERROR, Attribute CANDIDATE_ID must be GROUPed or used in an aggregate function。在 MySQL5.7 及以上的版本中,由于 MySQL 的 sql_mode 默认配置中包含 ONLY_FULL_GROUP_BY ,即按照 SQL92标准 执行:select 、 having 或 order by 后面存在的非聚合列必须全部出现在 group by 语句中。原创 2023-02-11 16:53:50 · 1389 阅读 · 1 评论 -
在华为鲲鹏openEuler20.03系统上安装Redis, Zookeeper, Nginx
背景这里实验用的华为云鲲鹏服务器配置如下:Huawei Kunpeng 920 2.6GHz4vCPUs | 8GBopenEuler 20.03 64bit with ARM连接机器后,先查看系统相关信息,注意这里是 aarch64 的,后续软件包也需要是 aarch64 版本的。# 查看系统内核信息[root@ecs-kunpeng-0005 ~]# uname -aLinux ecs-kunpeng-0005 4.19.90-2003.4.0.0036.oe1.aarch64 #1原创 2021-05-19 22:13:08 · 3575 阅读 · 1 评论 -
东方通TongWeb7中间件在CentOS7上的安装、使用与开机自启
对当时做国产化迁移适配进行预研的东方通 `TongWeb` 中间件的安装、使用做一个记录,好记性不如烂笔头,过两天估计就忘记了。如果 `TongWeb` 版本高于**7.0.4.2**(实际生产环境中采购的 `TongWeb` 一般都会高于这个版本),可以直接运行 `TongWeb` 的 `bin` 目录下的 `installservice.sh` 命令,完成 `systemd` 服务注册。原创 2023-01-30 08:55:06 · 2755 阅读 · 0 评论 -
国产化服务环境中使用gunicorn部署Flask应用并配置开机自启
服务端由第三方部署了一个基于darknet(一个较为轻型的完全基于C与CUDA的开源深度学习框架)的识别算法服务,通过Flask的Web服务对业务服务暴露API接口。作为测试,一开始是直接通过python3 app.py的命令行启动的服务,不过在控制台可以看到以下警告信息:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.原创 2022-12-24 13:44:58 · 1060 阅读 · 0 评论 -
Nginx反向代理的一个算法API的接口调用超时:504,GateWay Timeout,怎么破?
服务端由第三方部署了一个基于 `darknet` (一个较为轻型的完全基于C与CUDA的开源深度学习框架)的识别算法服务,通过 `Flask` 的 `Web` 服务对业务服务暴露 `API` 接口。作为测试,一开始是直接通过 `python3 app.py` 的命令行启动的服务,然后在 `Nginx` 处通过反向代理过来的。可是在通过前端页面调用算法接口进行测试时,出现了请求超时的错误:**504,GateWay Timeout**。原创 2022-12-24 13:16:47 · 2796 阅读 · 0 评论 -
Maven打包报错:找不到符号,类BASE64Encoder,程序包sun.misc
一个基于若依单体架构的多模块 `Maven` 项目的国产化迁移适配,由于是客户的代码,我们不用关心具体的功能实现,直接来做迁移即可。实施时,按照我们总结的整改建议调整源码,具体迁移适配过程可参考本专栏的其他文章。Maven打包报错:找不到符号,类BASE64Encoder,程序包sun.misc原创 2022-12-10 09:39:54 · 4759 阅读 · 1 评论 -
Failed to obtain JDBC Connection;nested exception is dm.jdbc.driver.DMException:初始化SSL环境失败
在 `TongWeb` 中间件中部署启动 `war` 包时遇到了以下错误:Failed to obtain JDBC Connection; nested exception is dm.jdbc.driver. DMException: 初始化SSL环境失败解决方法:在达梦数据库的安全版中默认开启了 `SSL` 加密,需要手动关闭,执行以下 `SQL` 进行配置。> sp_set_para_value(2, 'ENABLE_ENCRYPT', 0); 执行完之后重启数据库服务生效原创 2022-12-11 19:59:52 · 2827 阅读 · 1 评论 -
银河麒麟V10安装与卸载Python3以及引发的yum与dnf无法使用的问题
`银河麒麟V10` 自带了 `Python2.7` 以及 `Python3.7.9` 。使用 `yum` 命令时报错:> No module named 'dnf' > ModuleNotFoundError: No module named 'libdnf'Note: 其实,在 `银河麒麟V10` 操作系统上,不论是 `yum` 还是 `dnf` 都指向了(软链接) `/usr/bin/dnf-3` 这个文件,文件的第一行配置了要使用的 `Python` 解释器版本。原创 2022-12-11 20:06:58 · 4103 阅读 · 2 评论 -
等保整改之开启Nacos认证-漏扫发现我们使用Nacos时存在未授权访问的漏洞
我这里相关的服务有:网关服务、系统服务、认证服务、MinIO对象存储服务、WebSocket消息推送服务、定时任务服务、系统监控服务等)的配置文件。部署在专网中,并修改了默认密码),这让我们误以为后续的服务注册、配置读取与更新也是开启认证的。还是之前的一个小项目,部署在专网中,等保在做了一次漏扫后,说是有个高危漏洞要求整改。试想一下,你的服务注册、配置读取与更新接口竟然是暴露的,没有任何认证拦截的;可以直接访问到完整的配置信息,甚至包括各种服务的密码信息等,就问怕不怕。,发现接口403了,真棒。原创 2022-11-20 19:17:58 · 2810 阅读 · 1 评论 -
自签SSL证书配置Nginx代理Vue+SpringBoot前后端分离服务
最近的一个小项目,部署在专网中,可是最近等保测评要求整改为HTTPS加密传输。像我们以前的部署在互联网上的项目都购买了域名,并在云服务商那里申请免费的。证书,这样在浏览器中会提示证书不安全,用户需要多操作一步添加例外才可以正常访问系统。好在可以满足等保的要求,可行那就开干。可是现在在专网中,而且没有域名,甚至没有。移除文件口令,输出到新的server.key(这时,需要输入第一步设置的密码)模块后,将前面生产的秘钥及证书放到一个目录中,我这里是。代理静态资源,以验证证书的有效性。的完整配置,最终实现。原创 2022-10-29 13:06:42 · 2430 阅读 · 0 评论 -
神通数据库ShenTong7在CentOS7上的安装与MySQL迁移遇到的兼容性问题
关于神通数据库ShenTong7的参考资料建议参考官方文档。其实,如果在安装神通数据库ShenTong7中时,我们会看到在安装目录下有一些文档,可以作为第一手的参考资料。原创 2022-10-24 18:12:36 · 2002 阅读 · 0 评论 -
SpringSecurity:前后端分离项目中用户名与密码通过国密算法SM2加密传输
国密证书使用了自有的椭圆曲线,所以无法使用JDK自带的java.security解析证书,需要引入BouncyCastle的bcprov-jdk15on依赖。国密算法是我国自主研发创新的一套数据加密处理系列算法,包括SM1, SM2, SM3, SM4, SM7, SM9, 祖冲之密码算法等。这两个问题比较诡异,可能是后端解密问题:后端解密时,要在密文前面加上04(或者前端加密后在密文前直接加上04)。生成的私钥,这种格式是带换行符的,如果我配置到了。的秘钥对,需要注意的是,目前的。原创 2022-10-16 19:21:32 · 2117 阅读 · 1 评论 -
信创环境下RSA解密时的中文字符乱码问题
否则会导致在不同的服务器操作系统环境下解密编码的不确定性。即在解密时的编码一定要指定字符集。我们系统对系统的用户名与密码进行了。原创 2022-09-25 09:22:23 · 570 阅读 · 0 评论 -
信创迁移适配实战-SpringBoot服务以war包部署后无法注册到Consul
由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。Note:这个问题源于一个读者:后端包括网关服务一共四个,一开始四个都部署失败,目前部署上去两个但点击http接口访问都是404,自定义获取获取外部容器端口的方法,然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个。作为服务注册中心,除了上述步骤,还需要添加以下配置类,将服务注册至。如今生活太快,时间太少,不要绕圈子,给我来个痛快的。中的实践通过排除默认的。..原创 2022-08-27 19:51:19 · 964 阅读 · 0 评论 -
信创环境下密码强度规则:设置密码长度为6至20位,包含大、小写字母、数字、特殊字符组合
这篇文章的本意除了记录强密码规则的正则表达式之外,更关键的是对常用的工具网站做个整理和记录。原创 2022-08-07 20:53:48 · 5178 阅读 · 0 评论 -
信创环境下使用80端口Nginx无法发送PUT和DELETE请求
那是7月份的某天下午,到某个安全性要求较高(据说要上各种安全设备:防火墙、`IPsecVPN`等等)的内网环境下部署了一个 `Nginx` +前后端分离的单体架构的小项目。`Nginx`代理了前端服务,使用默认的80端口,无法发送 `PUT` 和 `DELETE` 请求,但是 `GET` 、 `POST` 请求正常;即可以新增、查询,无法修改和删除。...原创 2022-08-07 20:42:41 · 6181 阅读 · 0 评论 -
信创环境下达梦数据库唯一索引异常无法拦截DuplicateKeyException
迁移到达梦数据库后,发现我们的全局异常拦截中的唯一索引异常 无法被正常拦截,给前端直接抛出了数据库原始的错误信息,对用户极其不友好。如果不对唯一索引异常拦截,则默认 与 的异常信息如下:在 中通过 注解,实现对异常响应的统一封装。可参考:全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档以下是对数据库唯一索引异常的拦截,统一返回:编号不可重复。问题分析 对主流的数据库的异常进行了封装与翻译,对于 都可以进原创 2022-07-16 20:59:41 · 2117 阅读 · 0 评论 -
信创环境下部署SpringBootAdmin监控服务遇到的问题
就像通常的微服务打包部署至国产化环境中一样,先是做了以下操作:可是 打包时报错:打war包重写启动类重写启动类,继承 类,重写 方法,否则无法检测到启动类。解决错误2:Description:The Bean Validation API is on the classpath but no implementation could be foundAction:Add an implementation, such as Hibernate Validator, to the c原创 2022-07-03 21:21:40 · 613 阅读 · 0 评论 -
信创环境下Nginx正向代理实现内网发送邮件
标题党了,其实不管是不是在信创环境,只要存在网络分区/隔离,我们都可能面临发送邮件的问题:这就用到 的正向代理功能。关于什么是正向代理,这里不多解释了。下面记录下如何通过 的正向代理实现内网环境的 邮件发送功能。本身是不具备发送邮件功能的,我们只是让其做了一个代理与转发的事情。命令行输入 检查模块信息。如果使用的是Nginx源码安装,配置开机自启这篇文章介绍的方式安装的 ,那么默认是没有 以及其他模块的。如果有mail模块,则直接配置nginx.conf的stream块编辑 配置: ,原创 2022-06-25 10:48:49 · 2549 阅读 · 2 评论 -
信创环境下缓存服务Redis集群部署
本次项目涉及20+台服务器的部署,技术包括 注册中心集群、 网关服务集群、 关系型数据库服务集群、 分布式文件存储服务集群、 缓存服务集群、 服务端消息推送集群、 定时任务服务集群、 反向代理高可用集群、监控服务集群等。这里主要记录下分布式文件存储服务集群以及缓存服务集群的搭建过程。假设你有一个已经运行的单实例 服务,在信创环境下的安装与配置参考:在华为鲲鹏openEuler20.03系统上安装Redis, Zookeeper, Nginx,不过这次的安装我修改了安装目录与安装包相同的目录原创 2022-06-19 19:29:26 · 1941 阅读 · 0 评论 -
信创环境下分布式文件存储MinIO集群部署
本次项目涉及20+台服务器的部署,技术包括 注册中心集群、 网关服务集群、 关系型数据库服务集群、 分布式文件存储服务集群、 缓存服务集群、 服务端消息推送集群、 定时任务服务集群、 反向代理高可用集群、监控服务集群等。这里主要记录下分布式文件存储服务集群以及缓存服务集群的搭建过程。Note:以下所有操作分别在4台主机上操作,文件传输: 在4台主机上创建目录并挂载。编写启动脚本新建脚本赋予执行权限编写服务脚本新建脚本验证系统服务关闭防火墙由于四台主机原创 2022-06-18 21:34:56 · 1799 阅读 · 4 评论 -
微服务项目在信创环境下20+台服务器部署遇到的零星问题汇总
本次项目涉及20+台服务器的部署,技术包括 注册中心集群、 网关服务集群、 关系型数据库服务集群、 分布式文件存储服务集群、 缓存服务集群、 服务端消息推送集群、 定时任务服务集群、 反向代理高可用集群、监控服务集群。前面通过几篇文章记录了基于微服务的项目在国产化环境的迁移适配遇到的核心问题:数据库迁移、中间件迁移等,这里再总结下在迁移过程中可能遇到的一些比较小的问题,每个问题都比较简单,无法构成一篇完整的文章,就全部整合到这一篇文章中,作为问题的解决记录。编辑 配置文件,在 下添加以下原创 2022-06-12 19:32:00 · 1471 阅读 · 8 评论 -
信创环境下微服务无法注册到注册中心:Notify connected event to listeners
前段时间曾写过几篇关于微服务项目国产化迁移适配的文章,当时申请的主机是在统信操作系统,达梦8以及 环境的测试适配,这几天要将微服务直接部署至实际线上环境:银河麒麟操作系统,达梦8数据库以及 中间件。按道理有了之前的测试迁移适配过程,该爬的坑应该都爬过了,可是这次在服务注册Nacos时遇到了问题,单单这个问题就耗费了我两天时间,不可思议。。一开始部署时的环境如下:以下是一次服务启动的报错信息。在这个日志之后就没有反应了。。过一段时间会报错,主要是因为没有读到配置中心数据导致的 依赖条件不满足。从日志可原创 2022-06-11 18:53:41 · 1581 阅读 · 3 评论 -
人大金仓数据库Kingbase8在CentOS7上的安装与使用
背景最近接触了个项目,数据库用的是国产数据库:人大金仓V8。简单总结下 Kingbase8 在 CentOS7 上的安装与使用。下载手机号、验证码,下载镜像以及开发版授权证书:https://www.kingbase.com.cn/rjcxxz/index.htm安装文档: https://help.kingbase.com.cn/stage-api/profile/document/kes/v8r6/html/install-updata/linux/install-linux/install-l原创 2022-05-08 22:12:39 · 3585 阅读 · 1 评论 -
在Linux上明明用rpm成功安装了软件,在卸载时却提示未安装
背景在 openEuler 上明明用 rpm 成功安装了 JDK11 ,在通过安装包名称卸载时却提示未安装。。错误:未安装软件包 jdk-11.0.10_linux-aarch64_bin.rpm环境信息这里实验用的华为云鲲鹏服务器配置如下:Huawei Kunpeng 920 2.6GHz4vCPUs | 8GBopenEuler 20.03 64bit with ARM连接机器后,先查看系统相关信息,注意这里是 aarch64 的,后面配置源时一定要匹配。# 查看系统内核信息[原创 2022-04-09 18:21:15 · 7084 阅读 · 0 评论 -
信创迁移适配实战-SpringCloudAlibaba服务以war包部署后无法注册到Nacos
背景信创迁移适配实战-SpringBoot项目打包war部署至TongWeb7中的实践通过排除默认的 Tomcat ,打 war 包,重写启动类等步骤将 SpringBoot 项目打包 war 部署至 TongWeb7 。由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。从前车马很慢,书信很远,一生只够爱一个人。如今生活太快,时间太少,不要绕圈子,给我来个痛快的。如果使用的是基于 Sp原创 2022-04-04 08:18:44 · 1466 阅读 · 2 评论 -
信创迁移适配实战-SpringBoot项目打包war部署至TongWeb7
背景将基于 Spring Cloud Alibaba 的微服务架构的项目部署至东方通 TongWeb@7.0.4.3 , war 包部署。由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。从前车马很慢,书信很远,一生只够爱一个人。如今生活太快,时间太少,不要绕圈子,给我来个痛快的。登录控制台http://192.168.21.52:9060/console/排除默认的Tomcat原创 2022-04-03 14:15:50 · 10015 阅读 · 26 评论 -
信创迁移适配实战-修改Nacos2.0.4源码以连接达梦数据库DM8
背景因信创迁移适配需要,我们需要将服务部署在国产化平台上。其中涉及到 Nacos 连接国产数据库的问题,这里以达梦数据库为例,使用CV大法(复制、粘贴)完成对 Nacos 源码修改,来实现对达梦数据库 DM8 的连接支持。如果直接通过官方版本连接国产化数据库,或者MariaDB,便会报错(以下错误会在无法连接数据库时抛出,可能是端口未开放、数据库不允许远程连接等,反正就是不能成功与数据库建立连接。。):Nacos Server did not start because dumpservice be原创 2022-03-27 08:58:12 · 2083 阅读 · 2 评论 -
信创迁移适配实战-MySQL到达梦数据库DM8的数据迁移
背景虽然最终会被部署到国产数据库环境,但是实际项目开发时大概率是一开始在 MySQL 上开发,直到最后部署时再做迁移适配。之前是我们在项目真正开发之前进行的预研与测试。今天开始真实场景下的数据迁移,操作系统与数据库已经由专业的运维人员安装完毕,操作系统:统信UOS;数据库:达梦8。虽然可以在IDEA中建立与DM8服务端连接,并且提供了不少功能,但是不能直接修改字段类型。还是通过DM自带的管理工具比较方便。到达梦官方注册账号,下载 Windows 下的开发版,可仅安装客户端工具。这次我们用到的主要是原创 2022-03-26 09:39:34 · 6106 阅读 · 2 评论 -
信创迁移适配预研-SpringBoot连接达梦数据库DM8服务并在IDEA中连接
背景安装完数据库服务后,来试一下 SpringBoot 与达梦数据库集成,然后测试下基础的 CRUD 操作以及事务支持功能。由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。从前车马很慢,书信很远,一生只够爱一个人。如今生活太快,时间太少,不要绕圈子,给我来个痛快的。SpringBoot连接达梦数据库依赖以下通过外部依赖的方式集成达梦的依赖,实际部署时可通过 maven 将依赖原创 2022-03-20 12:09:26 · 1367 阅读 · 0 评论 -
信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用
背景凡事预则立听说我们的项目将来要部署到国产化平台上,数据库用的是达梦数据库,国产的这些组件也没有用过,就想着在虚拟机安装数据库服务(因为是在 CentOS7 上安装测试,所以图形化客户端无法使用,可以通过在远程/宿主 Windows 主机上选择仅安装客户端使用,eg:DM管理工具,DM数据迁移工具等),先研究下国产数据库的使用,包括基础的 CRUD 操作以及事务支持,方便将来的部署与维护。由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文原创 2022-03-19 10:22:27 · 1011 阅读 · 0 评论