zookeeper偽分布式集群環(huán)境搭建

偽分布式集群就是在一臺機(jī)器部署多個zk應(yīng)用,部署之前服務(wù)器需要有jdk環(huán)境 java -version可以顯示相關(guān)java信息才可以進(jìn)行zookeeper搭建,本文是基于macOs搭建,原文地址

下載

下載之后解壓

tar –zxvf zookeeper-3.4.6.tar.gz  

文件夾重命名

mv zookeeper-3.4.6 zookeeper  

配置

step1

進(jìn)入zk中的conf目錄下輸入cp zoo-sample.cfg zoo1.cfg cp zoo-sample.cfg zoo2.cfg、cp zoo-sample.cfg zoo3.cfg

image

step2

分別對zoo1、2、3文件進(jìn)行編輯,修改內(nèi)容如下

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/Users/book/zk/server1/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=localhost:2187:2887
server.2=localhost:2188:2888
server.3=localhost:2189:2889

dataDir=/Users/book/zk/server1/data

clientPort=2181

server.1=localhost:2187:2887
server.2=localhost:2188:2888
server.3=localhost:2189:2889

zoo2.cfg (clientPort=2182 ;dataDir=/Users/book/zk/server2/data)

zoo3.cfg (clientPort=2182 ;dataDir=/Users/book/zk/server3/data)

配置說明

  • tickTime:這個時間是作為 Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發(fā)送一個心跳。

  • initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端,而是 Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器)初始化連接時最長能忍受多少個心跳時間間隔數(shù)。當(dāng)已經(jīng)超過 10個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務(wù)器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗??偟臅r間長度就是 10*2000=20 秒

  • syncLimit:這個配置項標(biāo)識 Leader 與 Follower 之間發(fā)送消息,請求和應(yīng)答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 5*2000=10秒

  • dataDir:顧名思義就是 Zookeeper 保存數(shù)據(jù)的目錄,默認(rèn)情況下,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個目錄里。

  • clientPort:這個端口就是客戶端連接 Zookeeper 服務(wù)器的端口,Zookeeper 會監(jiān)聽這個端口,接受客戶端的訪問請求。

  • server.A=B:C:D:其中 A 是一個數(shù)字,表示這個是第幾號服務(wù)器;B 是這個服務(wù)器的 ip 地址;C 表示的是這個服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口;D 表示的是萬一集群中的 Leader 服務(wù)器掛了,需要一個端口來重新進(jìn)行選舉,選出一個新的 Leader,而這個端口就是用來執(zhí)行選舉時服務(wù)器相互通信的端口。如果是偽集群的配置方式,由于 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。

$ mkdir /Users/book/zk/server1/data
$ mkdir /Users/book/zk/server2/data
$ mkdir /Users/book/zk/server3/data

$ echo 1 > /Users/book/zk/server1/data/myid
$ echo 2 > /Users/book/zk/server2/data/myid
$ echo 3 > /Users/book/zk/server3/data/myid
image

啟動

$ ./zkServer.sh start zoo1.cfg
$ ./zkServer.sh start zoo2.cfg
$ ./zkServer.sh start zoo3.cfg

檢測是否成功

$ ./zkCli.sh -server localhost:2181
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容