ActiveMQ從5.9.0版本開始,集羣實現方式取消了傳統的Master-Slave方式,增長了基於ZooKeeper+LevelDB的實現方式。java
本文主要介紹了在Windows環境下配置基於ZooKeeper的ActiveMQ高可用性集羣,集羣實現了主備功能,實現了單點故障時的高可用性,並不涉及負載均衡技術。apache
從總體上看,整個安裝配置過程主要有如下幾個步驟:windows
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.12oracle
1、 Windows Server環境搭建、端口配置負載均衡
咱們須要搭建3個Windows Server虛擬機,用做Zookeeper的三個節點以及消息服務器。tcp
1. 建立Windows Server虛擬機(三個)測試
進入Windows Azure的管理控制檯,選擇New-Compute-Virtual Machine-From Galleryspa
選擇Windows Server鏡像,選擇Windows Server2012 R2 DataCenter
配置如下開放的端口:
2. 配置端口說明
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;
3、 安裝配置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:
4、 安裝配置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:
5、 ActiveMQ集羣高可用性測試
1. ActiveMQ集羣切換
關閉當前正在提供服務的ActiveMQ Master節點,其餘的Slave節點中選定其中一個自動提高爲Master節點。程序能夠正常鏈接MQ服務。
消息發送完備後,切換ActiveMQ節點,消息能夠正常消費。
當前Master節點的Web Console能夠訪問。
2. ZooKeeper集羣切換
ZooKeeper的一個Leader節點關閉後,其餘的Follower節點會被選中一個提高爲Leader節點。
ActiveMQ能夠正常訪問。
以上是在Azure雲端搭建ActiveMQ集羣,分析給你們。
周國慶
2019/3/14