0
点赞
收藏
分享

微信扫一扫

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试


文章目录

  • ​​一、预先准备​​
  • ​​1. 技术选型​​
  • ​​2. zk集群搭建​​
  • ​​3. MQ集群规划​​
  • ​​二、预先准备​​
  • ​​2.1. MQ下载​​
  • ​​2.2. 解压​​
  • ​​2.3. 复制3分​​
  • ​​2.4. 修改jetty.xml​​
  • ​​2.5. 统一所有主从节点 Broker 命名​​
  • ​​2.6. 修改持久化配置​​
  • ​​2.7. 修改服务端口​​
  • ​​2.8. 配置防火墙​​
  • ​​2.9. MQ启动​​
  • ​​2.10. 查看 MQ状态​​
  • ​​三、集群验证测试​​
  • ​​3.1. 实现思路​​
  • ​​3.2. 默认测试​​
  • ​​3.3. 停止8163服务测试​​
  • ​​四、查看主从状态​​
  • ​​4.1. 连接 Zk​​
  • ​​4.2. 查看状态信息​​
  • ​​4.3. java中的代码​​
  • ​​五、activeMq主从集群​​
  • ​​5.1. 准备多份主从模型​​
  • ​​5.2. 案例​​
  • ​​六、常用操作​​
  • ​​6.1. 常用命令​​
  • ​​6.2. 清除数据​​
一、预先准备
1. 技术选型

环境

版本详细

zookeeper版本

zookeeper-3.4.12

Linux环境

腾讯云

jdk版本

1.8.0_332

MQ版本

5.16.5

2. zk集群搭建

根据自己的实际情况选择参考

腾讯云~伪集群环境
​腾讯云~ zookeeper集群安装、配置、验证​​

centos7~集群环境

​​Linux 环境 zookeeper集群安装、配置、验证​​

3. MQ集群规划

在同一个Linux中安装三个 ActiveMQ 实例, 使用不同端口实现同时启动。 端口分配如下:

主机

集群端口

消息端口

管控台端口

目录

192.168.43.80

62626

61616

8161

/app/mq_01

192.168.43.80

62627

61616

8162

/app/mq_02

192.168.43.80

62628

61616

8163

/app/mq_03

二、预先准备
2.1. MQ下载

官网链接

​​https://activemq.apache.org/components/classic/download/​​

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节

cd /app
wget https://dlcdn.apache.org//activemq/5.16.5/apache-activemq-5.16.5-bin.tar.g z

2.2. 解压

cd /app
tar -zxvf apache-activemq-5.16.5-bin.tar.gz

2.3. 复制3分

cp apache-activemq-5.16.5 mq_01 -r
cp apache-activemq-5.16.5 mq_02 -r
cp apache-activemq-5.16.5 mq_03 -r

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_02

2.4. 修改jetty.xml

打开3个窗口依次操作,修改conf/jetty.xml 中的host地址和端口配置。
host值都为0.0.0.0 ,jetty端口分别是8161、 8162、 8163

vim /app/mq_01/conf/jetty.xml
vim /app/mq_02/conf/jetty.xml
vim /app/mq_03/conf/jetty.xml

mq_01

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_03


mq_02

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节_04


mq_03

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_05

host值设置为0.0.0.0是为了windows访问控制台

2.5. 统一所有主从节点 Broker 命名

vim /app/mq_01/conf/activemq.xml
vim /app/mq_02/conf/activemq.xml
vim /app/mq_03/conf/activemq.xml

搜索brokerName,统一为mq-cluster

mq_01

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_06


mq_02

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节_07


mq_03

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_08

2.6. 修改持久化配置

修改 conf/activemq.xml 文件
修改 broker标签中子标签 persistenceAdapter相关内容:

