期待的部署架構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集羣都要配置一下。 最後,大功告成了!