Nacos 1.x 升级到 2.0 版本需要注意哪些兼容性配置变更?

文章导读
升级 Nacos 1.x 到 2.0 最稳妥的方案是先升级服务端并开放新增的 gRPC 端口,再分批升级客户端 SDK,适合大多数生产环境平滑过渡。
📋 目录
  1. 一 环境前置要求
  2. 二 核心配置与依赖
  3. 三 服务端升级步骤
  4. 四 怎么验证是否生效
  5. 五 常见坑与排查
  6. 六 参考来源
A A

升级 Nacos 1.x 到 2.0 最稳妥的方案是先升级服务端并开放新增的 gRPC 端口,再分批升级客户端 SDK,适合大多数生产环境平滑过渡。

先说结论:Nacos 2.0 通信协议从 HTTP 变为 gRPC,必须同时调整服务端端口配置和客户端 SDK 版本,否则服务发现或配置监听会失效。

  • 适合: 需要长连接支持、追求更低延迟的生产环境集群。
  • 前置要求:JDK 8 及以上,防火墙放行 9848 和 9849 端口,备份 data 目录。
  • 验收: 客户端日志无连接报错,控制台能看到健康实例。

环境前置要求

1. JDK 版本
Nacos 2.0 服务端和客户端 SDK 均要求 JDK 8 或更高版本(推荐 JDK 8/11)。升级前请执行 java -version 确认环境,避免启动失败。

2. 数据库建议
生产环境建议使用外部 MySQL 数据库存储配置和服务信息。若使用嵌入式 Derby 数据库,升级前务必备份 data 目录,防止数据丢失。

3. 端口规划
除原有 8848 端口外,必须确保 9848(客户端 gRPC)和 9849(服务端集群同步)端口未被占用且防火墙已放行。

核心配置与依赖

1. 客户端依赖升级(Maven 示例)
将 Spring Cloud Alibaba 依赖升级至支持 Nacos 2.0 的版本。以下为例示版本,具体请参考官方兼容性矩阵:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.0</version>
</dependency>

2. 客户端连接配置
在 application.yml 中确认地址配置,2.0 版本客户端会自动识别 gRPC 端口(主端口 +1000),无需额外配置 gRPC 地址:

Nacos 1.x 升级到 2.0 版本需要注意哪些兼容性配置变更?
spring:
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      namespace: your-namespace-id

3. 服务端关键配置
检查 conf/application.properties,确保端口配置未被修改。gRPC 端口默认基于主端口计算,无需额外配置,但需确认 server.port=8848 未被冲突占用。

服务端升级步骤

1. 停止服务与备份
停止现有 Nacos 服务。备份整个安装目录,特别是 conf 配置文件和 data 数据目录(嵌入式数据库场景)。

2. 部署新版本
下载 Nacos 2.x 安装包,解压覆盖原有程序文件。注意: 不要覆盖原有的 conf/application.properties 和 conf/cluster.conf,保留原有配置。

3. 检查 JVM 参数
编辑 bin/startup.sh 或 startup.cmd,确认 JVM 内存参数(Xms/Xmx)满足生产需求,默认值可能偏小。

4. 启动与观察
启动服务端,观察 logs/start.out 确认无报错,且监听端口包含 9848/9849。

怎么验证是否生效

1. 端口监听检查
在服务端执行以下命令,确认三个端口均处于监听状态:

Nacos 1.x 升级到 2.0 版本需要注意哪些兼容性配置变更?
netstat -tunlp | grep -E "8848|9848|9849"

2. 客户端日志验证
客户端启动日志中应出现 "Nacos Client 2.0" 或 gRPC 连接成功标识,不应频繁出现 "Connection refused" 或 HTTP 超时错误。

3. 控制台健康检查
登录 Nacos 控制台,查看服务列表,确认实例状态为 "健康",且最后心跳时间是在最近几秒内更新。

常见坑与排查

1. 防火墙遗漏新端口
运维习惯只开放 8848,升级 2.0 后忘记开放 9848/9849,导致客户端能连通 HTTP 接口但无法建立 gRPC 长连接,表现为注册不上。

2. 嵌入式数据丢失
直接覆盖安装未备份 data 目录,导致原有配置和服务信息丢失。生产环境强烈建议迁移至 MySQL。

3. 客户端版本混杂
同一集群内如果存在 1.x 和 2.x 的客户端混用,1.x 客户端可能无法正常工作,建议统一升级。

4. 负载均衡配置未更新
如果在 Nacos 前端挂了负载均衡器(如 Nginx),需要确认负载均衡策略是否支持 gRPC 长连接透传,否则可能导致连接中断。

参考来源

  • Nacos 官方 GitHub 仓库,Release Notes 页面,https://github.com/alibaba/nacos/releases
  • Nacos 官方文档,2.0 升级指南,https://nacos.io/zh-cn/docs/upgrade.html