ActiveMQ +Zookeeper搭建集群实现高可用

本文详细描述了在CentOS7.9环境中,如何部署Java17版本的ApacheZookeeper3.5.7和ApacheActiveMQ5.15.9,包括Zookeeper集群配置、ActiveMQ集群启动、持久化器切换至LevelDB以及主机名映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境信息

  • Java17
  • CentOS 7.9
  • Apache Zookeeper-3.5.7
  • Apache Activemq-5.15.9
服务器编号服务器IP主机名称系统
1192.168.100.110host110CentOS 7.9
2192.168.100.111host111CentOS 7.9
3192.168.100.112host112CentOS 7.9

Zookeeper集群搭建

服务器编号服务器IPLF通信端口LF选举端口客户端端口
1192.168.100.110288838882180
2192.168.100.111288838882180
3192.168.100.112288838882180

Zookeeper集群不在本文中配置,默认已配置完毕

搭建ActiveMQ集群

服务器编号服务器IPActiveMQ后台端口ActiveMQ管理控制台端口
1192.168.100.110616168161
2192.168.100.111616168161
3192.168.100.112616168161

启动Linux服务器
分别在三台Linux服务器中创建集群目录

mkdir /opt/activemq/cluster_node

将ActiveMQ安装目录解压到集群目录中
apache-activemq-5.15.9-bin.tar.gz

cp yourPath/apache-activemq-5.15.9-bin.tar.gz /opt/activemq/cluster_node
tar -zxvf apache-activemq-5.15.9-bin.tar.gz

修改ActiveMQ配置文件

配置持久化器

使用LevelDB替换默认KahaDB配置
将一下默认配置注释

<persistenceAdapter>
       <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

加入LevelDB配置

    <persistenceAdapter>
         <replicatedLevelDB
             directory="${activemq.data}/leveldb"
             replicas="3"
             bind="tcp://0.0.0.0:62621"
             zkAddress="192.168.100.110:2181,192.168.100.111:2181,192.168.100.112:2181"
             hostname="host110"
             zkPath="/activemq/leveldb-stores"/>
    </persistenceAdapter>

参数说明:

配置项说明
directory持久化数据存放位置(会在${activemq.data}/中创建leveldb目录)
replicas集群中节点个数(由于是三台服务器搭建集群,所以设置为3)
bind集群通信端口
zkAddressZookeeper集群地址
hostname主机名称 (使用本机IP或主机名称,如果使用主机名称一定在hosts文件中配置IP映射)
zkPathZookeeper数据挂载点(启动后会在Zookeeper下注册此节点)

此配置在拷贝到三台设备时需修改hostname为各自的主机名称或IP

配置BrokerName

集群中三台服务器的brokerName一定要一致

在activemq.xml配置文件中修改以下节点

<!--
    The <broker> element is used to configure the ActiveMQ broker.
-->
  <broker xmlns="http://activemq.apache.org/schema/core" brokerName="mqCluster" dataDirectory="${activemq.data}">

将brokerName修改为你自定义名称

将此配置同步拷贝到三台服务器配置中

主机名映射配置

如果配置持久化器时hostname选用为主机名称则需要在三台服务器的hosts文件中配置相互之间的主机名称映射

以本案例为例:

hostname="host110"

hostname分别为host110,host111,host112(见开头环境信息)
需要配置hosts的IP到主机名映射以便集群中主机相互通信

向hosts文件中添加信息:

vim /etc/hosts

在文件末尾如下信息(根据你的配置来):

192.168.100.110 host110
192.168.100.111 host111
192.168.100.112 host112

三台服务器都要这样设置

启动

启动Zookeeper集群

分别在三台服务器上启动Zookeeper

启动ActiveMQ集群

分别在三台服务器上启动ActiveMQ

cd /opt/activemq/cluster_node/apache-activemq-5.15.9-bin/bin/
activemq start

访问

登录Zookeeper查看哪台主机被选举为了master

>zkCli.sh -server host110
>ls /activemq/leveldb-stores # 查看集群当前在线的ActiveMQ节点
[00000000023, 00000000024, 00000000025] # 在线的三个MQ节点
>get /activemq/leveldb-stores/00000000023 # 查看节点信息
{"id":"mqCluster","container":null,"address":"tcp://host110:62621","position":-1,"weight":1,"elected":"0000000023"}
>get /activemq/leveldb-stores/00000000024
{"id":"mqCluster","container":null,"address":null,"position":-1,"weight":1,"elected":null}
>get /activemq/leveldb-stores/00000000025
{"id":"mqCluster","container":null,"address":null,"position":-1,"weight":1,"elected":null}

通过elected得出选举出的主机为host110
浏览器访问host110:8161即可查看集群参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HashMap223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值