开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

企业私有云之rabbitmq高可用

简介:
+关注继续查看

默认openstack使用rabbitmq做信息队列,如果想是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文主要介绍如何使用rabbitmq做高可用。

高可用的方法为:

1
2
通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。
这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务。

环境为:

系统centos 7.1

rabbitmq版本是3.6.2

主机信息

1
2
3
node1 10.10.33.163
node2 10.10.33.166
node3 10.10.33.167

/etc/hosts配置为

1
2
3
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

下面是开始安装

一、安装

安装第三方库与rabbitmq

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

启动服务

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

二、配置

在node1里配置

1
将node1的/var/lib/rabbitmq/.erlang.cookie复制到node2与node3

修改权限(所有节点)

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

在node2里配置

1
2
3
4
5
6
7
[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里配置

1
2
3
4
5
6
[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' ...

查看集群状态

1
2
3
4
5
6
7
8
9
10
11
[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',[]}]}]

三、集群高可用配置

设计镜像队列策略

在任何一个节点执行

1
2
[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" ...





 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1864895,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker swarm实现基于Consul和Haproxy的RabbitMQ高可用集群
基于Consul服务发现和Haproxy实现的RabbitMQ高可用的负载均衡集群
0 0
Docker下RabbitMQ四部曲之四:高可用实战
《Docker下RabbitMQ四部曲》系列的终篇,今天的我们一起来体验Rabbit’MQ集群的高可用能力,看看RabbitMQ集群中的部分节点宕机时,是否还能生产和消费消息
0 0
RabbitMQ 集群高可用原理及实战部署介绍(四)
在项目中想要 RabbitMQ 变得更加健壮,就要使得其变成高可用,今天我们一起来聊聊关于 RabbitMQ 集群原理和部署流程
0 0
RabbitMQ 集群高可用原理及实战部署介绍(三)
在项目中想要 RabbitMQ 变得更加健壮,就要使得其变成高可用,今天我们一起来聊聊关于 RabbitMQ 集群原理和部署流程
0 0
RabbitMQ 集群高可用原理及实战部署介绍(二)
在项目中想要 RabbitMQ 变得更加健壮,就要使得其变成高可用,今天我们一起来聊聊关于 RabbitMQ 集群原理和部署流程
0 0
RabbitMQ 集群高可用原理及实战部署介绍(一)
在项目中想要 RabbitMQ 变得更加健壮,就要使得其变成高可用,今天我们一起来聊聊关于 RabbitMQ 集群原理和部署流程
0 0
RabbitMQ 高可用之镜像队列
镜像队列是用于节点之间同步消息的机制,避免某个节点宕机而导致的服务不可用或消息丢失,且针对排他性队列设置是无效的。另外很重要的一点,镜像队列机制不是负载均衡。
2217 0
RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡
试想下如果前面配置的HAProxy主机192.168.0.9突然宕机或者网卡失效,那么虽然RabbitMQ集群没有任何故障,但是对于外界的客户端来说所有的连接都会被断开,结果将是灾难性的。
1250 0
Linux安装RabbitMq(图文解说详细版)
Linux安装RabbitMq(图文解说详细版)
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里云栖开发者沙龙PHP技术专场-RabbitMQ 的延时队列和镜像队列原理与实战-钱文品
立即下载
基于消息队列RocketMQ的大型分布式应用上云最佳实践
立即下载
基于 Dledger 构建高可用 Apache RocketMQ 集群实践
立即下载