NATS安装部署
2026/1/15大约 3 分钟
NATS安装部署
安装方式
NATS 提供多种安装方式,可根据实际需求选择。
1. Docker 安装(推荐)
最简单的方式,适合开发和测试环境。
# 拉取镜像
docker pull nats:latest
# 启动 NATS 服务器
docker run -d --name nats-server -p 4222:4222 -p 8222:8222 nats
# 启动带 JetStream 的 NATS
docker run -d --name nats-js -p 4222:4222 -p 8222:8222 nats -js端口说明:
4222:客户端连接端口8222:HTTP 监控端口6222:集群路由端口
2. Docker Compose 部署
version: '3.8'
services:
nats:
image: nats:latest
container_name: nats-server
ports:
- "4222:4222" # 客户端端口
- "8222:8222" # 监控端口
- "6222:6222" # 集群端口
command:
- "--jetstream"
- "--store_dir=/data"
- "--http_port=8222"
volumes:
- nats-data:/data
restart: unless-stopped
volumes:
nats-data:# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f nats3. 二进制安装
# macOS
brew install nats-server
# Linux (下载二进制)
curl -L https://github.com/nats-io/nats-server/releases/download/v2.10.7/nats-server-v2.10.7-linux-amd64.zip -o nats-server.zip
unzip nats-server.zip
sudo mv nats-server-v2.10.7-linux-amd64/nats-server /usr/local/bin/
# 启动服务器
nats-server
# 启动带 JetStream
nats-server -js4. Kubernetes 部署
使用 Helm Chart 部署:
# 添加 NATS Helm 仓库
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm repo update
# 安装 NATS
helm install nats nats/nats
# 安装带 JetStream 的 NATS
helm install nats nats/nats --set jetstream.enabled=true安装 NATS CLI
NATS CLI 是官方命令行工具,用于管理和调试 NATS。
# macOS
brew tap nats-io/nats-tools
brew install nats-io/nats-tools/nats
# Linux
curl -L https://github.com/nats-io/natscli/releases/download/v0.1.1/nats-0.1.1-linux-amd64.zip -o nats-cli.zip
unzip nats-cli.zip
sudo mv nats-0.1.1-linux-amd64/nats /usr/local/bin/
# 验证安装
nats --version配置文件
基础配置
创建配置文件 nats-server.conf:
# 服务器监听端口
port: 4222
# HTTP 监控端口
http_port: 8222
# 服务器名称
server_name: nats-1
# 日志配置
debug: false
trace: false
logtime: true
log_file: "/var/log/nats/nats.log"
# 最大连接数
max_connections: 65536
# 最大消息大小 (1MB)
max_payload: 1048576
# 写入超时
write_deadline: "2s"JetStream 配置
# 启用 JetStream
jetstream {
# 存储目录
store_dir: "/data/jetstream"
# 最大内存
max_mem: 1G
# 最大文件存储
max_file: 10G
}认证配置
# 用户名密码认证
authorization {
users = [
{ user: admin, password: admin123 }
{ user: client, password: client123 }
]
}完整配置示例
# nats-server.conf
port: 4222
http_port: 8222
server_name: nats-main
# 日志
debug: false
trace: false
logtime: true
# 限制
max_connections: 65536
max_payload: 1048576
# JetStream
jetstream {
store_dir: "/data/jetstream"
max_mem: 1G
max_file: 10G
}
# 认证
authorization {
users = [
{ user: admin, password: admin123, permissions: { publish: ">", subscribe: ">" } }
{ user: client, password: client123, permissions: { publish: "client.>", subscribe: "client.>" } }
]
}启动时指定配置文件:
nats-server -c nats-server.conf验证安装
1. 检查服务状态
# 查看服务器信息
nats server info
# 查看监控信息
curl http://localhost:8222/varz输出示例:
{
"server_id": "NCXXX...",
"server_name": "nats-main",
"version": "2.10.7",
"proto": 1,
"go": "go1.21.5",
"host": "0.0.0.0",
"port": 4222,
"max_connections": 65536,
"ping_interval": 120000000000,
"ping_max": 2,
"http_host": "0.0.0.0",
"http_port": 8222,
"connections": 0,
"total_connections": 0,
"routes": 0,
"remotes": 0,
"in_msgs": 0,
"out_msgs": 0,
"in_bytes": 0,
"out_bytes": 0,
"subscriptions": 0,
"jetstream": {
"config": {
"max_memory": 1073741824,
"max_storage": 10737418240,
"store_dir": "/data/jetstream"
}
}
}2. 测试消息收发
打开两个终端窗口:
终端 1 - 订阅消息:
nats sub test.subject终端 2 - 发布消息:
nats pub test.subject "Hello NATS!"终端 1 输出:
[#1] Received on "test.subject"
Hello NATS!3. 测试请求响应
终端 1 - 启动响应服务:
nats reply help.request "I can help you"终端 2 - 发送请求:
nats request help.request "Need help"输出:
[#1] Received on "_INBOX.xxx" in 1.234ms
I can help you监控端点
NATS 提供多个 HTTP 监控端点:
| 端点 | 说明 |
|---|---|
/varz | 服务器通用信息 |
/connz | 连接信息 |
/routez | 路由信息 |
/subsz | 订阅信息 |
/jsz | JetStream 信息 |
/healthz | 健康检查 |
# 查看连接信息
curl http://localhost:8222/connz
# 查看订阅信息
curl http://localhost:8222/subsz
# 健康检查
curl http://localhost:8222/healthz小结
本章介绍了 NATS 的多种安装方式,包括 Docker、二进制和 Kubernetes 部署。同时讲解了配置文件的编写和服务验证方法。
面试题预览
常见面试题
- NATS 默认使用哪些端口?各有什么作用?
- 如何启用 NATS 的 JetStream 功能?
- NATS 提供了哪些监控端点?
