ActiveMQ筆記(2):基於ZooKeeper的HA方案


activemq官網給出了3種master/slave的HA方案,詳見:http://activemq.apache.org/masterslave.html ,基於共享文件目錄,db,zookeeper。

下面演示了如何在本機搭建基於zookeeper的activemq集群:

一、在目錄activemq1下安裝activemq(可參考上篇內容),然后修改conf/activemq.xml

 1     <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
 2         ...
 3         <persistenceAdapter>
 4             <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
 5             <replicatedLevelDB
 6                     directory="activemq-data"
 7                     replicas="3"
 8                     bind="tcp://0.0.0.0:0"
 9                     zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
10                     zkSessionTimeout="2s"
11                     zkPath="/activemq/leveldb-stores"
12             />
13         </persistenceAdapter>
14         ...
15     </broker>

注:為保證zk的HA,本機至少要有3個zk的節點,可參考我以前的文章搭建.

 

二、將activemq1復制二分,變成activemq2、activemq3,由於是在本機測試,為防止端口沖突,這二個目錄下的activemq.xml,得修改端口

        <transportConnectors>
            <transportConnector name="openwire"
                                uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp"
                                uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp"
                                uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt"
                                uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws"
                                uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

上面這幾個端口,大家看情況調整,只要保證3個activemq不沖突即可

 

三、啟動zk1,zk2,zk3,以及activemq1,activemq2,activemq3即可。

注:為方便觀察輸出,建議啟動activemq時,用./activemq.sh console啟動

 

四、測試Failover

正常啟動后,然后手動停掉master,然后觀察剩下的2個節點終端輸出,正常情況下,應該過一會兒,有一個會自動提升為master.

 

最后提醒一下:采用上述HA方案后,雖然系統可用性提高了,但是在本機上測試發現,跟上篇同樣的測試代碼和用例,單節點運行時,1秒可以發8k+條消息,采用zookeeper的HA方案后,每秒只能寫入500條消息左右,對於性能要求較高的場景,建議采用其它方案,比如下一篇要介紹的基於Networks of brokers的HA方案

參考文章:

http://activemq.apache.org/replicated-leveldb-store.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM