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

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。

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

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
3月前
|
存储 Shell 网络安全
Zookeeper笔记
Zookeeper笔记
64 0
|
Kubernetes 流计算 容器
FLINK ON K8S 基于Zookeeper和基于K8S原生HA的区别
FLINK ON K8S 基于Zookeeper和基于K8S原生HA的区别
281 1
|
消息中间件 Ubuntu NoSQL
zookeeper+activeMQ 高可用
zookeeper+activeMQ 高可用
|
Java Linux API
Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)
Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)
400 0
Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)
|
消息中间件 存储 NoSQL
ActiveMQ系列:基于LevelDB和 Zookeeper 的数据复制集群
LeveDB 5.6版本之后推出了 LevelDB 的持久化引擎,它使用了自定义的索引代替常用的 BTree 索引,其持久化性能高于KahaDB,虽然默认的持久化方式还是 KahaDB,但是 LevelDB 可能会是趋势。在5.9版本还提供了基于 LevelDB 和 Zookeeper 的数据复制方式,作为 Master-Slave 方式的首选数据复制方案。
245 0
ActiveMQ系列:基于LevelDB和 Zookeeper 的数据复制集群
|
存储 设计模式 负载均衡
大数据开发笔记(五):Zookeeper(二)
ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
190 0
大数据开发笔记(五):Zookeeper(二)
|
应用服务中间件 网络安全
zookeeper报错exception.RegException: org.apache.zookeeper.KeeperException$OperationTimeoutException: KeeperErrorCode = OperationTimeout解决方案
zookeeper报错exception.RegException: org.apache.zookeeper.KeeperException$OperationTimeoutException: KeeperErrorCode = OperationTimeout解决方案
1411 0
|
存储 缓存 负载均衡
大数据开发笔记(五):Zookeeper(一)
ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
162 0
|
设计模式 NoSQL Java
肝一下ZooKeeper实现分布式锁的方案,附带实例!
肝一下ZooKeeper实现分布式锁的方案,附带实例!
肝一下ZooKeeper实现分布式锁的方案,附带实例!
|
人工智能 Java 大数据
高级教程分享:Dubbo+Zookeeper+ActiveMQ+Redis等。
image image image 这是个人收藏的Dubbo系列高级教程,包括Zookeeper、Redis、ActiveMQ等实战解析,现在分享出来,获取可在下方公众号中回复:视频 申明:本视频内容与本公众号无任何关系,仅供学习交流使用。
1867 0