一. 準備條件:
(1) 最好是有3臺服務器【2臺也行, 只是根據(replicas/2) 1 公式至少得2個ActiveMQ服務存在才能保證運行, 自己測試的時候麻煩點, 關掉其中一個, 再開啟, 看會不會選舉到另一個ActiveMQ服務, 多試幾次可以看到效果】
(2) ActiveMQ安裝參考: ActiveMQ
(3) ZooKeeper安裝參考: ZooKeeper
二. 配置 :
ActiveMQ根目錄下的conf/activemq.xml, 原來默認如下:
lt;persistenceAdaptergt; lt;kahaDB directory=quot;${activemq.data}/kahadbquot;/gt; lt;/persistenceAdaptergt;
修改為(hostname根據服務器不同做出改變, 其他配置相同):
lt;persistenceAdaptergt; lt;replicatedLevelDB directory=quot;${activemq.data}/leveldbquot; replicas=quot;3quot; bind=quot;tcp://0.0.0.0:0quot; zkAddress=quot;172.17.110.1:2181quot; zkPassword=quot;passwordquot; hostname=quot;172.17.110.1quot; sync=quot;local_diskquot; zkPath=quot;/activemq/leveldb-storesquot; /gt; lt;/persistenceAdaptergt;
directory : 存儲數據的路徑
replicas : 集群中的節點數【(replicas/2) 1公式表示集群中至少要正常運行的服務數量】, 3臺集群那么允許1臺宕機, 另外兩臺要正常運行
bind : 當這個節點成為Master, 它會綁定配置好的地址和端口來履行主從復制協議
zkAddress : ZooKeeper的ip和port, 如果是集群, 則用逗號隔開(這里作為簡單示例ZooKeeper配置為單點, 這樣已經適用于大多數環境了, 集群也就多幾個配置)
zkPassword : 當連接到ZooKeeper服務器時用的密碼
hostname : 本機ip
sync : 在認為消息被消費完成前, 同步信息所存貯的策略, 如果有多種策略用逗號隔開, ActiveMQ會選擇較強的策略(local_mem, local_disk則肯定選擇存貯在本地硬盤)
zkPath : ZooKeeper選舉信息交換的存貯路徑
三. 測試
Step1 :
根據ZooKeeper的策略, 從三臺ActiveMQ服務器選一臺運行, 其他兩臺等待運行, 只是做數據上的主從同步。
所以, 啟動ZooKeeper服務器和ActiveMQ服務器后, 訪問http://172.17.110.1:8161/admin/ 、http://172.17.110.2:8161/admin/、http://172.17.110.3:8161/admin/ 只會有一個成功。
Step2 :
關閉能訪問http://ip:8161/admin/的ActiveMQ服務, 訪問其他兩個, 其中有一個能訪問, 說明ActiveMQ ZooKeeper 集群高可用配置已經成功。
四. 參考文檔
Tags: ActiveMQ ZooKeeper
文章來源:http://www.importnew.com/23142.html