ZooKeeper作為一個服務,它本身也可能發生故障,所以我們也需要將Zookeeper進行集群,避免單點故障問題,以保證ZooKeeper本身的高可用性,那么我們需要搭建奇數臺Zookeeper構成一個Zookeeper的集群。
集群中只要有超過半數的機器是正常工作的,那么整個集群對外就是可用的。
1、下載安裝3個Zookeeper
因為ZooKeeper也是和Tomcat一樣,解壓就能用,所以我們直接在/usr/local目錄下復制即可。
2、將3個ZooKeeper中conf目錄下的zoo_sample.cfg復制一份,改為zoo.cfg
因為我們是直接復制的,目前這個zoo.cfg已經存在了。
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是一個數字,表示這個是第幾號服務器,
B是這個服務器的ip地址
C第一個端口用來集群成員的信息交換,表示的是這個服務器與集群中的Leader服務器交換信息的端口
D是在leader掛掉時專門用來進行選舉leader所用
4、創建三個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
因為我們是復制的zk,所以這些目錄是存在的,我們將原來data目錄下的內容刪除,執行 rm –rf *
5、每個data目錄中都創建一個名為myid的文件
3個文件的內容分別寫1、2、3;
這個1、2、3是對應前面的server.1、 server.2、 server.3;
執行
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進行測試