博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
企业私有云之rabbitmq高可用
阅读量:6589 次
发布时间:2019-06-24

本文共 2511 字,大约阅读时间需要 8 分钟。

默认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
,如需转载请自行联系原作者
你可能感兴趣的文章
Who's Using Cyberthreat Intelligence and How?
查看>>
【翻译】SQL Server索引进阶:第六级,标签
查看>>
确定两串乱序同构
查看>>
寒假研究计划
查看>>
Android:ListView、BaseAdapter、convertView、ListView优化及事件、notifyDataSetChanged()
查看>>
新版发布功能上线,新增「大屏快照」功能!
查看>>
代码调优及其他zz
查看>>
Centos7+Postfix+Dovecot实现邮件收发
查看>>
“蒜你狠”和“豆你玩”的遐想。。
查看>>
无法解析连接描述中指定的SID
查看>>
ext3格式化成ext4
查看>>
自己编译redhat 9.0内核心得
查看>>
SQL Server数据库的管理及维护
查看>>
Silverlight在MSDN类库中的小变化
查看>>
再说java多线程Thread
查看>>
两种Web页面局部刷新技术的简单较量
查看>>
管理学中的知名定律之阿什法则
查看>>
Android客户端应用享用传统Web服务
查看>>
Exchange企业实战技巧(17)让密件抄送给特定用户
查看>>
PowerShell获取特定“描述”的虚拟机IP地址
查看>>