企业私有云之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" ...
相关文章
相关标签/搜索