Zookeeper集羣搭建筆記

研究kafka的過程中,需要搭建zookeeper集羣,過程比較簡單,記錄一下:
依然是三個虛擬機Centos7環境

192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2

1.下載及配置環境變量

https://zookeeper.apache.org/
官方下載zk的tar包,我下載的是3.4.14版本
放linux下 我的路徑是 opt/soft/
tar zxvf zookeeper-3.4.14.tar.gz
然後sudo vim /etc/profile
配置環境變量(也可以不配置):

# zk
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin

執行source /etc/profile

2.ZK集羣配置

進入zookeeper的conf目錄下
能發現三個文件,我們主要關注 zoo_sample.cfg文件
執行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 服務器之間會發送一個心跳。
  • initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中連接到 Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 5個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是 10*2000=20 秒。
  • syncLimit:Leader和Follower 之間發送消息,請求和應答時間,最長不能超過的時間,這邊設置爲5,那麼時間就是 5*2000=10 秒。
  • dataDir:存的是快照日誌,後續需要手動去清理
  • dataLogDir:不設置的話就會存在dataDir裏面去,這邊單獨提出來比較好,因爲他記錄的是事務日誌,最好是和快照區分開,否則會影響性能。
  • clientPort:默認是2181,不用多說了,客戶端連接 Zookeeper 服務器的端口。
  • server.* : 這個是zk服務的id,後面可以伴隨數字,數字可以自己去設置,後面接上集羣機器,但是要注意一點,後續需要在dataDir創建一個myid文件,記錄自己的id,好作區分。

然後,我們可以把這個改好的zk配置,分發到其他兩臺機器上!!!主要是配置,其他都差不多。
然後看dataDir,我的路徑是/tmp/zookeeper
所以一路去創建文件夾,然後進入這個文件夾。
根據配置文件vim myid
Master機器,我們裏面寫1
Slave1機器,我們寫2
Slave2機器,我們寫3
保存。

完成配置,接下來就去看看是否啓動!!

3.啓動

分別去三臺機器的zookeeper的bin目錄下
開啓:zkServer.sh start
都開啓後我們可以看一下是否成功了!

使用jps命令查看是否啓動,看到QuorumPeerMain證明成功了。

查看狀態:zkServer.sh status
Using config是使用的配置文件
Mode是角色
角色分爲leader和follower
一般情況下,zk集羣只有一個leader,剩下的都是follower,leader一般來響應客戶端的讀寫請求。而follower是去同步數據,一旦leader掛掉,就會從follower中投票選舉一個新leader出來。

這邊多提一句,快照和事務的日誌文件可以定期刪掉,因爲zk它默認是不清理的,所以可以通過寫腳本加crontab定時器的形式去定期清理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章