本文總結(jié)一下在Linux上Zookeeper的安裝和配置
安裝
在zookeeper官網(wǎng)上推薦的清華鏡像地址下載對(duì)應(yīng)版本的zk安裝包偷霉,以最新版本3.5.6舉例,這里記住要下載帶-bin的包
如果下載不帶-bin的包,啟動(dòng)zk時(shí)可能會(huì)報(bào)錯(cuò)Starting zookeeper ... FAILED TO START
查看日志會(huì)看到如下錯(cuò)誤
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
配置
- 解壓睡毒,進(jìn)入conf目錄拷貝配置文件
cp -a zoo_sample.cfg zoo.cfg
默認(rèn)端口2181谱秽,可自行修改,如有需要可以修改dataDir路徑
- bin/zkServer.sh start 啟動(dòng)zk服務(wù)
- bin/zkServer.sh status 查看zk狀態(tài)
- bin/zkServer.sh stop 停止zk服務(wù)
- bin/zkCli.sh 進(jìn)入zk客戶端操作界面
偽集群搭建
偽集群指的是在一臺(tái)物理機(jī)上搭建zk集群
-
linux上解壓三份zookeeper到同一目錄下
- 修改各自的配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper1
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
tickTime 一次心跳的時(shí)間耙蔑,單位是毫秒
initLimit 初始follower和leader連接并同步數(shù)據(jù)的超時(shí)時(shí)間见妒,如果在該時(shí)間內(nèi)沒(méi)有半數(shù)以上的follower連接并同步成功的話,leader會(huì)放棄甸陌,并重新選舉
syncLimit 一個(gè)follower和leader同步的時(shí)間须揣,該時(shí)間內(nèi)沒(méi)有完成同步,會(huì)被leader丟棄钱豁,連接到該follower的客戶端會(huì)自動(dòng)連接到其他節(jié)點(diǎn)
分別指定各自的dataDir和clientPort耻卡,都加入如下集群配置
initLimit和syncLimit的數(shù)字表示有幾個(gè)心跳時(shí)間 n * tickTime
server.myid=hostname:port1:port2
myid代表集群機(jī)器的序號(hào)
hostname代表機(jī)器域名
port1端口代表集群間數(shù)據(jù)通信的端口
port2端口代表集群間進(jìn)行l(wèi)eader選舉的端口
因?yàn)槭莻渭海愿髯缘膬蓚€(gè)通信端口要不一樣
注意:修改各自的客戶端端口牲尺,可以是2181卵酪、2182、2183
同時(shí)修改各自的dataDir路徑
- 增加myid文件
在三份zk的數(shù)據(jù)目錄(dataDir)下谤碳,創(chuàng)建名為myid的文件溃卡,內(nèi)容為各自的id(分別是1、2蜒简、3) - 分別啟動(dòng)三臺(tái)zookeeper服務(wù)
- 查看狀態(tài)瘸羡,可以看到一臺(tái)leader和兩臺(tái)follower,如果將leader服務(wù)關(guān)閉搓茬,集群將會(huì)重新選舉leader