理论仍然不解释,更多参考:​​Clustering Guide​​​  , ​​Highly Available Queues​​​  ,​​ Load Balancing a RabbitMQ Cluster​


开放端口:

5672  This is the main AMQP port that clients use to talk to the broker.
15672 The management web interface.
4369 Used by EPMD (Erlang Port Mapper Daemon). This makes sure that the nodes can find each other.


绑定ip计算机名称:

C:\Windows\System32\drivers\etc\hosts 添加绑定如:
10.18.192.89 Itinside-89
10.18.192.194 ITinside-193


先备份 erlang.cookie ,目录或文件为:

%WINDIR% (c:\Windows\.erlang.cookie)
%HOMEDRIVE%%HOMEPATH% (C:\Users\%USERNAME%\.erlang.cookie )


将其中作为主节点的 c:\Windows\.erlang.cookie 覆盖目录 %WINDIR%  及 %HOMEDRIVE%%HOMEPATH%  下面的 .erlang.cookie 。文件可能隐藏,需设置显示隐藏文件。


在 Itinside-89 执行,管理员运行命令行!进入工具目录:

cd D:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.6\sbin


添加节点:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@ITinside-193
rabbitmqctl start_app
rabbitmqctl cluster_status

RabbitMQ 高可用:在 Windows 搭建镜像集群_ide



完成后可在管理界面查看:

RabbitMQ 高可用:在 Windows 搭建镜像集群_ide_02

添加策略:

^kk : 表示队列名称以字符 “kk” 开头的所有队列。

ha-mode : 设置为 “all” ,表示镜像所有队列,即以名称 “kk” 开头的所有队列都设置镜像。(几个选项:all,exactly,nodes)

 ha-sync-mode: 设置为 "automatic" ,消息自动同步节点中的队列。重启节点需要等待自动同步完成。(manual or automatic)

RabbitMQ 高可用:在 Windows 搭建镜像集群_Windows_03

添加策略使用命令添加如下(windows):

rabbitmqctl set_policy kk-all "^kk" "{""ha-mode"":""all"",""ha-sync-mode"":""automatic""}"


添加队列:

kk_queue 队列以 “kk” 开头,自动同步到集群各个节点,“Feature”会出现 “kk-all”。 “+1” 为绿色,表示队列已经同步到集群中的一个节点。

test_queue 为本地节点,创建时可选择在哪个创建在哪个节点上,不同步。(注:kk_queue 为 持久化队列)

RabbitMQ 高可用:在 Windows 搭建镜像集群_erlang_04

创建 exchange 及绑定队列:

创建 exchange 为 “testdirect” ,类型为 “direct”,exchange 在集群中自动同步到各个节点。

 “testdirect” 绑定集群队列 “kk_queue” , routing key 为 “rk”。(注:testdirect  为 持久化)

RabbitMQ 高可用:在 Windows 搭建镜像集群_Windows_05

发布消息:

此处在 “testdirect” 中发布消息 , 指定 routing key 为 “rk” ,即发送消息到 “rk” 绑定的队列中。

RabbitMQ 高可用:在 Windows 搭建镜像集群_ide_06

查看队列消息:

在各节点上查看队列消息, 都可以看到队列 “kk_queue” 存储有一条消息记录。

RabbitMQ 高可用:在 Windows 搭建镜像集群_Windows_07


即使关闭任意节点上的服务,其他节点仍然可以往队列中发送消息。当某节点联机后,队列自动同步该节点。所以,在集群中的多个节点下一步还可以做负载均衡。


其他参考:

​​RabbitMQ高可用方案总结​​

​RabbitMQ镜像模式集群可用性测试总结​