activeMq叢集搭建
1.ActiveMq下載
下載地址:https://activemq.apache.org/components/classic/download/
2.ActiveMq解壓安裝
Tar -zxvf xxx(下載的安裝包名稱)
3.Master/Slave叢集配置
shared File System Mater Slave方式
(1)選擇一臺伺服器作為NFS伺服器(如:172.17.100.60)
(2)在該伺服器上面建立一個可共享的目錄 如 /mydata/shareMQ目錄
在/mydata下執行命令mkdir shareMQ
(3)將/mydata/shareMQ目錄的許可權設定為777 (chmod 777 /mydata/shareMQ
(4)編輯NFS伺服器上面的/etc/exports檔案(剛開始開啟是個空檔案)
新增內容 /mydata/shareMQ 172.17.100.55(rw,sync) 172.17.100.57(rw,sync)
新增內容 /mydata/shareMQ 172.17.100.58(rw,sync) 172.17.100.59(rw,sync)
(5)重啟nfs服務 service nfs restart
(6)選擇兩臺伺服器作為activemq的執行環境 (如:172.17.100.55 172.17.100.57)
(7)分別在兩臺伺服器上面執行
Mount-tnfs172.17.100.60:/mydata/shareMQ /mydata/mq/apache-activemq-5.15.14/data/kahadb
172.17.100.60:/mydata/shareMQ剛開始建立的共享目錄
/mydata/mq/apache-activemq-5.15.14/data/kahadb掛載點,也是我們的MQ訊息持久化的位置。
(8)重複上面的步驟,第二步中的共享目錄新建一個/mydata/shareMQ5859
選擇兩臺伺服器作為activemq的執行環境 (如:172.17.100.58 172.17.100.59)
則會有兩個master/slave叢集,每個叢集分別有兩個節點。
4.靜態網路連線配置
(1)在activemq根目錄下進入/conf,可以看到activemq.xml檔案
(2)編輯activemq.xml檔案,新增內容(
<networkConnectors>
<networkConnector uri="static:(tcp://172.17.100.58:61616,tcp://172.17.100.59:61616)" duplex="true" conduitSubscriptions="false"/>
</networkConnectors>
Duplex:代表是否雙向連線
conduitSubscriptions:是否把同一個broker的多個consumer當做一個來處理。如果配置為true,假定有1個消費者連線amq1,3個消費者連線amq2,那麼amq1的那個消費者將接收到50%的訊息,amq2的3個消費者一共接收到50%的訊息。所以這裡設定為false,這樣假定傳送100條訊息,那麼每個消費者消費25條訊息。
uri="static:(tcp://172.17.100.58:61616,tcp://172.17.100.59:61616):連線另外兩臺機器上面的mq
5.ActiveMq啟動、停止、檢視狀態
進入activemq根目錄下的bin目錄
啟動: ./activemq start
停止: ./activemq stop
檢視狀態:./activemq status
6.叢集高可用性測試
分別啟動172.17.100.55 172.17.100.57兩臺機器上面的mq服務,先啟動的獲取到檔案鎖為master,後啟動的為slave。只有master可以被訪問到,殺掉master服務,slave獲取檔案鎖變為master。
7.消費者負載均衡測試
兩個可訪問的mq服務之間形成靜態的網路連線,兩個服務上面各連線有一個消費者和一個生產者,其中一個生產者投遞訊息到mq,兩個消費者各自消費一半的訊息。