硬件環境:
三臺linux服務器:192.168.2.13,192.168.2.15,192.168.2.16。
推薦部署在三臺機器上,都部署在一臺機器仍是會有單點故障,最少1G的內存就夠了。
下載最新版本的zookeeper,apache-activemq(都是linux的64位,jdk什麼的就不說了)
下面的配置三臺機器基本都是同樣,特別之處有備註,下面開始搭建。
1.新建文件夾 mqzk (可本身定義)
2.解壓zookeeper,activmq到此目錄。這裏路徑爲:~/mqzk/zookeeper, ~/mqzk/activmq
3.配置zookeeper
3.1 配置conf/zoo.cfg(zoo.cfg默認不存在的,須要把zoo_sample.cfg文件名稱修改成zoo.cfg)
打開zoo.cfg,修改dataDir=當前zookeeper的data文件夾目錄(若是沒有data文件夾,就建立一個)
這裏有三臺zookeeper因此這裏要配置下集羣server,在zoo.cfg最後面添加三行:
server.1=192.168.2.13:2888:3888 (本機ip)
server.2=192.168.2.15:2888:3888 (第二臺機ip)
server.3=192.168.2.16:2888:3888 (第三臺機ip)
這裏的三個server,對應着3臺linux服務器(ok)。
保存退出。
3.2 進入 ~/mqzk/zookeeper/data文件夾,新建myid文件。打開myid文件,裏面輸入1保存退出。
輸入1的緣由是由於上面的server.1,因此這個值在3臺zookeeper裏是不同的。
3.3 到此配置結束。其餘兩臺按照此配置就能夠了。
3.4 假設三臺都配置好了,開始依次重啓這3臺服務器:進入zookeeper/bin目錄,執行./zkServer.sh start 啓動
4.配置activemq
4.1 這裏主要是配置activemq/confg目錄下的activemq.xml文件,打開activemq.xml文件。
找到 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="panguixiangbroker" dataDirectory="${activemq.data}">
將 brokerName的值改成本身須要的字符串(我這裏是panguixiangbroker);
要特別注意這裏,這個brokerName的值必須三臺activemq同樣(這樣zookeeper纔會認爲是一個集羣的)
4.2 找到:
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
改成:
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3" <!--這裏有三臺因此就3了-->
bind="tcp://0.0.0.0:0"
zkAddress="192.168.2.13:2181,192.168.2.15:2181,192.168.2.16:2181"
hostname="192.168.2.13" <!--當前機器的ip-->
zkPath="/activemq/leveldb-stores" sync="local_disk"/> <!--這個是默認的不用改-->
<!--<kahaDB directory="${activemq.data}/kahadb"/> -->
</persistenceAdapter>
保存退出
其餘兩臺active mq的配置相似。
依次啓動3臺 activemq。(bin/linux-64/./activemq start)
在瀏覽器訪問:http://192.168.2.13:8161,http://192.168.2.15:8161,http://192.168.2.16:8161
發現只有一臺能夠正常訪問,這就對了。
而後在spring的jms配置文件裏,引用集羣mq,例如: failover:(tcp://192.168.2.13:61616, tcp://192.168.2.15:61616 , tcp://192.168.2.16:61616 ) 。
到此所有結束,固然這只是個簡單的配置,更多配置參數請參考:
http://activemq.apache.org/replicated-leveldb-store.html
zookeeper有也有對外的api(java,ruby,python,php,等版本),能夠根據業務須要開發適合直接的監控管理系統。
不在本文範圍之類。php