初识nacos必知:为啥大家一致告诉你要以单机模式启动?

364 阅读2分钟

前言

版本:nacos 2.0.4SpringCloud 2021.0.6.1

nacos有两种模式,单机模式(standalone)和集群模式(cluster)。

  • 单机模式:适用于单机和测试环境。
  • 集群模式:适用于生产环境,默认开启。

如果你是一个之前从来没有了解过nacos的小白,几乎所有教程都会告诉你要修改启动模式为单机模式(standalone)。

那么我就是要以集群模式启动呢?

本人非常无聊,现在就来探索一下nacos以集群模式启动,SpringCloud的微服务怎么能够连接上。

探索过程

直接启动

yml配置了nacos的连接信息,如下:

默认情况下,nacos是免密的,所以无需配置账号密码信息

spring: 
  application:
    # 应用名称
    name: keso-gateway
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
...

nacos默认就是以集群模式启动的,先启动一下,我们可以看到如下启动信息:

2025-04-10 08:34:34,800 INFO The server IP list of Nacos is []

然后出现启动失败,出现如下异常:

集群配置

这是因为集群的配置文件conf/cluster.conf没有配置。将默认的cluster.conf.example改名为cluster.conf,并配置其中的集群地址为:

127.0.0.1:8848

然后重新启动nacos,可看到如下信息:

2025-04-10 08:34:34,800 INFO The server IP list of Nacos is [127.0.0.1:8848]

nacos成功启动了。但是Spring Cloud的微服务启动时,依然无法连接到nacos,大概会报如下错误:

com.alibaba.nacos.api.exception.NacosException: Nacos cluster is running with 1.X mode, can't accept gRPC request temporarily. Please check the server status or close Double write to force open 2.0 mode. Detail https://nacos.io/en-us/docs/2.0.0-upgrading.html.

强制开启2.0模式

这个错误提示表明nacos集群正以1.X模式运行,暂时无法接受gRPC请求。我们可以关闭双写以强制开启2.0模式。在conf/application.properties添加如下配置信息即可:

nacos.core.remote.raft.enabled=false

再次启动nacos,我们发现启动信息又有所变化:

2025-04-10 08:37:55,019 INFO The server IP list of Nacos is [127.0.0.1:8848, 172.168.0.119:8848]

其中172.168.0.119是我的本机ipv4地址。再次启动微服务,发现还是报相同的错误:

com.alibaba.nacos.api.exception.NacosException: Nacos cluster is running with 1.X mode, can't accept gRPC request temporarily. Please check the server status or close Double write to force open 2.0 mode. Detail https://nacos.io/en-us/docs/2.0.0-upgrading.html.

ipv4地址

有没有可能,我们不应该用127.0.0.1而是应该用ipv4地址呢?

  1. 修改conf/cluster.conf,仅保留ipv4地址
172.168.0.119:8848

2. 修改yml配置

spring: 
  application:
    # 应用名称
    name: keso-gateway
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 172.168.0.119:8848
      config:
        # 配置中心地址
        server-addr: 172.168.0.119:8848
...

再次重启nacos,重启微服务,连接成功!

集群部署

什么时候业务上有需要再说吧……