ActiveMQ笔记(2):基于ZooKeeper的HA方案

activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。

下面演示了如何在本机搭建基于zookeeper的activemq集群:

一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml

 1     <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
 2         ...
 3         <persistenceAdapter>
 4             <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
 5             <replicatedLevelDB
 6                     directory="activemq-data"
 7                     replicas="3"
 8                     bind="tcp://0.0.0.0:0"
 9                     zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
10                     zkSessionTimeout="2s"
11                     zkPath="/activemq/leveldb-stores"
12             />
13         </persistenceAdapter>
14         ...
15     </broker>

注:为保证zk的HA,本机至少要有3个zk的节点,可参考我以前的文章搭建.

二、将activemq1复制二分,变成activemq2、activemq3,由于是在本机测试,为防止端口冲突,这二个目录下的activemq.xml,得修改端口

        <transportConnectors>
            <transportConnector name="openwire"
                                uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp"
                                uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp"
                                uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt"
                                uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws"
                                uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

上面这几个端口,大家看情况调整,只要保证3个activemq不冲突即可

三、启动zk1,zk2,zk3,以及activemq1,activemq2,activemq3即可。

注:为方便观察输出,建议启动activemq时,用./activemq.sh console启动

四、测试Failover

正常启动后,然后手动停掉master,然后观察剩下的2个节点终端输出,正常情况下,应该过一会儿,有一个会自动提升为master.

最后提醒一下:采用上述HA方案后,虽然系统可用性提高了,但是在本机上测试发现,跟上篇同样的测试代码和用例,单节点运行时,1秒可以发8k+条消息,采用zookeeper的HA方案后,每秒只能写入500条消息左右,对于性能要求较高的场景,建议采用其它方案,比如下一篇要介绍的基于Networks of brokers的HA方案

参考文章:

http://activemq.apache.org/replicated-leveldb-store.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

zookeeper分布式锁1 分布式锁的概念与数据最终不一致性的场景zookeeper分布式锁小结

随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式...

99110
来自专栏黑白安全

缓冲区溢出说明:基础知识

软件中最常见和最古老的安全漏洞之一是缓冲区溢出漏洞。从操作系统到客户端/服务器应用程序和桌面软件的各种软件都会出现缓冲区溢出漏洞。这通常是由于编程错误以及应用程...

14610
来自专栏xiaoheike

Elasticsearch Network Settings

Elasticsearch 缺省情况下是绑定 localhost。对于本地开发服务是足够的(如果你在相同机子上启动多个节点,它还可以形成一个集群),但是你需要配...

17920
来自专栏张戈的专栏

解决网站404页面返回200状态码问题

好久没打理博客,突然收到 CDN 流量预警,发现平均每天 40G 流量消耗!what?就现在这个访问量,不存在的。看了下 CDN 日志发现有小人一直在请求博客页...

35530
来自专栏MasiMaro 的技术博文

PE解析器的编写(一)——总体说明

之前自己学习了PE文件的格式,后来自己写了个PE文件的解析器,这段时间工作上刚好要用到它,老板需要能查看某个exe中加载的dll的一个工具,我在使用之前自己写的...

22320
来自专栏抠抠空间

python并发编程之多进程(理论)

一、什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 二、进程与程序的区别 程序:仅仅是一堆代 进程:是指打开程序运行的过程 三、...

43870
来自专栏Python中文社区

手工打造分布式爬虫

專 欄 ❈ 七夜,Python中文社区专栏作者,信息安全研究人员,比较擅长网络安全、逆向工程、Python爬虫开发、Python Web开发。《Python爬...

25670
来自专栏菜鸟程序员

Android 调试桥

20330
来自专栏zaking's

走近webpack(2)--css打包及压缩js

  前面的文章介绍了webpack的devServer以及多入口多出口文件的配置,咱们继续往下学。   在开始学习接下来的知识之前,我们先回顾一下,前文提到了w...

52980
来自专栏Golang语言社区

连接池

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。 好处 编辑 这种连接“汇集”起来的技术基于这样的一个事实:对于大多数应用程序...

38460

扫码关注云+社区

领取腾讯云代金券