研究kafka的過程中金度,需要搭建zookeeper集群论熙,過程比較簡單,記錄一下:
依然是三個虛擬機(jī)Centos7環(huán)境
192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2
1.下載及配置環(huán)境變量
https://zookeeper.apache.org/
官方下載zk的tar包,我下載的是3.4.14版本
放linux下 我的路徑是 opt/soft/
tar zxvf zookeeper-3.4.14.tar.gz
然后sudo vim /etc/profile
配置環(huán)境變量(也可以不配置):
# zk
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
執(zhí)行source /etc/profile
2.ZK集群配置
進(jìn)入zookeeper的conf目錄下
能發(fā)現(xiàn)三個文件趁啸,我們主要關(guān)注 zoo_sample.cfg
文件
執(zhí)行cp zoo_sample.cfg zoo.cfg
源文件備份一下
然后vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
dataLogDir=/opt/soft/softLogs/zk
clientPort=2181
server.1=Master:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
這么寫精簡一些尿赚,簡單說一下
- tickTime:心跳時間,每個 tickTime 服務(wù)器之間會發(fā)送一個心跳采呐。
- initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端若锁,而是 Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器)初始化連接時最長能忍受多少個心跳時間間隔數(shù)。當(dāng)已經(jīng)超過 5個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務(wù)器還沒有收到客戶端的返回信息懈万,那么表明這個客戶端連接失敗拴清。總的時間長度就是 10*2000=20 秒会通。
- syncLimit:Leader和Follower 之間發(fā)送消息口予,請求和應(yīng)答時間,最長不能超過的時間涕侈,這邊設(shè)置為5沪停,那么時間就是 5*2000=10 秒。
- dataDir:存的是快照日志,后續(xù)需要手動去清理
- dataLogDir:不設(shè)置的話就會存在dataDir里面去木张,這邊單獨(dú)提出來比較好众辨,因為他記錄的是事務(wù)日志,最好是和快照區(qū)分開舷礼,否則會影響性能鹃彻。
- clientPort:默認(rèn)是2181,不用多說了妻献,客戶端連接 Zookeeper 服務(wù)器的端口蛛株。
- server.* : 這個是zk服務(wù)的id,后面可以伴隨數(shù)字育拨,數(shù)字可以自己去設(shè)置谨履,后面接上集群機(jī)器,但是要注意一點熬丧,后續(xù)需要在dataDir創(chuàng)建一個myid文件笋粟,記錄自己的id,好作區(qū)分析蝴。
然后害捕,我們可以把這個改好的zk配置,分發(fā)到其他兩臺機(jī)器上O颖洹6滞А躬它!主要是配置腾啥,其他都差不多。
然后看dataDir冯吓,我的路徑是/tmp/zookeeper
所以一路去創(chuàng)建文件夾倘待,然后進(jìn)入這個文件夾。
根據(jù)配置文件vim myid
Master機(jī)器组贺,我們里面寫1
Slave1機(jī)器凸舵,我們寫2
Slave2機(jī)器,我們寫3
保存失尖。
完成配置啊奄,接下來就去看看是否啟動!掀潮!
3.啟動
分別去三臺機(jī)器的zookeeper的bin目錄下
開啟:zkServer.sh start
都開啟后我們可以看一下是否成功了菇夸!
使用jps
命令查看是否啟動,看到QuorumPeerMain證明成功了仪吧。
查看狀態(tài):zkServer.sh status
Using config是使用的配置文件
Mode是角色
角色分為leader和follower
一般情況下庄新,zk集群只有一個leader,剩下的都是follower,leader一般來響應(yīng)客戶端的讀寫請求择诈。而follower是去同步數(shù)據(jù)械蹋,一旦leader掛掉,就會從follower中投票選舉一個新leader出來羞芍。
這邊多提一句哗戈,快照和事務(wù)的日志文件可以定期刪掉,因為zk它默認(rèn)是不清理的荷科,所以可以通過寫腳本加crontab定時器的形式去定期清理谱醇。