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

目前我们已经创建了三个Window 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,

http://mirror.bit.edu.cn/apache/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz

将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

Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群的更多相关文章

  1. 部署hadoop2.7.2 集群 基于zookeeper配置HDFS HA+Federation

    转自:http://www.2cto.com/os/201605/510489.html hadoop1的核心组成是两部分,即HDFS和MapReduce.在hadoop2中变为HDFS和Yarn.新 ...

  2. Spark集群基于Zookeeper的HA搭建部署笔记(转)

    原文链接:Spark集群基于Zookeeper的HA搭建部署笔记 1.环境介绍 (1)操作系统RHEL6.2-64 (2)两个节点:spark1(192.168.232.147),spark2(192 ...

  3. 微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

    网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP. 摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日..NET 的第一个版 ...

  4. 在Azure上搭建L2TP服务器

    L2TP是常用的一种point-site的VPN.而目前在Azure上的VPN Gateway只支持IPsec和SSTP两种.如果客户需要L2TP服务器,需要自己在VM中搭建.本文将介绍如何在Azur ...

  5. eureka集群基于DNS配置方式

    https://www.cnblogs.com/relinson/p/eureka_ha_use_dns.html   最近在研究spring cloud eureka集群配置的时候碰到问题:多台eu ...

  6. 基于zookeeper的activemq的主从集群配置

    项目,要用到消息队列,这里采用activemq,相对使用简单点.这里重点是环境部署. 0. 服务器环境 RedHat710.90.7.210.90.7.1010.90.2.102 1. 下载安装zoo ...

  7. 【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统

    <一>项目结构图 (1)ZK协调分配 ===>集群中的每一个定时服务器与zookeeper交互,由集群中的master节点进行任务划分,并将划分结果分配给集群中的各个服务器节点. = ...

  8. 在Windows Azure上搭建SSTP VPN

    在国内,VPN是用来干嘛的大家都懂的.很久之前我尝试用Azure的Virtual Network搞VPN结果惨败了.最近微博上有基友写了篇文章亲测可行,原文在这里.可惜是英文的.所以我的这篇文章仅仅是 ...

  9. Windows Azure上搭建SSTP VPN

    一.服务器设置 首先,从0开始,你需要创建一个新的VM.我选择Windows Server 2012 R2,所有步骤和创建普通VM都一样,但最后在防火墙设置里一定要打开TCP 443端口: 创建完成后 ...

随机推荐

  1. LOJ.6160.[美团CodeM初赛 RoundA]二分图染色(容斥 组合)

    题目链接 \(Description\) 求在\(2n\)个点的完全二分图(两边各有\(n\)个点)上确定两组匹配,使得两个匹配没有交集的方案数. \(n\leq10^7\). \(Solution\ ...

  2. 4 Values whose Sum is 0 [POJ2785] [折半搜索]

    题意 给你长度为n四个数列,每个数列选一个数使总和为4,有多少种选法(不同选法仅当起码有一个元素的下标不同) 输入 第一行,n 下面n行,每行四个数,代表ai,bi,ci,di 输出 选法数量 样例输 ...

  3. hadoop2-hive

    hadoop2-hive 1.What,Why,How? 1.Hive是数据仓库,在MySQL或其他关系型数据库中存放元数据信息,而把真正的Data存放在HDFS上面. 2.主要使用Hive来对历史数 ...

  4. Java RE (正则表达式)

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则) ...

  5. js获取手机信息

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Java 中的字符串转为二进制

    /** * 将字符串转为二进制 */ public class StrConversion { public static void main(String args[]) { String str ...

  7. 5. 箭头函数_this 指向_es6 常用语法

    1. 箭头函数 函数的简写方式 () => {} 只有一个参数时,可以省略() ---- x => {} 只有一条语句时,可以省略{},此时这点语句的结果会作为函数的返回值返回  () = ...

  8. centos7-- sbt的安装使用

    sbt是一款类似于maven的构建工具 安装sbt curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo mv bintray- ...

  9. P1316 丢瓶盖--(二分答案)

    题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入输出 ...

  10. CSS预编译语言-LESS

    LESS的作用 CSS层叠样式表,它是标记语言,不是编程语言:所有的预编译CSS语言(less/sass…)都是赋予了CSS的面向对象思想 LESS的编译 LESS叫做预编译CSS:写好的LESS代码 ...