现在ActiveMQ, 在Failover方面有两种解决方案:Pure Master Slave和Shared File System Master Slave。

     先看Pure Master Slave, 这种部署方式可以同时运行两个ActiveMQ, 只允许一个Slave连接到Master上面,也就是说只能有2台MQ做集群,这两个服务之间有一个数据备份通道,利用这个通道Master向Slave单向地数据备份。 这个方案在实际生产线上不方便, 因为当Master挂了之后, Slave并不能自动地接收Client发来的请来,需要手动干预,且要停止Slave再重启Master才能恢复负载集群。 这里, 不再过多地介绍此方案。

 Pure Master Slave 具有以下限制: 
  1.只能有一个 slave broker 连接到 master broker。  
  2.在因 master broker 失效而导致 slave broker 成为 master 之后,之前的master broker 只有在当前的 master broker(原slave broker)停止后才能重新生效。  
  3. Master broker 失效后而切换到 slave broker 后,最安全的恢复 master broker 的方式是人工处理。首先要停止 slave broker(这意味着所有的客户也要停止)。然后把 slave broker 的数据目录中所有的数据拷贝到master broker 的数据目录中。然后重启 master broker 和 slave broker。

     下面说Shared File System Master Slave。 它跟Pure Master Slave的最大不同是, Master和Slave(Slave可以有多个)之间共享一个存储系统,当Master死了后, 可以在不需要手工操作的情况下, 客户端请求会自动Failover到某一个Slave上。
     共享存储系统是Shared File System Master Slave的关键,我们先看Shared File System Master Slave的搭建。  这里介绍一种通过Linux(NFS服务)来模拟搭建Shared File System Master Slave的方案。windows下也可以通过共享文件夹实现。
     NFS原理是这样的: NFS服务让不同的计算机不同操作系统之间彼此共享文件,现在已经成了linux的标准。 NFS采用客户端/服务器工作模式。 在NFS服务器上将/nfs/public目录设置为输出目录(即共享目录)后,其他客户端就可以将这个目录挂载到自己系统中的某个目录下,这个目录可以与服务器上的输出目录和其它客户机中的目录不相同。

  建好NFS后, 我们将它用到ActiveMQ里。ActiveMQ配置, 这个没什么特殊配置在, 只能在activemq.xml文件里persistenceAdapter下修改directory的值即可。如下所示:

      基本上,你可以运行多个 broker,这些 broker 共享activemq数据目录。当第一个 broker 得到文件上的排他锁之后,其它的 broker 便会在循环中等待获得这把锁。默认每10秒判断一次。客户端使用 failover transport 来连接到可用的 broker。当 master 
broker 失效的时候会释放这把锁,这时候其中一个 slave broker 会得到这把锁从而成为 master broker。

ActiveMQ集群支持Master/Slave模式的更多相关文章

  1. ActiveMQ集群应用

    ActiveMQ集群 ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要由两种:Master-Slave和Broker Cluster. 1.M ...

  2. 使用jmeter对ActiveMQ集群性能方案进行评估--转载

    原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要1.1 关于这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的,高性 ...

  3. ActiveMQ集群(2)

    ActiveMQ具有强大和灵活的集群功能,但在使用的过程中会发现很多的缺点,ActiveMQ的集群方式主要有两种:Master-Slave和Broker Cluster. 1.Master-Slave ...

  4. ActiveMQ集群方案

    集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能.ActiveMQ服务的高可用性是指,在ActiveMQ服务性能不变.数据不丢失的前提下,确保当系统灾难出现时ActiveMQ能够持续提供消 ...

  5. ActiveMQ集群整体认识

    出自:https://segmentfault.com/a/1190000014592517 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKe ...

  6. Dubbo入门到精通学习笔记(十四):ActiveMQ集群的安装、配置、高可用测试,ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

    文章目录 ActiveMQ 高可用集群安装.配置.高可用测试( ZooKeeper + LevelDB) ActiveMQ高可用+负载均衡集群的安装.配置.高可用测试 准备 正式开始 ActiveMQ ...

  7. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  8. ActiveMQ集群

    1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...

  9. [转载]关于ActiveMQ集群

    转载于 http://blog.csdn.net/nimmy/article/details/6247289 近日因工作关系,在研究JMS,使用ActiveMQ作为提供者,考虑到消息的重要,拟采用Ac ...

随机推荐

  1. struts2.1.6教程九、文件上传下载(了解)

    首先建立struts2UpDownLoad项目,搭建好struts2基本的开发环境. 上传实例 步骤一:upload.jsp代码如下: <s:form action="upload&q ...

  2. JSP/Servlet Web 学习笔记 DayTwo

    JSP指令 a)page指令 定义JSP文件中的全局属性.一个JSP页面可以包含多个page指令.除了Import以外,其他page指令定义的属性/值只能出现一次. 其详细语法为: <%page ...

  3. python 列表转字典

    def func_data(text): data = dict() for kv in text.split(','): k_v = kv.split(':') data[k_v[0]] = k_v ...

  4. flash2print文档在线预览应用(java,.net)

    一.背景 前段时间,LZ的boss突然给了出了这样一个需求:将原项目中的所有文章关联的附件TXT.PDF.office相关文件全部以flash的形式在网页上进行展示,便于预览.看似简单的需求,整个研发 ...

  5. java面试题之int和Integer的区别

    int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...

  6. 每天一个JS 小demo之韩雪冬轮播图。主要知识点:html,css布局,对于数组和对象的理解和运用

    @charset "utf-8"; /* CSS Document */ ;; } li { list-style: none; } img { border: none; } b ...

  7. sqlmap用户手册 [详细]

    当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: ...

  8. eclipse汉化教程,新手神器

    网盘下载地址:http://pan.baidu.com/s/1i5ed6ZF 下载汉化包 将汉化包里的两个文件存放到eclipse安装目录中的dropins文件夹中 重启eclipse 汉化成功

  9. phantomjs-prebuilt@2.1.14 install: `node install.js`

    在用vue-cli构建项目时,npm install 安装包的时候报错了. 错误信息: npm ERR! Failed at the phantomjs-prebuilt@2.1.14 install ...

  10. 制作Ubuntu Kylin局域网源

    国人参与开发的开源操作系统UbuntuKylin(http://www.ubuntukylin.com/)已经发布有一段时间了,一直想在单位的局域网内部用用,可惜离线安装比较麻烦,于是搜索了些如何制作 ...