期待的部署架构web
其中,一个机房有两台机器部署MQ,并组成集群,有一个机房的MQ集群做为中心集群,其余机房的MQ集群将消息同步到中心MQ集群中。架构
配置hostsapp
同一机房集群的两台机器都要配置host,要保证能够经过hosts访问到同一机房的集群机器spa
好比同一机房的两台机插件
NODENAME=rabbit@111_100_222_217server
NODENAME=rabbit@111_100_222_218rabbitmq
111_100_222_217为同ip对应的域名ip
须要在这两台机上,配置/etc/hosts,增长配置以下:ci
111.100.222.217 111_100_222_217部署
111.100.222.218 111_100_222_218
加入集群
在两台机器上,先启动MQ:
./rabbitmq-server&(同机房集群里的都要启动,否则后面join不进去)
而后在其中每台机器上,执行命令:
./rabbitmq-plugins enable rabbitmq_federation rabbitmq_federation_management rabbitmq_management
./rabbitmqctl stop_app
./rabbitmqctl reset
./rabbitmqctl join_cluster rabbit@111_100_222_218
(218那台机器是
./rabbitmqctl join_cluster rabbit@111_100_222_217
目的是相互增长对方为集群)
最后,重启MQ
./rabbitmq-server&(若是存在则先kill掉 )
本地集群配置完毕
同步是单向的,都是单向同步到中心MQ
本地MQ集群的同步配置
在每一个本地MQ集群中,配置一下:(一个集群只须要一台机器配置,会自动扩散到集群)
增长admin用户并设置权限
./rabbitmqctl add_user admin yy-cloud
./rabbitmqctl set_permissions admin ".*" ".*" ".*"
./rabbitmqctl set_user_tags admin administrator
设置策略
./rabbitmqctl set_policy ha-federation "^federation" '{"ha-mode":"exactly","ha-params":2}' 0
本地MQ集群的同步配置完成了.
中心MQ集群配置
设置策略
./rabbitmqctl set_policy ha-federation "^federation" '{"ha-mode":"exactly","ha-params":2}' 0
而后上中心MQ的web管理界面,在Admin下有个Federation Upstreams插件,为每一个须要同步过来的MQ集群增长upstreams. 须要配置的是URI参数和Expries参数,其余参数一律默认就行
URI |
amqp://admin:yy-cloud@111.100.222.217:5672 amqp://admin:yy-cloud@111.100.222.218:5672 |
Expires |
3600000ms |
记得每一个须要同步过来的MQ集群都要配置一下。 最后,大功告成了!