当前位置:   article > 正文

zookeeper+activemq实现高可用方案_zk mq 实现分布式协调 demo

zk mq 实现分布式协调 demo

搭建方案

  • zookeeper作为协调器,配置成一个master/slave集群,允许挂掉一台
  • activemq作为消息中间件,允许挂掉一台

在这里插入图片描述

zookeeper集群安装

https://blog.csdn.net/dengjili/article/details/86490104#_44

安装后
176.16.0.155 主
176.16.0.145 从
176.16.0.135 从
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

activemq集群安装

前序下载安装:https://blog.csdn.net/dengjili/article/details/88361589

参数的意思
directory: levelDB数据文件存储的位置
replicas:计算公式(replicas/2)+1 , 当replicas的值为2的时候, 最终的结果是2. 表示集群中至少有2台是启动的
bind: 用来负责slave和master的数据同步的端口和ip
zkAddress: 表示zk的服务端地址
hostname:本机ip

修改配置文件

  • 176.16.0.135
        <persistenceAdapter>
                <!-- <kahaDB directory="${activemq.data}/kahadb"/>  -->
                <replicatedLevelDB
                        directory="${activemq.data}/leveldb"
                        replicas="2"
                        bind="tcp://176.16.0.135:61615"
                        zkAddress="176.16.0.135:2181,176.16.0.145:2181,176.16.0.155:2181"
                        hostname="176.16.0.135"
                        zkPath="/activemq/leveldb"
                />
        </persistenceAdapter>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 176.16.0.145
        <persistenceAdapter>
                <!-- <kahaDB directory="${activemq.data}/kahadb"/>  -->
                <replicatedLevelDB
                        directory="${activemq.data}/leveldb"
                        replicas="2"
                        bind="tcp://176.16.0.145:61615"
                        zkAddress="176.16.0.135:2181,176.16.0.145:2181,176.16.0.155:2181"
                        hostname="176.16.0.145"
                        zkPath="/activemq/leveldb"
                />
        </persistenceAdapter>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 176.16.0.155
        <persistenceAdapter>
                <!-- <kahaDB directory="${activemq.data}/kahadb"/>  -->
                <replicatedLevelDB
                        directory="${activemq.data}/leveldb"
                        replicas="2"
                        bind="tcp://176.16.0.155:61615"
                        zkAddress="176.16.0.135:2181,176.16.0.145:2181,176.16.0.155:2181"
                        hostname="176.16.0.155"
                        zkPath="/activemq/leveldb"
                />
        </persistenceAdapter>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

启动以后,查看zk节点
在这里插入图片描述

可以看到,当前最小的节点信息主机:176.16.0.135
get /activemq/leveldb/00000000000

在这里插入图片描述
其他主机是不可用的
在这里插入图片描述

高可用测试

  1. 挂一台正在工作的activemq(176.16.0.135
    在这里插入图片描述
    查看zookeeper切换信息
    在这里插入图片描述
    可以看到,当前最小的节点信息主机:176.16.0.145
    在这里插入图片描述
    切换成功
    在这里插入图片描述
  2. 挂掉1台zookeeper

176.16.0.155 主
176.16.0.145 从
176.16.0.135 从

kill 155

176.16.0.155

在这里插入图片描述

测试176.16.0.135 主机zookeeper是否可用
在这里插入图片描述

测试通过

对应代码访问修改为

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("failover:(tcp://176.16.0.135:61616,tcp://176.16.0.145:61617,tcp://176.16.0.155:61617)?randomize=false");  
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/192937
推荐阅读
相关标签
  

闽ICP备14008679号