一. 简介

从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于 ZooKeeper + LevelDB 的 Master-Slave 实现方式,其他两种方式目录共享和数据库共享依然存在。本文采用zookeeper来管理节点实现activemq的高可用。

二. 集群部署说明

2.1 节点信息

ZooKeeper集群

ZooKeeper01ZooKeeper02ZooKeeper03
10.10.2.13710.10.2.13810.10.2.139

ActiveMQ集群

activemq.xml
主机集群端口
replicatedLevelDB.bind
10.10.2.137tcp://0.0.0.0:62623
10.10.2.138tcp://0.0.0.0:62623
10.10.2.139tcp://0.0.0.0:62623

2.2 安装activemq

​ 给三台服务器分别安装activemq.

​ activemq的安装说明,请参照笔者的另一篇博客: linux下安装activemq

三. 配置高可用

3.1修改activemq.xml

修改brokerName

注: 三台机器要一致,此处,均改为"activemqCluster"

在这里插入图片描述

修改持久化适配器persistenceAdapter添加replicatedLevelDB元素

<persistenceAdapter>
    <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
    <!-- activemq zookeeper high availiability -->
    <replicatedLevelDB
        directory="${activemq.data}/leveldb"
        replicas="3"
        bind="tcp://0.0.0.0:62623"
        zkAddress="10.10.2.137:2181,10.10.2.138:2181,10.10.2.139:2181"
        hostname="10.10.1.137"
        zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

配置项说明:

  • directory:持久化数据存放地址
  • replicas:集群中节点的个数
  • bind:集群通信端口
  • zkAddress:ZooKeeper集群地址
  • hostname:当前服务器的IP地址,如果集群启动的时候报未知主机名错误,那么就需要配置主机名到IP地址的映射关系。
  • zkPath:ZooKeeper数据挂载点

至此,ActiveMQ的高可用集群搭建完成

3.2启动集群

前提:ZooKeeper集群已启动

分别启动三台ActiveMQ服务器:

[root@master conf]# activemq start
INFO: Loading '/usr/local/activemq/apache-activemq-5.15.9/bin/env'
INFO: Using java '/usr/local/jdk1.8.0_111/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/usr/local/activemq/apache-activemq-5.15.9/data/activemq.pid' (pid '11135')

集群启动成功后,ActiveMQ会往ZooKeeper中注册集群信息。为了方便,我们使用ZooInspector工具来查看具体的内容。
1555316923392
在这里插入图片描述

从以上注册信息的内容我们可以看出,ActiveMQ01(10.10.2.137)被选举为主节点,并对外提供服务,其余两个节点作为从节点,处于待机状态,不提供服务。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