ActiveMQ 从 5.9.0 版本开始, 集群实现方式取消了传统的 Master-Slave 方式, 增加了基于 ZooKeeper+LevelDB 的实现方式.
本文主要介绍了在 Windows 环境下配置基于 ZooKeeper 的 ActiveMQ 高可用性集群, 集群实现了主备功能, 实现了单点故障时的高可用性, 并不涉及负载均衡技术.
从整体上看, 整个安装配置过程主要有以下几个步骤:
1. Windows Server 环境搭建, 端口配置
2. Jre 安装配置
3. Zookeeper 安装配置
4. ActiveMQ 安装配置
本文中我们搭建 3 个节点的 Zookeeper 和 ActiveMQ 集群, 整体架构:
各种组件使用的是:
基于 Windows Azure 的 Windows Server2012
JDK 1.7
ZooKeeper 3.4.6
ActiveMQ 5.12
一, Windows Server 环境搭建, 端口配置
我们需要搭建 3 个 Windows Server 虚拟机, 用作 Zookeeper 的三个节点以及消息服务器.
1. 创建 Windows Server 虚拟机 (三个)
进入 Windows Azure 的管理控制台, 选择 New-Compute-Virtual Machine-From Gallery
选择 Windows Server 镜像, 选择 Windows Server2012 R2 DataCenter
配置以下开放的端口:
2. 配置端口说明
二, JRE 安装配置
ZooKeeper 和 ActiveMQ 都依赖于 Jdk, 因此我们需要先安装配置 JDK1.7
1. JDK 下载
JDK 的下载地址为:
http://download.oracle.com/otn/java/jdk/7u80-b15/jdk-7u80-windows-x64.exe?AuthParam=1446712677_06310dc4ac8a4e8664ae69cb80b6659a
2. JDK 安装, 配置环境变量
双击 exe 直接安装, 依次下一步处理, 注意, 路径中不能包含汉字.
将 JAVA_HOME 加入到环境变量, 并生效
环境变量 CLASS_PATH:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
三, 安装配置 ZooKeeper
目前我们已经创建了三个 Windows Server 2012 虚拟机
1. 在 10.***.***.47 上配置 Zookeeper-1
主要配置 Zoo.Cfg 文件, 新建 Data 文件夹和 myid 文件
zookeeper 文件目录:
修改 Conf 中的 zoo.cfg 文件 (将 zoo_sample.cfg 改名为 zoo.cfg),
设置下 Data 文件夹的路径, 例如: dataDir=C:\\zookeeper\\data
Data 文件夹需要新建
设置 ZooKeeper 集群, 这里我们用了 3 个节点, 以下是集群配置:
- server.1=10.***.***.47:2888:3888
- server.2=10.***.***.27:2888:3888
- server.3=10.***.***.51:2888:3888
在 Data 文件夹下新建 MyID 文件, MyID 文件中的内容为当前 Node 的 ID, 例如 1
2. 在 10.***.***.27 上配置 Zookeeper-2
与配置 Zookeeper-1 相同, 不同的是 myid 文件的内容: 2
3. 在 10.***.***.51 上配置 Zookeeper-3
与配置 Zookeeper-1 相同, 不同的是 myid 文件的内容: 3
4. 启动 zookeeper
Windows 下启动 Zookeeper 是执行 bin 目录下的 zkServer.cmd 文件,
依次启动三个虚拟机上的 zookeeper:
四, 安装配置 ActiveMQ 集群
下载 ActiveMQ,
将 ActiveMQ 拷贝到三个 Windows 虚拟机中.
1. 修改 ActiveMQ 配置
ActiveMQ 的配置文件在 Conf 文件夹下的 ActiveMQ.xml, 我们主要修改两个地方:
BrokerName: 三个节点的 ActiveMQ 的 BrokerName 必须一致, 例如: teldbroker
persistenceAdaper: 主要配置 zkAddress(三个 Zookeeper 节点) 和 hostname,
hostname 是本机的 IP
在其他两个虚拟机上进行统一的配置, 注意不同的虚拟机不同的 hostname.
2. 启动 ActiveMQ
在三台虚拟机上依次启动 ActiveMQ: 在 bin 目录执行: activemq start
3. 连接 ActiveMQ
ActiveMQ 在集群模式下的连接字符串是不同的:
- failover:(tcp://42.***.***.90:61616,tcp://42.***.***.193:61616,tcp://42.***.***.140:61616)
- ActiveMQ IConnection Demo:
五, ActiveMQ 集群高可用性测试
1. ActiveMQ 集群切换
关闭当前正在提供服务的 ActiveMQ Master 节点, 其他的 Slave 节点中选定其中一个自动提升为 Master 节点. 程序可以正常连接 MQ 服务.
消息发送完备后, 切换 ActiveMQ 节点, 消息可以正常消费.
当前 Master 节点的 web Console 可以访问.
2. ZooKeeper 集群切换
ZooKeeper 的一个 Leader 节点关闭后, 其他的 Follower 节点会被选中一个提升为 Leader 节点.
ActiveMQ 可以正常访问.
以上是在 Azure 云端搭建 ActiveMQ 集群, 分析给大家.
周国庆
2019/3/14
来源: https://www.cnblogs.com/tianqing/p/6897196.html