【总结】nacos作为注册中心-应用启动失败:NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848‘……

问题现象

启动springboot应用时报错,能够读取到nacos配置,但是使用nacos作为注册中心,应用注册到nacos失败。

应用配置bootstrap.properties如下:

# 应用编码,安装时替换变量
spring.application.name=data-center
# 应用端口,安装时替换变量
server.port=8510

#spring cloud alibaba nacos配置
# 应用配置文件
spring.cloud.nacos.config.server-addr=192.168.10.188:8848
# 应用配置文件名,将会读取nacos:$app_name.properties 配置文件
spring.cloud.nacos.config.name=data-center.properties
# 按产品配置分组名
spring.cloud.nacos.config.group=holms
# 命名空间,方便后续产品一体化部署,全部产品部署在同一命名空间,方便dubbo使用注册中心相互消费
spring.cloud.nacos.config.namespace=public
# dubbo注册中心
spring.cloud.nacos.discovery.server-addr=192.168.10.188:8848
# 注册中心分组,全部产品配置同一个分组,方便dubbo使用注册中心相互消费
spring.cloud.nacos.discovery.group=rpc
spring.cloud.nacos.discovery.namespace=public

#企业级通用common配置
spring.cloud.nacos.config.shared-configs[0].data-id=common.properties
spring.cloud.nacos.config.shared-configs[0].group=holms
spring.cloud.nacos.config.shared-configs[0].refresh=true

#产品线通用common配置
spring.cloud.nacos.config.shared-configs[1].data-id=common-holms.properties
spring.cloud.nacos.config.shared-configs[1].group=holms
spring.cloud.nacos.config.shared-configs[1].refresh=true

spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.discovery.heart-beat-interval=3000
spring.cloud.nacos.discovery.heart-beat-timeout=10000

spring.main.allow-bean-definition-overriding=true
spring.main.allow-circular-references=true
spring.mvc.hiddenmethod.filter.enabled=true

错误信息

关键错误信息:
NacosServiceRegistry] [main] []: nacos registry, data-center register .NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848’……

详细错误信息:

2024-07-25 13:39:59.059 [10.57.240.122] [ERROR] [com.alibaba.cloud.nacos.registry.NacosServiceRegistry] [main] []: nacos registry, data-center register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='127.0.0.1:8848', username='test', password='', endpoint='', namespace='public', watchDelay=30000, logName='', service='yuntu-qiming', weight=1.0, clusterName='DEFAULT', group='yuntu', namingLoadCacheAtStart='false', metadata={preserved.heart.beat.timeout=10000, IPv6=null, preserved.register.source=SPRING_CLOUD, preserved.heart.beat.interval=3000}, registerEnabled=true, ip='192.168.10.122', networkInterface='', port=8501, secure=false, accessKey='', secretKey='', heartBeatInterval=3000, heartBeatTimeout=10000, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}},
com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
   at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:639)
   at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:619)
 ……
   at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:232)
   at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:78)
   at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:133)

原因分析

我的应用bootstrap.propeties 中明明已经配置了nacos作为注册中心,但是应用在启动后,一直显示的注册地址是127.0.0.1【NacosDiscoveryProperties{serverAddr=‘127.0.0.1:8848’】,这就很奇怪。
我尝试更改其他配置的值,在应用启动时打印出来,都能修改成功。唯独下面的几个配置项,无论如何修改,值都不会变化。

# dubbo注册中心
spring.cloud.nacos.discovery.server-addr=192.168.10.188:8848
# 注册中心分组,全部产品配置同一个分组,方便dubbo使用注册中心相互消费
spring.cloud.nacos.discovery.group=rpc
spring.cloud.nacos.discovery.namespace=public

于是,通过代码debug,观察serverAddr的值,发现该值一直为空。

经过反复几次实验,终于想到,会不会是其他地方也配置了该配置项,且没有配置值,从而导致该配置项的值一直是空。

于是排查启动命令是否有参数,再把nacos应用要读取的配置文件都检查一遍。

从bootstrap.properties 中可以看到,应用总共会读取三个配置文件:
common.properties,common-holms.properties,data-center.properties
那就挨个检查这三个配置文件吧,果不其然,在common.properties中终于找到。又是粗心的某位同事……
在这里插入图片描述
原因总结:应用启动 -> 率先读取bootstrap.properties -> 加载nacos上配置 -> 读取common.properties -> 使用common.properties 中配置覆盖掉bootstrap.properties 内容 -> 导致配置为空。

重复配置,且配置为空,导致读取不到nacos discovery 相关的配置信息。因为相同的key,被最后一组配置覆盖了。

问题解决

去掉 nacos上的common.properties 关于nacos discovery 相关重复的配置项,再次重启应用。问题解决

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长乐smile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值