ZooKeeper作為一個服務(wù),它本身也可能發(fā)生故障,所以我們也需要將Zookeeper進行集群,避免單點故障問題,以保證ZooKeeper本身的高可用性,那么我們需要搭建奇數(shù)臺Zookeeper構(gòu)成一個Zookeeper的集群。
集群中只要有超過半數(shù)的機器是正常工作的,那么整個集群對外就是可用的。
1、下載安裝3個Zookeeper
因為ZooKeeper也是和Tomcat一樣,解壓就能用,所以我們直接在/usr/local目錄下復(fù)制即可。

2、將3個ZooKeeper中conf目錄下的zoo_sample.cfg復(fù)制一份,改為zoo.cfg
因為我們是直接復(fù)制的,目前這個zoo.cfg已經(jīng)存在了。
3、配置zoo.cfg文件
● dataDir=/usr/local/zookeeper-3.4.10-01|02|03/data
● clientPort=2182|2183|2184
● 添加zk之間溝通及選舉的server信息,如果是不同機器,端口可以相同
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
格式: server.A=B:C:D:
A是一個數(shù)字,表示這個是第幾號服務(wù)器,
B是這個服務(wù)器的ip地址
C第一個端口用來集群成員的信息交換,表示的是這個服務(wù)器與集群中的Leader服務(wù)器交換信息的端口
D是在leader掛掉時專門用來進行選舉leader所用
4、創(chuàng)建三個dataDir目錄
/usr/local/zookeeper-3.4.10-01/data
/usr/local/zookeeper-3.4.10-02/data
/usr/local/zookeeper-3.4.10-03/data
因為我們是復(fù)制的zk,所以這些目錄是存在的,我們將原來data目錄下的內(nèi)容刪除,執(zhí)行 rm –rf *
5、每個data目錄中都創(chuàng)建一個名為myid的文件
3個文件的內(nèi)容分別寫1、2、3;
這個1、2、3是對應(yīng)前面的server.1、 server.2、 server.3;
執(zhí)行
echo 1 > myid
echo 2 > myid
echo 3 > myid
至此一個zookeeper的集群就搭建OK啦。
6、 broker配置
persistenceAdapter>
<replicatedLevelDB
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="localhost:2182,localhost:2183,localhost:2184"/>
</persistenceAdapter>
7、啟動zk,啟動ActiveMQ進行測試