记一次 nacos 配置问题

记一次很基础的问题,其实一切都是有迹可循,但是缺少经验,没有排查问题的思路。知道结果后反过来推一下就知道了,但是正向查找的时候因素太多就需要一个个排除。但是也因为这是一个知识盲点,一时没有想到。

问题描述:gateway 及 auth 服务启动,通过 gateway 调用 auth 服务的验证码接口,返回 500。报错为 404,找不到 auth 的这个接口。在 nacos 上显示服务 gateway 和 auth 都已经成功注册。

因为是在正式地址上首次部署,并且 nacos 从单点改成集群。先考虑了服务器策略问题, nacos 版本问题,然后考虑了配置问题。配置是从测试地址导出后导入的,应该没有问题,也检查了缩进。

最后发现是 nacos 的配置文件命名问题,因为是从测试地址导出后导入的,所以命名为 gateway-dev.yml。

但是,nacos 的配置文件命名规则是 ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension},根据配置自动拼接服务名-启动环境.配置文件类型,例如 sys-dev.yml

由于从测试地址导出的配置名为 dev,而在正式环境启动的配置为 prod,故实际上 nacos 去寻找 gateway-prod.yml 是找不到的,相当于没有配置任何路由,所以找不到任何服务。

最后将 nacos 的配置文件通过数据库重命名为 prod,并重新发布后重启服务问题修复。

这个问题有一个很简单的检测方法,就是重新发布一次配置,因为发布配置后服务更新配置是有日志输出的,如果没有输出日志则说明这个服务没有与配置关联上。

但是这个问题也刚好处在一个盲点,如果不知道 nacos 配置的命名匹配规则,那怎么也想不到是命名问题。说到底还是对中间件不够熟悉,缺少经验。

并且这个事件还有一个中间干扰因素,就是在 application 配置文件中还引入了一个共享配置(shared-configs),这个配置是以全名进行引用的 common-dev.yml,误以为会以这个文件完成配置,忽略了实际上服务还有自己单独的配置,而那个文件的命名是以启动环境进行拼接的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值