Windows平台中RabbitMQ集群的搭建实践

一、RabbitMQ集群(普通模式)

  • 概念

     将多个RabbitMQ节点构成一个集群,统一对外提供消息服务。

  • 特点

    集群中的消息队列并不会在所有节点中都创建一份,而是仅存在于最早创建队列的那个节点上。当消费者访问指定队列时,无论连接到哪个节点,请求总会被转发到实际拥有队列的那个节点上。如果这个节点故障时,该队列消息将无法读取。该模式不具有消息数据冗余,存在单点故障隐患,但是由于降低了磁盘和网络开销,故性能较佳。

  • 步骤

    假定集群有两个节点组成,分别为rabbit@rabbit1和rabbit@rabbit2。

  1. 分别在两个节点服务器上运行rabbitmqctl stop,停止rabbit节点服务。

  2. 拷贝其中任一节点服务器上的.erlang.cookie文件(位于c:\windows以及c:\users\current user)到其余节点服务器。

  3. 分别在两个节点服务器上运行rabbitmq-server -detached,启动rabbit节点服务

  4. rabbit@rabbit1节点服务器上运行rabbitmqctl stop_app,停止rabbit节点程序。

  5. rabbit@rabbit1节点服务器上运行rabbitmqctl join_cluster rabbit@rabbit2,节点rabbit@rabbit1rabbit@rabbit2组成集群。

  6. 分别在两个节点服务器上运行rabbitmqctl start_app,启动rabbit节点程序。

  7. 运行rabbitmqctl  cluster_status查看集群的运行状态。

二、RabbitMQ集群(高可用模式)

  • 概念

    在RabbitMQ普通集群的基础上,通过使集群中所有节点都存储镜像队列的方式,提高集群的可用性。

  • 特点

    集群中的消息队列会在所有节点中都创建一份。集群中主节点故障时,其余从节点可以代替主节点,继续对外提供消息服务。

  • 步骤

假定集群有两个节点组成,分别为rabbit@rabbit1和rabbit@rabbit2。

  1. 在集群中任一节点运行命令rabbitmqctl set_policy ha-all "^" "{""ha-mode"":""all"",""ha-sync-mode"":""automatic""}" 。

  2. 使用HaProxy+KeepAlived搭建高可用负载均衡服务器集群。如果觉得自己搭建负载均衡集群成本过高的话,developer可以在客户端配置MQ服务节点的连接信息,用代码实现connection断开时MQ节点的自动切换逻辑。


注意:

目前,.Net版本的RabbitMQ客户端类库3.5.4提供了连接和拓扑恢复机制,分别为(ConnectionFactory.AutomaticRecoveryEnabled 和 ConnectionFactory.TopologyRecoveryEnabled。

  • AutomaticRecoveryEnabled 主要用于恢复连接和通道。

  • TopologyRecoveryEnabled主要用于恢复队列路由绑定和消费者。

但是,经测试,连接恢复能够正常工作,拓扑恢复有时无法正常工作。经查看源码,发现当拓扑恢复异常时,异常仅仅打印到控制台上,并未有事件通知机制。这意味着,当恢复机制出现异常时,外部程序无法知晓,从而导致队列中的消息再也无法正常读写。

转载于:https://my.oschina.net/yqz/blog/485265

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值