1. 程式人生 > >activemq5.14+zookeeper3.4.9實現高可用

activemq5.14+zookeeper3.4.9實現高可用

一、activeMQ主要的幾類部署方式比較
1、預設的單機部署(kahadb)
activeMQ的預設儲存的單機方式,以本地kahadb檔案的方式儲存,所以效能指標完全依賴本地磁碟IO,不能提供高可用。

2、基於zookeeper的主從(levelDB Master/Slave)
5.9.0新推出的主從實現,基於zookeeper來選舉出一個master,其他節點自動作為slave實時同步訊息。
因為有實時同步資料的slave的存在,master不用擔心資料丟失,所以leveldb會優先採用記憶體儲存訊息,非同步同步到磁碟。所以該方式的activeMQ讀寫效能都最好,特別是寫效能能夠媲美非持久化訊息。
優點:
實現高可用和資料安全
效能較好
缺點:
因為選舉機制要超過半數,所以最少需要3臺節點,才能實現高可用。

3、基於共享資料庫的主從(Shared JDBC Master/Slave)
可以基於postgres、mysql、oracle等常用資料庫。
每個節點啟動都會爭搶資料庫鎖,從而保證master的唯一性,其他節點作為備份,一直等待資料庫鎖的釋放。
因為所有訊息讀寫,其實都是資料庫操作,activeMQ節點本身壓力很小,效能完全取決於資料庫效能。
優點:
實現高可用和資料安全
簡單靈活,2臺節點就可以實現高可用
缺點:
穩定性依賴資料庫
效能依賴資料庫

二,activemq高可以用搭建

1搭建zookeeper叢集,可以參考(http://www.cnblogs.com/ystq/p/6617596.html)

2下載activemq,5.14.0下載地址(http://activemq.apache.org/activemq-5140-release.html)

3上傳到三個伺服器,192.168.199.71,192.168.199.72,192.168.199.73,並解壓

4修改conf/activemq.xml檔案,約40行左右,把brokerName修改成統一的一個名稱

1 <broker xmlns= "http://activemq.apache.org/schema/core"  brokerName= "job-broker"  dataDirectory= "${activemq.data}" >

5修改conf/activemq.xml檔案,找到persistenceAdapter,把舊的kahaDB註釋掉,並加入新levelDB

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!-- <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.199.71:2181,192.168.199.71:2181,192.168.199.71:2181"        hostname= "192.168.199.71"        sync= "local_disk"        zkPath= "/activemq/leveldb-stores"        /> </persistenceAdapter>

6另外兩臺伺服器分別重複上一步,只是hostname修改為自己的ip

7分別啟動三臺伺服器的mq

8分別訪問三個伺服器的mq的控制檯,只有一臺能訪問,證明配置成功