一、准備工作:
准備三台機器:
192.168.35.111
192.168.35.112
192.168.35.113
二、搭建zookeeper
三台機器上均要搭建zookeeper服務
// 下載zookeeper安裝包
# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz # tar -xvf zookeeper-3.4.10.tar.gz -C /opt # cd /opt/zookeeper-3.4.10/conf/ # cp zoo_sample.cfg zoo.cfg
// 修改zoo.cfg文件
# grep -Ev '#|^$' zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper-3.4.10/data_zookeeper clientPort=2181 server.1=192.168.35.111:2888:3888 server.2=192.168.35.112:2888:3888 server.3=192.168.35.113:2888:3888
// 第一個端口是master和slave之間的通信端口,默認是2888,第二個端口是leader選舉的端口,集群剛啟動的時候選舉或者leader掛掉之后進行新的選舉的端口默認是3888
這一步很重要,如果順序對應的數字不對,,會導致zookeeper服務啟動失敗
server.1服務器:echo 1 > /opt/zookeeper-3.4.10/zookeeper/myid
server.2服務器:echo 2 > /opt/zookeeper-3.4.10/zookeeper/myid
server.3服務器:echo 3 > /opt/zookeeper-3.4.10/zookeeper/myid
// 啟動zookeeper服務
# /opt/zookeeper-3.4.10/bin/zkServer.sh start #啟動服務 # /opt/zookeeper-3.4.10/bin/zkServer.sh stop #停止服務 # /opt/zookeeper-3.4.10/bin/zkServer.sh restart #重啟服務 # /opt/zookeeper-3.4.10/bin/zkCli.sh #連接集群
三、搭建activemq集群
三台機器上均要搭建activemq服務
// 下載activemq安裝包
# wget https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz # tar -xvf apache-activemq-5.12.0-bin.tar.gz -C /opt
// 修改配置文件 activemq.xml,使用性能比較好的LevelDB替換掉默認的KahaDB
brokerName 一定要設置相同
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-test" dataDirectory="${activemq.data}">
禁掉 原來的 < kahaDB directory="${activemq.data}/kahadb"/ >
<persistenceAdapter> <!--kahaDB directory="${activemq.data}/kahadb"/ --> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:62621" zkAddress="192.168.35.111:2181,192.168.35.112:2182,192.168.35.113:2183" hostname="192.168.37.111" # 設為當前主機的ip zkPath="/activemq/leveldb-stores"/> </persistenceAdapter>
配置項說明:
directory:持久化數據存放地址
replicas:集群中節點的個數
bind:集群通信端口
zkAddress:ZooKeeper集群地址
hostname:當前服務器的IP地址,如果集群啟動的時候報未知主機名錯誤,那么就需要配置主機名到IP地址的映射關系。
zkPath:ZooKeeper數據掛載點
至此,ActiveMQ的高可用集群搭建完成。
四、啟動集群
前提:ZooKeeper集群已啟動
分別啟動三台ActiveMQ服務器
# /opt/apache-activemq-5.12.0/bin/activemq start // 啟動activemq服務 # /opt/apache-activemq-5.12.0/bin/activemq stop // 結束activemq服務 # /opt/apache-activemq-5.12.0/bin/activemq restart // 重啟activemq服務 # /opt/apache-activemq-5.12.0/bin/activemq status // 查看activemq服務狀態
集群啟動成功后,ActiveMQ會往ZooKeeper中注冊集群信息。為了方便,我們使用ZooInspector工具來查看具體的內容。
第一條注冊信息:
其他兩個
從以上三條注冊信息的內容我們可以看出,(192.168.35.182)被選舉為主節點,並對外提供服務,其余兩個節點作為從節點,處於待機狀態,不提供服務。
知道了ActiveMQ集群的主節點后,我們可以使用瀏覽器來訪問它的管理頁面,查看它是否能正常提供服務.
五、測試集群的高可用性
關掉主節點,使用ZooInspector工具來查看具體的內容,發現主節點的ip地址換了,並且節點顯示只剩下兩個。