replicas属性代表当前主从模型中的节点数量。 按需配置。
bind 属性中的端口为主从实例之间的通讯端口。 代表当前实例对外开放端口是什么, 三个实例分别使用 62626、 62627、 62628端口。
zkAddress 属性代表ZooKeeper安装位置, 安装具体情况设置。
zkPath 是 ActiveMQ 主从信息保存到 ZooKeeper中的什么目录内。
hostname为 ActiveMQ实例安装 Linux的主机名, 可以在/etc/hosts 配置文件中设置。 设置格式为: IP 主机名。 如:127.0.0.1 mq-server

vim /app/mq_01/conf/activemq.xml
vim /app/mq_02/conf/activemq.xml
vim /app/mq_03/conf/activemq.xml

搜索persistenceAdapter
mq_01

<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<replicatedLevelDB
directory="${activemq.data}/levelDB"
replicas="3"
bind="tcp://0.0.0.0:62626"
zkAddress="192.168.43.80:2181,192.168.43.80:2182,192.168.43.80:2183"
zkPath="/activemq/leveldb-stores"
hostname="mq-server"/>
</persistenceAdapter>

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节_09

mq_02

<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<replicatedLevelDB
directory="${activemq.data}/levelDB"
replicas="3"
bind="tcp://0.0.0.0:62627"
zkAddress="192.168.43.80:2181,192.168.43.80:2182,192.168.43.80:2183"
zkPath="/activemq/leveldb-stores"
hostname="mq-server"/>
</persistenceAdapter>

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_10


mq_03

<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<replicatedLevelDB
directory="${activemq.data}/levelDB"
replicas="3"
bind="tcp://0.0.0.0:62628"
zkAddress="192.168.43.80:2181,192.168.43.80:2182,192.168.43.80:2183"
zkPath="/activemq/leveldb-stores"
hostname="mq-server"/>
</persistenceAdapter>

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_11

  • 配置host

vim /etc/hosts

添加映射关系

127.0.0.1 mq-server

2.7. 修改服务端口

修改 ActiveMQ对外提供的服务端口。 原默认端口为 61616。
当前环境使用的端口为:61616、 61617、 61618。
修改conf/activemq.xml配置文件。 修改broker 标签中子标签transportConnectors的相关配置

vim /app/mq_01/conf/activemq.xml
vim /app/mq_02/conf/activemq.xml
vim /app/mq_03/conf/activemq.xml

搜索61616

mq_01 保持不变

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_12

mq_02

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_13

mq_03

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_14

2.8. 配置防火墙

控制台端口+通讯端口+集群端口+tcp端口62621

firewall-cmd --zone=public --add-port=8161/tcp --permanent
firewall-cmd --zone=public --add-port=8162/tcp --permanent
firewall-cmd --zone=public --add-port=8163/tcp --permanent
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=62626/tcp --permanent
firewall-cmd --zone=public --add-port=62627/tcp --permanent
firewall-cmd --zone=public --add-port=62628/tcp --permanent
firewall-cmd --zone=public --add-port=61616/tcp --permanent
firewall-cmd --zone=public --add-port=61617/tcp --permanent
firewall-cmd --zone=public --add-port=61618/tcp --permanent
firewall-cmd --reload

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节_15

2.9. MQ启动

mq_01

/app/mq_01/bin/activemq start & tail -f /app/mq_01/data/activemq.log

mq_02

/app/mq_02/bin/activemq start & tail -f /app/mq_02/data/activemq.log

mq_03

/app/mq_03/bin/activemq start & tail -f /app/mq_03/data/activemq.log

2.10. 查看 MQ状态

/app/mq_01/bin/activemq status
/app/mq_02/bin/activemq status
/app/mq_03/bin/activemq status

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_16

三、集群验证测试
3.1. 实现思路

1. 只有一个MQ对外提供服务
2. 当MQ停止运行后,从机会对外提供服务
3. zk会帮助我们完成负载

3.2. 默认测试

测试地址:

http://192.168.43.80:8161/admin
http://192.168.43.80:8162/admin
http://192.168.43.80:8163/admin

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_17


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_18

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_1024程序员节_19


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_20


