Nacos 服务端从 1.x 升级到 2.x 时,1.2.0 及以上版本的客户端可继续连接无需立即升级,但 1.1.X 及以下版本客户端无法连接 2.x 服务端。若客户端也需升级到 2.x,必须开放 9848 和 9849 端口并确认网络防火墙配置。
先说结论:Nacos 2.x 服务端向后兼容 1.2.0+ 客户端,但 2.x 客户端无法连接 1.x 服务端,升级时需优先确认客户端版本阈值和端口配置。
- 适合:服务端已升级至 2.x,客户端版本为 1.2.0 或更高
- 先准备:检查客户端版本、开放 9848/9849 端口、备份数据库表结构
- 验收:使用 telnet 测试 gRPC 端口连通性,查看客户端日志无连接超时错误
命令速用版
快速检查客户端版本和端口连通性:
telnet ${nacos.server.address} 9848grep "nacos-client" pom.xml
若从 1.x 直接升级到 2.1.0 及以上,需在 application.properties 中配置:
nacos.core.support.upgrade.from.1x=true
为什么会这样
Nacos 2.x 的核心变化是通信协议从 HTTP 长轮询升级为 gRPC,导致端口和连接方式发生变化。Nacos 2.X 服务端为保持向后兼容,同时维护 HTTP 和 gRPC 两套协议,但 2.x 客户端仅使用 gRPC,无法连接仅支持 HTTP 的 1.x 服务端。低于 1.2.0 的客户端因协议差异无法与 2.x 服务端建立连接。
分步处理
步骤 1:确认客户端版本阈值
检查现有客户端版本,必须为 1.2.0 或以上。Nacos 2.X 服务端仅兼容 Nacos 1.2.0 及之后的所有 Nacos 1.X 客户端版本,低于此版本的客户端无法连接 2.X 服务端。
步骤 2:配置平滑升级参数
若从 1.x 直接升级到 2.1.0 及以上版本,需在 application.properties 文件中设置 nacos.core.support.upgrade.from.1x=true。2.0.0 版本默认开启双写能力,但 2.0.0-alpha 版本无法进行平滑升级。
步骤 3:开放 gRPC 端口
Nacos 2.x 相比 1.x 新增两个端口,在主端口(默认 8848)基础上偏移生成:9848 用于客户端 gRPC 请求服务端,9849 用于服务端间同步。使用 VIP/nginx 时需配置 TCP 转发,不能配置 HTTP2 转发。
步骤 4:数据库表结构变更
升级前对比 mysql-schema.sql 文件,若存在变化需执行 SQL 变更。从 2.0.X 升级时需要执行所有 SQL,从 2.1.X 之后版本升级仅需执行最后三行。
怎么验证是否生效
使用 telnet 测试 gRPC 端口是否畅通:telnet ${nacos.server.address} 9848。查看客户端启动日志,确认无"Connection is unregistered"或"Client not connected,current status:STARTING"错误。检查应用能否正常拉取配置,无"Read timed out"或"no available server"报错。
常见坑
1.x 客户端支持将于服务端 v3.2 版本后停止支持,需尽快升级至 2.x 或 3.x 客户端。2.0.3 版本修复了 Linux/Unix/Mac 系统下 JAVA_HOME 路径包含空格时的启动错误,建议升级至此版本以避免 Startup Error。关闭双写后将失去平滑降级功能,需在集群升级并稳定运行后操作。K8s 环境部署时需保证对外暴露端口相差 1000,NodePort 端口需手动修改。
常见问题
Nacos 1.2.2 客户端需要升级到 2.x 吗?
不需要立即升级。Nacos 2.x 服务端兼容 1.2.0 及以上客户端,但若需使用 2.2.0 及以上版本的新 API 特性,建议规划客户端升级。
升级后出现"Read timed out"错误怎么办?
先检查 9848 端口是否开放,使用 telnet 测试连通性。若端口正常,确认客户端版本不低于 1.2.0,并检查网络防火墙配置。
2.x 客户端能连接 1.x 服务端吗?
不能。Nacos 2.x 客户端使用 gRPC 协议,无法兼容仅支持 HTTP 的 1.x 服务端,需先升级服务端再升级客户端。
从 1.x 升级到 2.1.0 需要特殊配置吗?
需要。在 application.properties 中设置 nacos.core.support.upgrade.from.1x=true,否则无法支持平滑升级。
参考来源
Nacos 官方兼容性文档:Nacos 2.0.0 兼容性文档,nacos.io/zh-cn/docs/2.0.0-compatibility.html
Nacos 升级手册:Upgrade Manual,nacos.io/zh-cn/docs/upgrade.html
阿里云开发者社区:Nacos 1.x 升级至 2.x 版本流程及遇到的问题 (客户端),developer.aliyun.com
CSDN 技术博客:nacos 从 1.x 升级到 2.x 需要注意的地方,csdn.net