新手配置nacos的踩坑记录 晚上在用别人的yaml文件配置naocs,如下
spring:
cloud:
nacos:
config:
server-addr: xxx.xxx.xxx.xxx:8848
username: root
password: 061966
file-extension: yaml
extension-configs:
- data-id: helloworld${unique-name:}.yaml
group: DEFAULT_GROUP
refresh: true
但是spring启动之后,发现nacos仍然尝试启动在默认本地端口127.0.0.1:8848,grok之后发现需要强制指定discovery:server-addr
cloud:
nacos:
discovery:
server-addr: xxx.xxx.xxx.xxx:8848
config:
server-addr: xxx.xxx.xxx.xxx:8848
username: root
password: 061966
file-extension: yaml
extension-configs:
- data-id: helloworld${unique-name:}.yaml
group: DEFAULT_GROUP
refresh: true
原因如下:
-
Nacos 客户端分为两个主要模块:
- 配置管理模块(spring.cloud.nacos.config):负责加载远程配置(如 onethread-nacos-cloud-example.yaml)。
- 服务发现模块(spring.cloud.nacos.discovery):负责服务注册与发现(如将应用注册到 Nacos 或查询其他服务实例)。
-
这两个模块的服务器地址配置是独立的:
- spring.cloud.nacos.config.server-addr 指定配置管理模块的 Nacos 服务器地址。
- spring.cloud.nacos.discovery.server-addr 指定服务发现模块的 Nacos 服务器地址。
-
如果只配置了 spring.cloud.nacos.config.server-addr(如你的原始配置),服务发现模块会回退到默认地址(通常是 127.0.0.1:8848 或其他默认值),这导致客户端尝试连接本地地址而失败。