自從activemq5.9.0開始,activemq的集羣實現方式取消了傳統的Master-Slave方式,增長了基於zookeeper+leveldb的實現方式,其餘兩種方式:目錄共享和數據庫共享依然存在。本文主要闡述基於zookeeper和leveldb搭建activemq集羣,這裏須要特別提醒,本文實現的集羣僅提供主備功能,避免單點故障,沒有負載均衡功能。 html
下面開始咱們的征途。 node
1、搭建zookeeper集羣 數據庫
關於搭建zookeeper集羣的文章請參考:zookeeper的集羣模式下的安裝和配置。 apache
本文使用zookeeper3.4.6,3臺虛擬機:192.168.2.161, 192.168.2.145, 192.168.2.146,zookeeper使用其默認端口:2181。 負載均衡
zookeeper集羣搭建完成以後,我順便搭建了兩套監控系統:taokeeper-monitor和node-zookeeper-browser。前者是淘寶開源的一套監控zookeeper的系統,用了以後感受獲得的有效信息很少,並且集羣趨勢圖老是不顯示;後者是用nodejs實現的zookeeper節點數據查看系統,雖然頁面不太美觀,可是實用。 tcp
圖 1. taokeeper-monitor界面 測試
圖 2. node-zookeeper-browser界面 ui
2、搭建activemq集羣 url
一、安裝 spa
activemq自己的安裝過程很簡單,本文不詳述,可參照官方的Getting-started。
二、配置
在三臺機器上完成activemq安裝以後,開始集羣配置,經過配置使三個activemq實例組成集羣。下面的配置在三個實例上保持一致,除了標紅部分,主要修改配置文件conf/activemq.xml。
(1)broker-name的統一
將broker標籤的brokerName屬性設置爲統一的值,我將這個值設置爲「test」,只有三個實例的brokerName一致,zookeeper才能識別它們屬於同一個集羣。
(2)persistenceAdapter的配置
persistenceAdapter設置持久化方式,主要有三種方式:kahaDB(默認方式)、數據庫持久化、levelDB(v5.9.0提供支持)。
本文采用levelDB來進行持久化,並使用zookeeper實現集羣的高可用,配置以下:
首先註釋掉原來kahaDB的持久化方式,而後配置levelDB+zookeeper的持久化方式。
<!-- <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> --> <persistenceAdapter> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="192.168.2.161:2181,192.168.2.145:2181,192.168.2.146:2181" hostname="192.168.2.161" sync="local_disk" zkPath="/activemq/leveldb-stores" /> </persistenceAdapter>
注意上述配置中的hostname屬性值,不一樣的activemq實例對應不一樣的hostname值,其餘兩個實例配置的hostname值分別爲:192.168.2.145, 192.168.2.146。
三、問題與解決方案
配置完成以後啓動zookeeper集羣,而後依次啓動三個activemq實例,啓動以後報錯:"activemq LevelDB IOException handler"。
緣由:版本5.10.0存在的依賴衝突。
解決方案:
(1)移除lib目錄中的pax-url-aether-1.5.2.jar包;
(2)註釋掉配置文件中的日誌配置;
<bean id="logQuery" class="org.fusesource.insight.log.log4j.Log4jLogQuery" lazy-init="false" scope="singleton" init-method="start" destroy-method="stop"> </bean>
參考:http://www.350351.com/jiagoucunchu/leveldb/334233.html
四、測試
任意停掉三個實例中的任意一個,activemq服務依然正常運轉。
歡迎轉載,請註明出處:http://my.oschina.net/xiaohui249/blog/313028