首页 > 其他分享 >腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试

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

时间:2022-10-29 19:34:38浏览次数:94  
标签:02 LevelDB -- app zookeeper 192.168 mq 集群 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高可用伪集群安装、配置、测试_xml_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高可用伪集群安装、配置、测试_腾讯云_03


mq_02

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


mq_03

腾讯云~基于zookeeper(集群)+LevelDB的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高可用伪集群安装、配置、测试_activemq_07


mq_03

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_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高可用伪集群安装、配置、测试_xml_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高可用伪集群安装、配置、测试_xml_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高可用伪集群安装、配置、测试_1024程序员节_12

mq_02

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

mq_03

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_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高可用伪集群安装、配置、测试_activemq_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高可用伪集群安装、配置、测试_腾讯云_18

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


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


账号密码都是admin

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


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

3.3. 停止8163服务测试
ps -ef|grep mq

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


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


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


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


腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_activemq_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高可用伪集群安装、配置、测试_腾讯云_27

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

get /activemq/leveldb-stores/00000000028

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

get /activemq/leveldb-stores/00000000029

腾讯云~基于zookeeper(集群)+LevelDB的ActiveMq高可用伪集群安装、配置、测试_腾讯云_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


标签:02,LevelDB,--,app,zookeeper,192.168,mq,集群,activemq
From: https://blog.51cto.com/gblfy/5806465

相关文章

  • 腾讯云~ zookeeper集群安装、配置、验证
    文章目录​​一、预备工作​​​​1.下载​​​​2.解压​​​​3.创建目录​​​​4.myid文件​​​​5.验证​​​​6.效果图​​​​二、配置管理​​​​2.1.z......
  • Mac下安装zookeeper
    step1:使用homebrew命令安装(如果卡住在​​brewupdate--preinstall​​​了,直接​​Ctrl+C​​):brewinstallzookeeperstep2:进入bin目录,启动zk服务:cd/usr/local/Cellar/zo......
  • 企业级集群架构
    436企业级集群架构集群436作者:libin*-------------------------下面为RHCA-红帽集群安装及配置管理(建议先看理论在实操)*实验环境说明:实验测试*2台centos7的虚拟机4C4......
  • HM-RocketMQ1.3【RocketMQ集群搭建】
    1集群中各角色介绍Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局一个Broker主节点可以配备多个Broker从节点主节点......
  • 集群部署ClickHouse
    一、部署前提需要一个Zookeeper集群搭建clickhouse集群时,需要使用Zookeeper去实现集群副本之间的同步,所以这里需要zookeeper集群,zookeeper集群安装后可忽略此步骤。......
  • RabbitMQ 进阶 -- 阿里云服务器部署RabbitMQ集群
    一、为什么要搭建RabbitMQ集群?未部署集群的缺点如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非......
  • 分布式锁中-基于Zookeeper的实现是怎样
    Zookeeper(后续简称ZK)是一个分布式的,开放源码的分布式应用程序协调服务,通常以集群模式运转,其协调能力可以理解为是基于观察者设计模式来实现的;ZK服务会使用Znode存储使用者的......
  • zookeeper和kafka安装
    系统:CentOSLinux7(Core)x86_64一、JDK安装1.安装准备#查看系统jdk版本java-version#检查jdk自带安装包rpm-qa|grepjava#卸载jdkyum-yremovetzdat......
  • flink集群安装-Standalone模式
    1、节点规划JobManager:192.168.23.151TaskManager:192.168.23.152TaskManager:192.168.23.153TaskManager:192.168.23.1542、安装配置1)首先在一台机器上安装flink,参......
  • spring boot+dubbo+zookeeper
    111TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussian......