理论仍然不解释,更多参考:Clustering Guide , Highly Available Queues , Load Balancing a RabbitMQ Cluster
开放端口:
绑定ip计算机名称:
先备份 erlang.cookie ,目录或文件为:
将其中作为主节点的 c:\Windows\.erlang.cookie 覆盖目录 %WINDIR% 及 %HOMEDRIVE%%HOMEPATH% 下面的 .erlang.cookie 。文件可能隐藏,需设置显示隐藏文件。
在 Itinside-89 执行,管理员运行命令行!进入工具目录:
添加节点:
完成后可在管理界面查看:
添加策略:
^kk : 表示队列名称以字符 “kk” 开头的所有队列。
ha-mode : 设置为 “all” ,表示镜像所有队列,即以名称 “kk” 开头的所有队列都设置镜像。(几个选项:all,exactly,nodes)
ha-sync-mode: 设置为 "automatic" ,消息自动同步节点中的队列。重启节点需要等待自动同步完成。(manual or automatic)
添加策略使用命令添加如下(windows):
添加队列:
kk_queue 队列以 “kk” 开头,自动同步到集群各个节点,“Feature”会出现 “kk-all”。 “+1” 为绿色,表示队列已经同步到集群中的一个节点。
test_queue 为本地节点,创建时可选择在哪个创建在哪个节点上,不同步。(注:kk_queue 为 持久化队列)
创建 exchange 及绑定队列:
创建 exchange 为 “testdirect” ,类型为 “direct”,exchange 在集群中自动同步到各个节点。
“testdirect” 绑定集群队列 “kk_queue” , routing key 为 “rk”。(注:testdirect 为 持久化)
发布消息:
此处在 “testdirect” 中发布消息 , 指定 routing key 为 “rk” ,即发送消息到 “rk” 绑定的队列中。
查看队列消息:
在各节点上查看队列消息, 都可以看到队列 “kk_queue” 存储有一条消息记录。
即使关闭任意节点上的服务,其他节点仍然可以往队列中发送消息。当某节点联机后,队列自动同步该节点。所以,在集群中的多个节点下一步还可以做负载均衡。
其他参考:
RabbitMQ高可用方案总结