NACOS配置中心報錯 currentServerAddr:http://localhost:8848

項目環(huán)境

  • Springboot 2.4.1

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

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>

          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.4</version>
        </dependency>

問題描述

本地能夠正常讀取到遠程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包配置文件也是存在的,相關配置的環(huán)境變量也是存在的。

  • 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沒有被讀取到。
查看本地及遠程服務器相關啟動參數,發(fā)現遠程服務器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 配置文件不能正常讀取

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容