账号密码都是admin

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_21


从上面测试来看,启动的MQ3个节点,默认只有8163端口对外提供服务

3.3. 停止8163服务测试

ps -ef|grep mq

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_22


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_23


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_24


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_25


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_26

四、查看主从状态
4.1. 连接 Zk

${zkHome}/bin/zkCli.sh

cd /app/zookeeper-3.4.12/bin
./zkCli.sh

4.2. 查看状态信息

连接成功后, 可以使用命令ls查看ZooKeeper中的目录结构如:

ls /
ls /activemq/leveldb-stores

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_27

找到对应的内容后, 可以使用命令get 查看 ZooKeeper 中的数据内容

get /activemq/leveldb-stores/00000000028

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_28

get /activemq/leveldb-stores/00000000029

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_zookeeper_29

get /activemq/leveldb-stores/00000000027

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_xml_30

4.3. java中的代码

//普通模式连接工厂
ConnectionFactory factory = new ActiveMQConnectionFactory("guest","guest","tcp://192.168.43.80:61616");
//集群模式连接工厂
// failover -失败转移,当任意节点宕机,自动转移
ConnectionFactory factory = new ActiveMQConnectionFactory("guest","guest",
"failover:(tcp://192.168.43.80:61616,tcp://192.168.43.80:61617,tcp://192.168.43.80:61618)?Randomize=false");

五、activeMq主从集群
5.1. 准备多份主从模型

在所有的 ActiveMQ节点中的 conf/activemq.xml中增加下述配置:
(每个主从模型中的 networkConnector都指向另外一个主从模型)
常用操作

<networkConnectors>
<networkConnector uri="static://(tcp://ip:port,tcp://ip:port)" duplex="false">
</networkConnector>
</networkConnectors>

duplex="false"的意思是不做复制,假入有两个模型,设置为fasle的话,其中得到消息的模型就不会复制到没有得到消息的模型里,如果设置为true,那么得到消息的模型会把消息复制到没有得到消息的模型中去
注意配置顺序,Networks相关配置必须在持久化相关配置之前。 如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://activemq.apache.org/schema/core">
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster"
dataDirectory="${activemq.data}" >
<networkConnectors>
<networkConnector uri=" static://(tcp://ip:port,tcp://ip:port)"/>
</networkConnectors>

<persistenceAdapter>
<replicatedLevelDB directory = "xxx"/>
</persistenceAdapter>
</broker>
</beans>

5.2. 案例

如: 主从模型1 -192.168.159.129主从模型 2 - 192.168.159.130,
在主从模型 1 的所有节点activemq.xml 配置文件中增加标签:

<networkConnectors>
<networkConnector uri="static://(tcp://192.168.159.130:61616,tcp://192.168.159.130:61617)"/>
</networkConnectors>

在模型 2 中所有节点增加配置:

<networkConnectors>
<networkConnector uri="static://(tcp://192.168.159.129:61616,tcp://192.168.159.129:61617)"/>
</networkConnectors>

六、常用操作
6.1. 常用命令

启动MQ

/app/mq_02/bin/activemq start & tail -f /app/mq_02/data/activemq.log

停止MQ

/app/mq_02/bin/activemq stop

查看MQ 状态

/app/mq_02/bin/activemq status

重新启动MQ

/app/mq_02/bin/activemq restart & tail -f /app/mq_02/data/activemq.log

6.2. 清除数据

用于搭建集群环境有问题,重新搭建,建议把zk数据一起清除

rm -rf /app/mq_01/data/levelDB/
rm -rf /app/mq_02/data/levelDB/
rm -rf /app/mq_03/data/levelDB/
cat /dev/null > /app/mq_01/data/activemq.log
cat /dev/null > /app/mq_02/data/activemq.log
cat /dev/null > /app/mq_03/data/activemq.log


举报

相关推荐

0 条评论