MQ集群部署
期待的部署架構
其中,一個機房有兩台機器部署MQ,並組成集群,有一個機房的MQ集群作為中心集群,其他機房的MQ集群將消息同步到中心MQ集群中。
安裝erlang,略。。
安裝rabbitMQ,略。。
基本配置(NODENAME之類的,略)
配置本地集群
配置hosts
同一機房集群的兩台機器都要配置host,要保證可以通過hosts訪問到同一機房的集群機器
比如同一機房的兩台機
NODENAME=rabbit@111_100_222_217
NODENAME=rabbit@111_100_222_218
111_100_222_217為同ip對應的域名
需要在這兩台機上,配置/etc/hosts,增加配置如下:
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
本地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集群都要配置一下。 最后,大功告成了!