項(xiàng)目環(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>
問題描述
本地能夠正常讀取到遠(yuǎn)程N(yùn)acos配置中心的配置項(xiàng),但是部署到服務(wù)器報(bào)錯(cuò):
[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=
看錯(cuò)誤提示貌似是沒有讀取到配置的server-addr,導(dǎo)致使用了默認(rèn)的nacos服務(wù)器地址。但是檢查配置文件 resources/bootstrap.yml
鱼冀,配置確實(shí)是存在的,檢查package的jar包配置文件也是存在的部念,相關(guān)配置的環(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
問題排查
手動(dòng)將bootstrap配置文件注釋掉,可以看到 spring-cloud-starter-alibaba-nacos-config
自動(dòng)配置啟動(dòng)了nacos配置中心荸哟,由于不存在相關(guān)配置文件假哎,啟動(dòng)報(bào)錯(cuò):[NACOS SocketTimeoutException httpGet] currentServerAddr:http://localhost:8848, err : connect timed out鞍历,問題得到復(fù)現(xiàn)舵抹。
產(chǎn)生問題的原因即bootstrap.yml
沒有被讀取到。
查看本地及遠(yuǎn)程服務(wù)器相關(guān)啟動(dòng)參數(shù)劣砍,發(fā)現(xiàn)遠(yuǎn)程服務(wù)器Java啟動(dòng)參數(shù)指定了 -Dspring.config.location=/data/application.yaml
惧蛹,移除此參數(shù)再進(jìn)行啟動(dòng),nacos配置項(xiàng)從遠(yuǎn)程服務(wù)器獲取恢復(fù)正常。
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 參數(shù)導(dǎo)致 bootstrap.yaml 配置文件不能正常讀取