天天看點

centos7.2 基于zookeeper叢集搭建activeMQ的叢集

activemq作為消息隊列中間件,在分布式系統中扮演中系統之間通信兵的角色,非常重要,使用也非常廣泛,而在分布式系統中,為了消除單點故障,activemq也必将是要做叢集,做主備的切換的,在網上activemq的叢集方案也是很多,其本身也是有主備解決方案的。

目前市面上,使用最多,最常見的,常用于中小系統的方案還是使用zookeeper來作為activemq的主從資料同步,主從切換。因為zookeeper也常與dubbo結合使用,作為分布式系統的開發架構,可以很好的融合進activemq,非常友善。

下面記錄一下,基于zookeeper的activemq叢集的搭建方式,并在相同的三台主機上,做zookeeper叢集+ activemq的叢集。

一:環境:

zookeeper: (版本:3.4.11)

192.168.9.84:2181

192.168.9.85:2181

192.168.9.86:2181

activemq-1: (版本:5.15.3)

192.168.9.84:61616

192.168.9.85:61616

192.168.9.86:61616

---------------------------------------------------------------------------------------------

首先,搭建zookeeper叢集:

## zookeeper需要java環境,需要先安裝jdk,這裡就不說了,不了解的可以參考我的另一篇安裝jdk的博文:http://blog.csdn.net/weixin_41004350/article/details/78491472

##################  所有三台機都進行下列的操作 ##########################

## 下載下傳zookeeper 3.4.6
$ wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

## 解壓
$ tar -zxvf zookeeper-3.4.11.tar.gz

## 新增資料存儲檔案夾和日志檔案夾
$ cd {zookeeper-dir}
$ mkdir data
$ mkdir logs

## 複制一份配置檔案兵改名,然後修改配置檔案
$ cp conf/zoo_sample.cfg conf/zoo.cfg
$ vim conf/zoo.cfg
-----------------------------------------------------------------------------------------------------
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.11/data
dataLogDir=/usr/local/zookeeper-3.4.11/logs
clientPort=2181

server.1=192.168.9.84:2888:3888
server.2=192.168.9.85:2888:3888
server.3=192.168.9.86:2888:3888
-----------------------------------------------------------------------------------------------------

############  每台機的data檔案夾下新增myid檔案,并寫入目前主機的ID,即上述的server.id  ###################
$ echo '1' > {zookeeper-dir}/data/myid

## 啟動之前,先确認端口是否開放,需要開放2181,2888,3888三個端口。
$ firewall-cmd --add-port=2181/tcp --permanent
           
$ firewall-cmd --add-port=2888/tcp --permanent
           
$ firewall-cmd --add-port=3888/tcp --permanent
           

$ firewall-cmd --reload## 每台電腦,依次啟動zookeeper$ bin/zkServer.sh start

## 檢視zookeeper的狀态,會顯示目前節點的狀态,是leaders還是foller等。$ bin/zkServer.sh status二:然後搭建activemq叢集。第一組:activemq-1############    三台機都分别做如下操作: #############################

## 首先下載下傳安裝activemq
$ wget http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.3/apache-activemq-5.15.3-bin.tar.gz&action=download
$ tar -zxvf apache-activemq-5.15.3-bin.tar.gz


## 修改配置檔案
$ cd {apache-activemq-5.10.0-dir}
$ vim conf/activemq.xml
--------------------------------------------------------------------------------------------------------
## 将brokerName 改為叢集的名稱,例如:group1
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="group1" dataDirectory="${activemq.data}">

<persistenceAdapter>
            <!--<kahaDB directory="${activemq.data}/kahadb"/>-->   ## 注釋原配置
            <replicatedLevelDB 
                    directory="${activemq.data}/leveldb_group1"    ## 檔案存儲路徑
                    replicas="3"   ## 叢集執行個體數
                    bind="tcp://0.0.0.0:62222"    ## 執行個體間通信端口
                    zkAddress="192.168.9.84:2181,192.168.9.85:2181,192.168.9.86:2181"   ## zookeeper位址
                    hostname="192.168.9.84"     ## 本機位址,三台主機各不相同
                    zkPath="/activemq/leveldb-group1"   ## zookeeper中儲存路徑
                    sync="local_disk"/>
        </persistenceAdapter>

--------------------------------------------------------------------------------------------------------

## OK,配置完成後,依次逐台主機啟動activemq
$ bin/linux-x86-64/activemq start


## 開放端口
firewall-cmd --add-port=62222/tcp --permanent    ## 執行個體間通信的端口,與zookeeper通信端口
firewall-cmd --add-port=61616/tcp --permanent    ## 預設的提供服務的端口
firewall-cmd --add-port=8162/tcp --permanent    ## 預設的管理頁面端口,不使用的話,可以不開
firewall-cmd --reload
           

## 檢視日志檔案,沒有報錯,正确識别到master,啟動slave或master則成功。

## 啟動後一定要通過檢視日志檔案來确定是否啟動成功,别的地方是看不到是否成功的。

## 具體的日志,很容易看的,看的懂一點點英文的都能看出來,不行還有翻譯嘛

$ vim data/activemq.log

OK,到此,叢集搭建完成,zookeeper叢集+activemq叢集。

接下來進行部署這兩個叢集的web控制台的部署和通路

請檢視我的另一篇博文:http://blog.csdn.net/weixin_41004350/article/details/79916796

繼續閱讀