消息中间件 NATS 集群的构建与使用
2017-12-26 本文已影响256人
Anoyi
NATS 是一个开源的、轻量级的、高性能的分布式消息通信系统,实现了高可伸缩性和优雅的发布/订阅模型。
NATS 适合云基础设施的消息通信系统、物联网设备消息通信和微服务架构。
❤️ 环境准备
三台服务器,建立 Docker Swarm 集群,一个 Manager,两个 Worker。
- docker 版本:17-09
- nats 版本:1.0.4
❤️ Nats 集群架构设计
架构图❤️ 搭建集群
1、【Manager】创建集群网络
docker network create -d overlay --attachable mongo
--attachable 允许其他容器加入此网络
2、创建 Nats 集群
2.1、【Manager】创建 stack.yml
version: '3.3'
services:
nats1:
image: registry.docker-cn.com/library/nats
command: --cluster nats://0.0.0.0:5222 -routes nats://nats2:5222,nats://nats3:5222
ports:
- 4222
networks:
- nats
deploy:
restart_policy:
condition: on-failure
replicas: 1
placement:
constraints:
- node.hostname==manager
nats2:
image: registry.docker-cn.com/library/nats
command: --cluster nats://0.0.0.0:5222 -routes nats://nats1:5222,nats://nats3:5222
ports:
- 4222
networks:
- nats
deploy:
restart_policy:
condition: on-failure
replicas: 1
placement:
constraints:
- node.hostname==worker1
nats3:
image: registry.docker-cn.com/library/nats
command: --cluster nats://0.0.0.0:5222 -routes nats://nats1:5222,nats2:5222
ports:
- 4222
networks:
- nats
deploy:
restart_policy:
condition: on-failure
replicas: 1
placement:
constraints:
- node.hostname==worker2
networks:
nats:
external: true
2.2、【Manager】启动集群
docker stack deploy -c stack.yml nats
2.3、【Manager】查看服务的启动情况
docker service ls
3、连接集群
- 外部【用于测试】:查看端口随机的端口映射(netstat -ntlp),一般为 30000~30002,连接时指定多个URL:
nats://managerIP:30000
nats://managerIP:30001
nats://managerIP:30002
- 内部【限 nats 网络下的服务或容器】:
nats://nats1:4222
nats://nats2:4222
nats://nats3:4222
❤️ 在 Spring Boot 中连接 Nats 集群
- Github 地址: https://github.com/ChinaSilence/spring-boot-starter-nat
- Gitee 地址:https://gitee.com/yyd-code/spring-boot-starter-nats