【activemq】zookeeper+replicated-leveldb-store的主从集群 搭建

前期说明

从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式。

增加了基于Zookeeper+LevelDB的Master-Slave实现方式,也是官方推荐的。

基于Zookeeper和LevelDB搭建ActiveMQ集群,集群仅提供主备方式的高可用集群功能,避免单点故障。

资料 : http://activemq.apache.org/replicated-leveldb-store

原理说明:
使用ZooKeeper集群注册所有的ActiveMQ Broker但只有其中的一个Broker可以提供服务它将被视为Master,其他的Broker处于待机状态被视为Slave。
如果Master 因故障而不能提供服务ZooKeeper会从Slave中选举出一个Broker充当Master。
Slave 连接Master并同步他们的存储状态,Slave不接受客户端连接。所有的存储操作都将被复制到连接至Master的Slaves。如果Master宕机得到了最新更新的Slave会成为Master。故障节点在恢复后会重新加入到集群中并连接Master 进入Slave模式。
所有需要同步的消息操作都将等待存储状态被复制到其他法定节点的操作完成才能完成。
沂以,如果你配置了replicas=3,那么法定大小是(3/2)+1=2。Master将会存储并更新然后等待(2-1)=1个Slave存储和更新完成,才汇报success。
有一个node要作为观擦者存在。当一个新的Master被选中,你需要至少保障一个法定node在线以能够找到拥有最新状态的node。
这个node才可以成为新的Master。
因此,推荐运行至少3个replica nodes以防止一个node失败后服务中断。

需要提前具备zk集群。具体可以看我之前的博客。

https://blog.csdn.net/jia970426/article/details/104542589

1.集群部署规划列表

2.根目录下创建/mq_cluster 复制三份解压后的activemq到这个目录

[root@localhost opt]# cp -r apache-activemq-5.15.11 /mq_cluster/mq_node01
[root@localhost opt]# cp -r apache-activemq-5.15.11 /mq_cluster/mq_node02
[root@localhost opt]# cp -r apache-activemq-5.15.11 /mq_cluster/mq_node03

3.修改管理控制台端口

修改mq_node02  mq_node03的控制台端口。文件在conf/jetty.xml

[root@localhost mq_node02]# vim /mq_cluster/mq_node03/conf/jetty.xml 

4.hostname名字映射

5.activemq集群配置

5.1 3个节点的BrokerName要求完全一致

[root@localhost mq_cluster]# vim mq_node01/conf/activemq.xml 
[root@localhost mq_cluster]# vim mq_node02/conf/activemq.xml 
[root@localhost mq_cluster]# vim mq_node03/conf/activemq.xml 

5.2 3个节点的持久化配置

说明一下 下面是持久化配置,前提需要zk集群 端口和地址都需要改成自己的。

 
  <persistenceAdapter>
         <replicatedLevelDB
           directory="${activemq.data}/leveldb"
           replicas="3"
           bind="tcp://0.0.0.0:63631"
           zkAddress="192.168.58.134:2191,192.168.58.134:2192,192.168.58.134:2193"
           hostname="jayi-server"
           sync="local_disk"
           zkPath="/activemq/leveldb-stores"
           />
    </persistenceAdapter>
    <persistenceAdapter>
         <replicatedLevelDB
           directory="${activemq.data}/leveldb"
           replicas="3"
           bind="tcp://0.0.0.0:63632"
           zkAddress="192.168.58.134:2191,192.168.58.134:2192,192.168.58.134:2193"
           hostname="jayi-server"
           sync="local_disk"
           zkPath="/activemq/leveldb-stores"
           />
    </persistenceAdapter>
    
    <persistenceAdapter>
         <replicatedLevelDB
           directory="${activemq.data}/leveldb"
           replicas="3"
           bind="tcp://0.0.0.0:63633"
           zkAddress="192.168.58.134:2191,192.168.58.134:2192,192.168.58.134:2193"
           hostname="jayi-server"
           sync="local_disk"
           zkPath="/activemq/leveldb-stores"
           />
    </persistenceAdapter>

每一个mq都修改一下。

6.修改各个节点的消息端口

mq_node02改成61617

mq_node03改成61618

7.先启动zk集群 在启动activemq集群

按照顺序启动3个ActiveMQ节点,
到这步前题是zk集群已经成功启动运行

8.测试activemq集群是否搭建成功

登录任意一台zk服务器客户端,查看/activemq 下节点的个数。可以看出下面有三个服务节点。说明集群配置成功。

花了1个小时 终于一次性成功 幸运。

全部评论
请问现在用的是什么呢?
点赞 回复 分享
发布于 2020-06-03 19:16
您好leveldb不是已经被弃用了嘛!
点赞 回复 分享
发布于 2020-06-03 19:16

相关推荐

bg27强双非本,目前在学习golang后端gin框架部分,在b站找了一个轮子项目敲了一下,技术栈是gin&nbsp;+&nbsp;gorm&nbsp;+&nbsp;mysql&nbsp;+&nbsp;redis。我目前的想法是这一个月学习408和go八股以及刷算法然后在12月找个寒假实习然后大三下开始准备考研。我是考研意愿比较强烈,想问一下我是应该all&nbsp;in其中一个方向吗,我感觉我实习对我考研来说也是没什么帮助的好像。
牛客28967172...:毕业工作,考研,考公是完全不同的方向。 99%的人拼尽全力也只能把一个做好(能做好都已经是佼佼者了,比如进进大厂,考985或者考公) 如果你确定要考研可以不用学任何就业技术框架,也不用实习经验,刷题背知识点就行,但注意必须考92院校起步,因为这个年代双非硕毕业后完全不如双非本(互联网行业),可以说双非硕在互联网就业完全是负收益
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
11-20 13:39
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务