本指南旨在搭建同时具备持久化能力 (NATS JetStream) 和无持久化能力 (传统 NATS) 的 NATS 消息队列集群
All-in-One 的 NATS 集群
All-in-One 的 NATS 集群主要用于为研发和测试快速在一个虚拟机或本地 laptop 搭建一个 NATS 集群,包括 3 个有持久化能力的 NATS JetStream 节点和 3 个无持久化能力的标准 NATS 节点
# 创建集群
docker compose -f ./nats-cluster/allinone/allinone.yml up -d
# 查看集群内的容器
docker ps
# 拉起使用容器网络的容器环境进行测试
docker run -it --rm --network nats-cluster natsio/nats-box:latest
nats --server nats://js1:4222 --user admin --password admin server report jetstream
# 拉起使用 host network 的容器环境进行测试
docker run -it --rm --network host natsio/nats-box:latest
nats context add local --server nats://localhost:14222,nats://localhost:14223,nats://localhost:14224,nats://localhost:14225,nats://localhost:14226,nats://localhost:14227
nats context select local
nats --user admin --password admin server report health
nats --user admin --password admin server report jetstream
# 销毁集群
docker compose -f ./nats-cluster/allinone/allinone.yml down分布式的 NATS 集群
在三台虚拟机搭建一个 NATS 集群,包括 3 个有持久化能力的 NATS JetStream 节点和 3 个无持久化能力的标准 NATS 节点。
每台虚拟机都包含一个有持久化能力的 NATS JetStream 节点和一个无持久化能力的标准 NATS 节点。
# 按实际情况修改 nats-cluster/distributed/config.yml 中各节点的 IP
ports:
jetstream: 16222 # JetStream default (cluster) port
nats: 16223 # NATS default (cluster) port
nodes:
node1:
ip: 192.168.0.11
jetstream:
max_mem_store: 1Gb
max_file_store: 10Gb
node2:
ip: 192.168.0.12
jetstream:
max_mem_store: 1Gb
max_file_store: 10Gb
node3:
ip: 192.168.0.13
jetstream:
max_mem_store: 1Gb
max_file_store: 10Gb
# 重新生成所有节点 NATS 持久化和非持久化节点部署的配置
cd nats-cluster
pip install -r requirements.txt
python3 generate.py all
# 重新生成指定节点 NATS 持久化和非持久化节点部署的配置
# 清除所有 NATS 节点配置# 创建集群
docker compose -f ./nats-cluster/distributed/node1/docker-compose.yml up -d
docker compose -f ./nats-cluster/distributed/node2/docker-compose.yml up -d
docker compose -f ./nats-cluster/distributed/node3/docker-compose.yml up -d
# 测试方法参考 allinone 章节
# 销毁集群
docker compose -f ./nats-cluster/distributed/node1/docker-compose.yml down
docker compose -f ./nats-cluster/distributed/node2/docker-compose.yml down
docker compose -f ./nats-cluster/distributed/node3/docker-compose.yml downTrouble Shooting
- 查看日志
# 使用 docker compose 查看所有或特定容器日志
docker compose -f ./nats-cluster/allinone/allinone.yml logs
docker compose -f ./nats-cluster/allinone/allinone.yml logs <container name like: n1 or js1>
# 使用 docker 查看所有或特定容器日志
docker logs
docker logs <container name like: n1 or js1>
# 查看当前日志驱动和限制是否生效
docker inspect n1 | grep -A6 LogConfig# 设置容器日志文件最多保存 5 个,每个最多 20 MB
n1:
image: nats:2.10
container_name: n1
command: ["-c", "/etc/nats/nats.conf"]
volumes:
- ./nats1.conf:/etc/nats/nats.conf:ro
ports:
- "14223:4222"
- "18223:8222"
- "16223:6222"
logging:
driver: "json-file"
options:
max-size: "20m" # 单个日志文件最大 20MB
max-file: "5" # 最多保留 5 个文件(共 ~100MB)# 查看当前日志驱动和限制是否生效:
docker inspect n1 | grep -A6 LogConfig
"LogConfig": {
"Type": "json-file",
"Config": {
"max-size": "20m",
"max-file": "5"
}
}On this page
Contributors
Apache License 2.0
Created November 11, 2025
Updated January 2, 2026