企業私有云之rabbitmq高可用

默認openstack使用rabbitmq作信息隊列,若是想是雲高可用,那麼須要對每一個涉及的組件都進行高可用配置,本文主要介紹如何使用rabbitmq作高可用。node

高可用的方法爲:centos

經過 Erlang 的分佈式特性(經過 magic cookie 認證節點)進行 RabbitMQ 集羣,各 RabbitMQ 服務爲對等節點,即每一個節點都提供服務給客戶端鏈接,進行消息發送與接收。
這些節點經過 RabbitMQ HA 隊列(鏡像隊列)進行消息隊列結構複製。本方案中搭建 3 個節點,而且都是磁盤節點(全部節點狀態保持一致,節點徹底對等),只要有任何一個節點可以工做,RabbitMQ 集羣對外就能提供服務。

環境爲:
bash

系統centos 7.1cookie

rabbitmq版本是3.6.2app

主機信息分佈式

node1 10.10.33.163
node2 10.10.33.166
node3 10.10.33.167

/etc/hosts配置爲
ide

10.10.33.163 ip-10-10-33-163
10.10.33.166 ip-10-10-33-166
10.10.33.167 ip-10-10-33-167

下面是開始安裝設計

1、安裝server

安裝第三方庫與rabbitmqrabbitmq

yum install -y epel-release
yum install rabbitmq-server

啓動服務

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

2、配置

在node1裏配置

將node1的/var/lib/rabbitmq/.erlang.cookie複製到node2與node3

修改權限(全部節點)

chmod 400 /var/lib/rabbitmq/.erlang.cookie
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

在node2裏配置

[root@ip-10-10-33-166 my.cnf.d]# rabbitmqctl stop_app
Stopping node 'rabbit@ip-10-10-33-166' ...
[root@ip-10-10-33-166 my.cnf.d]# rabbitmqctl join_cluster rabbit@ip-10-10-33-163
Clustering node 'rabbit@ip-10-10-33-166' with 'rabbit@ip-10-10-33-163' ...
You have new mail in /var/spool/mail/root
[root@ip-10-10-33-166 my.cnf.d]# rabbitmqctl start_app
Starting node 'rabbit@ip-10-10-33-166' ...

在node3裏配置

[root@ip-10-10-33-167 my.cnf.d]# rabbitmqctl stop_app
Stopping node 'rabbit@ip-10-10-33-167' ...
[root@ip-10-10-33-167 my.cnf.d]# rabbitmqctl join_cluster rabbit@ip-10-10-33-163
Clustering node 'rabbit@ip-10-10-33-167' with 'rabbit@ip-10-10-33-163' ...
[root@ip-10-10-33-167 my.cnf.d]# rabbitmqctl start_app
Starting node 'rabbit@ip-10-10-33-167' ...

查看集羣狀態

[root@ip-10-10-33-166 my.cnf.d]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@ip-10-10-33-166' ...
[{nodes,[{disc,['rabbit@ip-10-10-33-163','rabbit@ip-10-10-33-166',
                'rabbit@ip-10-10-33-167']}]},
 {running_nodes,['rabbit@ip-10-10-33-163','rabbit@ip-10-10-33-167',
                 'rabbit@ip-10-10-33-166']},
 {cluster_name,<<"rabbit@ip-10-10-33-163">>},
 {partitions,[]},
 {alarms,[{'rabbit@ip-10-10-33-163',[]},
          {'rabbit@ip-10-10-33-167',[]},
          {'rabbit@ip-10-10-33-166',[]}]}]

3、集羣高可用配置

設計鏡像隊列策略

在任何一個節點執行

[root@ip-10-10-33-163 ~]# rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
Setting policy "ha-all" for pattern "^(?!amq\\.).*" to "{\"ha-mode\": \"all\"}" with priority "0" ...
相關文章
相關標籤/搜索