Nacos 配置踩坑

126 阅读1分钟

新手配置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 或其他默认值),这导致客户端尝试连接本地地址而失败。