您的位置:首页 > 运维架构 > 网站架构

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

2017-02-17 21:47 531 查看
理论仍然不解释,更多参考: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


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



添加策略:

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

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

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



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

rabbitmqctl set_policy kk-all "^kk" "{""ha-mode"":""all"",""ha-sync-mode"":""automatic""}"
添加队列:
kk_queue 队列以 “kk” 开头,自动同步到集群各个节点,“Feature”会出现 “kk-all”。 “+1” 为绿色,表示队列已经同步到集群中的一个节点。

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



创建 exchange 及绑定队列:

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

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



发布消息:

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



查看队列消息:

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



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

其他参考:

RabbitMQ高可用方案总结

RabbitMQ镜像模式集群可用性测试总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: