Nacos 2.0 版本客户端连接服务端报错 Connection refused 怎么解决?

文章导读
Nacos 2.0 客户端连接报错 Connection refused,核心原因通常是服务端 gRPC 端口(默认 9848)未开放,或客户端 SDK 版本过低不支持 gRPC 协议。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

Nacos 2.0 客户端连接报错 Connection refused,核心原因通常是服务端 gRPC 端口(默认 9848)未开放,或客户端 SDK 版本过低不支持 gRPC 协议。

先说结论:优先排查网络策略是否放行了偏移端口,再确认客户端依赖版本。

  • 先确认:服务端 9848 端口是否监听
  • 先处理:防火墙或安全组放行 gRPC 端口
  • 再验证:客户端日志不再出现重连报错

命令速用版

如果手头有服务器权限,先用以下命令快速检查端口连通性:

telnet <nacos-server-ip> 9848

若 telnet 未安装(常见于最小化 Linux 发行版),可使用以下替代命令:

nc -zv <nacos-server-ip> 9848
curl -v telnet://<nacos-server-ip>:9848

如果连接不通,说明网络层面就被拦截了,无需继续排查应用配置。

为什么会这样

Nacos 1.x 版本主要基于 HTTP 长轮询,客户端只连接 8848 端口。到了 2.0 版本,架构升级为 gRPC 长连接,通信效率更高,但端口策略变了。

Nacos 2.0 版本客户端连接服务端报错 Connection refused 怎么解决?

官方设计中,gRPC 端口是在主端口基础上偏移 1000。也就是说,如果你配置的服务器地址是 8848,客户端实际会尝试连接 9848 进行 gRPC 通信。如果防火墙、安全组或容器网络只放行了 8848,9848 被阻断,客户端就会报 Connection refused。

另外,旧版客户端 SDK 不支持 gRPC 协议,强行连接 2.0 服务端也会失败。

分步处理

1. 检查服务端端口监听

登录 Nacos 服务端机器,执行 netstat 或 ss 命令:

Nacos 2.0 版本客户端连接服务端报错 Connection refused 怎么解决?
ss -tunlp | grep 9848

如果没有看到 9848 端口监听,说明服务端启动异常或版本不对。确认服务端确实是 2.x 版本。

2. 检查网络策略

如果是云服务器,检查安全组规则。如果是 Linux 本机,检查 iptables 或 firewalld。确保 TCP 协议的 9848 端口是入站允许的。

如果是 Docker 部署,检查启动参数是否映射了该端口:

-p 9848:9848 -p 9849:9849

集群模式下还需要注意 9849 端口用于服务端间同步。

Nacos 2.0 版本客户端连接服务端报错 Connection refused 怎么解决?

3. 升级客户端 SDK

检查项目的依赖文件。Java 客户端通常需要升级到 2.x 版本。例如 Maven 依赖(Spring Cloud Alibaba 2021.0.1.0 及以上版本默认支持):

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2021.0.1.0</version> <!-- 请根据 Spring Cloud 版本查阅兼容矩阵 -->
</dependency>

怎么验证是否生效

查看客户端应用日志,通常位于 logs/nacos/nacos.log 或项目标准输出。

成功连接后,日志中不应再频繁出现 Connection refused 或 Remote exception 字样。可以在 Nacos 控制台“服务管理”列表查看服务实例状态,如果心跳正常,状态会显示为“健康”。

常见坑

  • 端口偏移误解:只开了 8848,以为够了,忽略了 9848。
  • 集群端口遗漏:集群部署时,9849 端口也需要在节点间互通,否则集群状态异常。
  • 客户端版本混杂:同一个项目中混用了 1.x 和 2.x 的依赖,导致协议协商失败。
  • Docker 网络模式:使用 host 模式通常没问题,但 bridge 模式必须显式映射偏移端口。

参考来源

  • Nacos 官方文档 - 2.0 架构升级说明 (https://nacos.io/)
  • Alibaba Nacos GitHub Releases (https://github.com/alibaba/nacos)