RabbitMQ Cluster

RabbitMQ Cluster

 

1安装准备

单节点MQ的安装参考其他文档,此处仅以两个节点为例,多个节点也如法炮制。

² 已经安装好rabbitmq的两个单节点rabbitmq-broker2rabbitmq-broker3

² 保证两台机器上的rabbitmq为后台启动状态。

² 安装erlangrabbitmq版本一致。否则,版本不一致会出现问题。

2 .erlang.cookie拷贝

.erlang.cookie该文件一般存放在安装用户目录下,如:/home/sca_bj/.erlang.cookie。从rabbitmq-broker2机器上将其拷贝到rabbitmq-broker3目录下。

3配置前查看状态

rabbitmqctl cluster_status

状态如下:

Cluster status of node 'sca@rabbitmq-broker3' ...

[{nodes,[{disc,['sca@rabbitmq-broker3']}]},

{running_nodes,['sca@rabbitmq-broker3']},

{cluster_name,<<"sca@ocdata09">>},

{partitions,[]}]

...done.

4 join cluster

rabbitmq-broker3加入到rabbitmq-broker2中,在rabbitmq-broker3上操作

² rabbitmqctl stop_app

² rabbitmqctl join_cluster root@rabbitmq-broker2

² rabbitmqctl start_app

5查看加入后的状态

rabbitmqctl cluster_status

² 配置cluster后状态如下:

Cluster status of node 'sca@rabbitmq-broker3' ...

[{nodes,[{disc,['root@rabbitmq-broker2','sca@rabbitmq-broker3']}]},

{running_nodes,['root@rabbitmq-broker2','sca@rabbitmq-broker3']},

{cluster_name,<<"root@ocdata07">>},

{partitions,[]}]

...done.

² 停止rabbitmq-broker2上的MQ

rabbitmqctl stop

² rabbitmq-broker3查看状态

rabbitmqctl cluster_status

Cluster status of node 'sca@rabbitmq-broker3' ...

[{nodes,[{disc,['root@rabbitmq-broker2','sca@rabbitmq-broker3']}]},

{running_nodes,['sca@rabbitmq-broker3']},

{cluster_name,<<"root@ocdata07">>},

{partitions,[]}]

² 再将rabbitmq-broker2重新启动

rabbitmq-server -detached

² 也可以通过界面管理端来查看其状态

 

6 RAM集群节点

我们默认配置的disk 集群节点,大的集群也可以RAM集群节点。

rabbitmq-broker3操作

² rabbitmqctl stop_app 

² rabbitmqctl join_cluster --ram root@rabbitmq-broker2

² rabbitmqctl start_app

 

7去除节点的方法

移除rabbitmq-broker3,在rabbitmq-broker3上操作

² rabbitmqctl stop_app

² rabbitmqctl reset

² rabbitmqctl start_app

 

或者在rabbitmq-broker2上操作

² rabbitmqctl stop_app

² rabbitmqctl forget_cluster_node  sca@rabbitmq-broker3

² 此时rabbitmq-broker2还会认为和rabbitmq-broker3成集群状态,这时

rabbitmqctl start_app会报错

Removing node 'sca@rabbitmq-broker3' from cluster ...

Error: {offline_node_no_offline_flag,"You are trying to remove a node from an offline node. That is dangerous, but can be done with the --offline flag. Please consult the manual for rabbitmqctl for more information."}

² 继续执行命令

rabbitmqctl reset

² rabbitmqctl start_app

 

注意:整个集群的启动和停止顺序刚好相反

 

8普通集群的弊端

Queues的消息只存在于被创建的那台机器上。

对于publish,客户端任意连接集群的一个节点,转发给创建queue的节点存储消息的所有信息;对于consumer,客户端任意连接集群中的一个节点,如果数据不在该节点中,则从存储该消息data的节点拉取。可见当存储有queue内容的节点失效后,只要等待该节点恢复后,queue中存在的消息才可以获取消费的到。显然增加集群的节点,可以提高整个集群的吞吐量,但是在高可用方面要稍微差一些。

附加:Rabbitmq HAhttp://www.rabbitmq.com/clustering.html

 

转载于:https://my.oschina.net/u/2329222/blog/416841

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值