NATS 客户端接入口
4222 是 NATS 服务端接受客户端连接的默认端口。NATS 是轻量的发布订阅消息系统,客户端连 4222,集群内部节点之间再用 6222 做路由互联。除了核心的发布订阅与请求响应,它还能通过 JetStream 提供持久化流与键值存储,因此在云原生与边缘计算场景里常被用作服务间通信的总线。
基本信息
| 服务 | NATS server 客户端接入 |
|---|---|
| 协议 | TCP(默认 4222) |
| 集群与监控 | 6222 节点路由、8222 状态接口 |
| 用途 | 发布订阅、请求响应、JetStream 持久化 |
| 安全等级 | 必须启用鉴权(token、NKey 或账号口令) |
典型使用场景
- 微服务之间用发布订阅解耦,充当事件驱动架构的消息总线
- 边缘设备与云端做轻量消息上报,协议开销比传统消息队列小
- 用 JetStream 做持久化流处理或键值存储,替代部分队列场景
- 排查消费者收不到消息时确认服务端鉴权与主题权限配置
- 上线前核对集群的客户端口与路由口是否都已按需放行
探测与检查鉴权
探测与检查鉴权
nats --server nats://host:4222 sub "test.>" # 仅限授权环境
ss -lntp | grep -E ':(4222|6222) ' # 服务端监听确认
curl -s http://host:8222/varz | head -20 # 查看运行状态NATS 端口与鉴权
| 项目 | 默认值 | 说明 |
|---|---|---|
| 客户端接入 | 4222 | 应用与命令行工具连接的入口 |
| 集群路由 | 6222 | 节点间互联,仅集群网段可达 |
| HTTP 监控 | 8222 | 状态与统计接口,建议只对内网开放 |
| 鉴权方式 | token / NKey / 账号口令 | 未配置时允许匿名连接 |
NATS 默认不做鉴权,能连上就能订阅与发布。生产环境至少要配置 token、NKey 或账号口令,并按账号划分主题权限;否则任何人都能窃听业务消息,或向关键主题注入伪造数据。
排障顺序:连不上先看客户端口是否放行、服务端是否监听;能连上但收不到消息,多半是主题权限或账号配置问题;集群模式下只有部分节点收不到消息,检查路由口是否被防火墙拦断,节点各自成环时消息不会跨节点转发。