NACOS配置中心报错 currentServerAddr:http://localhost:8848

项目环境

  • Springboot 2.4.1

Nacos配置中心依赖(Springboot 2.4.x Nacos依赖)

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2021.1
        

          
            org.springframework.cloud
            spring-cloud-starter-bootstrap
            3.1.4
        

问题描述

本地能够正常读取到远程Nacos配置中心的配置项,但是部署到服务器报错:
[NACOS SocketTimeoutException httpGet] currentServerAddr:http://localhost:8848,err : connect timed out
[fixed-localhost_8848] [sub-server] get server config exception, dataId=null.properties, group=DEFAULT_GROUP, tenant=

看错误提示貌似是没有读取到配置的server-addr,导致使用了默认的nacos服务器地址。但是检查配置文件 resources/bootstrap.yml,配置确实是存在的,检查package的jar包配置文件也是存在的,相关配置的环境变量也是存在的。

  • bootstrap.yml
server:
  port: 8080
spring:
  application:
    name: hello
  cloud:
    nacos:
      config:
        enabled: true
        refresh-enabled: true
        access-key: ${NACOS_ACCESS_KEY}
        secret-key: ${NACOS_SECRET_KEY}
        server-addr: ${NACOS_ADDR}
        namespace: ${NACOS_NAMESPACE}
        group: ${NACOS_GROUP}
        prefix: ${spring.application.name}
        file-extension: yaml

问题排查

手动将bootstrap配置文件注释掉,可以看到 spring-cloud-starter-alibaba-nacos-config 自动配置启动了nacos配置中心,由于不存在相关配置文件,启动报错:[NACOS SocketTimeoutException httpGet] currentServerAddr:http://localhost:8848, err : connect timed out,问题得到复现。

产生问题的原因即bootstrap.yml没有被读取到。
查看本地及远程服务器相关启动参数,发现远程服务器Java启动参数指定了 -Dspring.config.location=/data/application.yaml,移除此参数再进行启动,nacos配置项从远程服务器获取恢复正常。

2022-11-17 11:12:53.750  INFO 12636 --- [           main] c.a.n.c.c.impl.LocalConfigInfoProcessor  : LOCAL_SNAPSHOT_PATH:C:\Users\longyuan\nacos\config
2022-11-17 11:12:54.254  INFO 12636 --- [           main] c.a.nacos.client.config.impl.Limiter     : limitTime:5.0
2022-11-17 11:12:54.392  INFO 12636 --- [           main] c.a.nacos.client.config.utils.JvmUtil    : isMultiInstance:false
2022-11-17 11:12:54.449  WARN 12636 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[hello.yaml] & group[uat]
2022-11-17 11:12:54.450  INFO 12636 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-hello.yaml,uat'}, BootstrapPropertySource {name='bootstrapProperties-hello,uat'}]

问题原因:-Dspring.config.location 参数导致 bootstrap.yaml 配置文件不能正常读取

你可能感兴趣的:(NACOS配置中心报错 currentServerAddr:http://localhost:8848)