Zookeeper+ActiveMQ搭建集群實現高可用


一、搭建Zookeeper集群

  Zookeeper搭建方案

服務器編號 服務器IP地址 LF通信端口 LF選舉端口 客戶端端口
1 192.168.229.131 2888 3888 2180
2 192.168.229.134 2888 3888 2180
3 192.168.229.133 2888 3888 2180

 

 

 

 

 

  

具體的Zookeeper集群搭建可以參考這篇博客https://www.cnblogs.com/xiaomaomao/p/13800523.html

 

二、搭建ActiveMQ集群

  1、ActiveMQ搭建方案

服務器IP地址 ActiveMQ后台端口 ActiveMQ管理控制台端口
192.168.229.131 61617 8161
192.168.229.134 61618 8161
192.168.229.133 61619 8161

 

 

 

 

 

 

  2、拷貝壓縮包到 /otp 目錄下,之所以放置在 /opt 目錄下,是為了備份一個壓縮包,方便以后再用

// 復制壓縮包到安裝目錄下,我這里的安裝目錄是自己在 /usr/local/下新建的一個activemq目錄
cp -r apache-activemq-5.15.5-bin.tar.gz /usr/local/activemq/

  3、解壓縮到當前目錄

  4、進入解壓后的文件目錄

  5、修改activemq.xml配置文件,使用性能比較好的LevelDB替換掉默認的KahaDB

配置項 說明
directory 持久化數據存放地址(默認的情況下${activemq.data}下是沒有leveldb目錄的,要自己創建)
replicas 集群中節點的個數(由於我們是三台服務器搭建的ActiveMQ,所以replicas的數量是3)
bind 集群通信端口
zkAddress ZooKeeper集群地址
hostname 當前服務器的IP地址,如果集群啟動的時候報未知主機名錯誤,那么就需要配置主機名到IP地址的映射關系
zkPath ZooKeeper數據掛載點(集群啟動成功之后,會在zookeeper下自動注冊該節點)

 

 

 

 

 

 

 

 

  

 

  配置主機名到IP地址的映射關系具體可以參考這篇博文 https://www.cnblogs.com/xiaomaomao/p/13810251.html

  三台ActiveMQ服務器的配置如下:

  192.168.229.131服務器

<!-- 三台服務器的brokerName一定要保持一致 -->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">

<persistenceAdapter>
	<!--注釋掉或者刪除掉kahaDB-->
	<!--kahaDB directory="${activemq.data}/kahadb"/ -->
        <replicatedLevelDB
        directory="${activemq.data}/leveldb"
        replicas="3"
        bind="tcp://0.0.0.0:61617"
        zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
        hostname="CentOS001"    
        zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

  192.168.229.134服務器

<!-- 三台服務器的brokerName一定要保持一致 -->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">

<replicatedLevelDB
<!--kahaDB directory="${activemq.data}/kahadb"/ -->
        directory="${activemq.data}/leveldb"
        replicas="3"
        bind="tcp://0.0.0.0:61618"
        zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
        hostname="CentOS002"    
        zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

  192.168.229.133服務器

<!-- 三台服務器的brokerName一定要保持一致 -->
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">

<replicatedLevelDB
		<!--kahaDB directory="${activemq.data}/kahadb"/ -->
        directory="${activemq.data}/leveldb"
        replicas="3"
        bind="tcp://0.0.0.0:61619"
        zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
        hostname="CentOS003"    
        zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

 

三、啟動集群

  1、操作之前保證關閉防火牆,並且windows和Linux相互之間是可以ping通的

  2、先啟動ZooKeeper集群,因為只有zookeeper集群啟動之后,你才能將ActiveMQ服務在zookeeper上注冊  

  3、然后再分別啟動三台ActiveMQ服務器

 

四、測試

  使用ZooInspector工具來查看具體的內容,可以參考https://www.cnblogs.com/xiaomaomao/p/13810168.html這篇博客來了解關於ZooInspector的使用

  通過查看Zookeeper的節點信息情況,可以得出192.168.229.131被選舉成了主機,那么使用該主機去登錄ActiveMQ的客戶端,可以登錄成功

  使用命令 ./activemq stop 關閉 192.168.229.131這台主機,查看ZooInspector,發現zookeeper通過選舉機制推舉出了新的主機 192.168.229.134,使用該主機訪問ActiveMQ的控制台,發現可以登錄ActiveMQ的管理控制台

  重新啟動192.168.229.131這台服務器,保證三台服務器同時在線,然后手動down掉一台slaver,發現ActiveMQ依舊可以提供服務,如果半數的服務器是正常的情況下,整個集群就能正常工作,這樣就保證了高可用

  至此,整個集群的搭建就完成了.

 


免責聲明!

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



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