ZooKeeper作為一個(gè)服務(wù),它本身也可能發(fā)生故障,所以我們也需要將Zookeeper進(jìn)行集群,避免單點(diǎn)故障問(wèn)題,以保證ZooKeeper本身的高可用性,那么我們需要搭建奇數(shù)臺(tái)Zookeeper構(gòu)成一個(gè)Zookeeper的集群。
集群中只要有超過(guò)半數(shù)的機(jī)器是正常工作的,那么整個(gè)集群對(duì)外就是可用的。
1、下載安裝3個(gè)Zookeeper
因?yàn)閆ooKeeper也是和Tomcat一樣,解壓就能用,所以我們直接在/usr/local目錄下復(fù)制即可。
2、將3個(gè)ZooKeeper中conf目錄下的zoo_sample.cfg復(fù)制一份,改為zoo.cfg
因?yàn)槲覀兪侵苯訌?fù)制的,目前這個(gè)zoo.cfg已經(jīng)存在了。
3、配置zoo.cfg文件
● dataDir=/usr/local/zookeeper-3.4.10-01|02|03/data
● clientPort=2182|2183|2184
● 添加zk之間溝通及選舉的server信息,如果是不同機(jī)器,端口可以相同
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
格式: server.A=B:C:D:
A是一個(gè)數(shù)字,表示這個(gè)是第幾號(hào)服務(wù)器,
B是這個(gè)服務(wù)器的ip地址
C第一個(gè)端口用來(lái)集群成員的信息交換,表示的是這個(gè)服務(wù)器與集群中的Leader服務(wù)器交換信息的端口
D是在leader掛掉時(shí)專門用來(lái)進(jìn)行選舉leader所用
4、創(chuàng)建三個(gè)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
因?yàn)槲覀兪菑?fù)制的zk,所以這些目錄是存在的,我們將原來(lái)data目錄下的內(nèi)容刪除,執(zhí)行 rm –rf *
5、每個(gè)data目錄中都創(chuàng)建一個(gè)名為myid的文件
3個(gè)文件的內(nèi)容分別寫1、2、3;
這個(gè)1、2、3是對(duì)應(yīng)前面的server.1、 server.2、 server.3;
執(zhí)行
echo 1 > myid
echo 2 > myid
echo 3 > myid
至此一個(gè)zookeeper的集群就搭建OK啦。
6、 broker配置
persistenceAdapter>
<replicatedLevelDB
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="localhost:2182,localhost:2183,localhost:2184"/>
</persistenceAdapter>
7、啟動(dòng)zk,啟動(dòng)ActiveMQ進(jìn)行測(cè)試