文章目錄
- 概述
- 下載
- 安裝
- 單機版
- 集群版
- 配置介紹
概述
ZooKeeper 是分布式應用程式的高性能協調服務,它在一個簡單的界面中公開了常用服務,例如命名、配置管理、同步和組服務,因此可以不必從頭開始撰寫它們,可以現成地使用它來實作共識、組管理、領導者選舉和存在協議,也可以根據自己的特定需求在此基礎上進行構建,
下載
可以在Zookeper官網下載頁下載zookeeper,這里有最新的zk發布包,
我這里下載是3.6.3版本,是截止到這篇博文發布前最穩定版本,下載鏈接為https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

安裝
-
下載完成之后解壓下載的壓縮包到自己電腦盤符下,我這里是在D:\zookeeper下解壓的,解壓后根目錄為D:\zookeeper\zookeeper-3.6.3
-
解壓后進入conf檔案夾下面,把zoo_sample.cfg復制一份并改名為zoo.cfg,zoo.cfg是zookeeper組態檔入口,
-
在根目錄下新建一個data檔案夾,用于存盤記憶體資料庫快照, 修改組態檔,將dataDir屬性修改為自定義的data路徑下,dataDir=D:/zookeeper/zookeeper-3.6.3/data,注意:路徑分隔符要用反斜杠 /
這樣配置就基本結束了,接下來就是啟動了,啟動分為兩種,單機版和集群版
單機版
zookeeper的啟動命令都在bin目錄下,進入bin目錄下,.cmd是Windows版本的命令,.sh 是Linux的命令,
找到zkServer.cmd,

雙擊啟動,看到如下視窗,不閃退,不報錯就是啟動成功了

也可以通過,雙擊客戶端zkCli.cmd批處理命令來驗證server是否啟動成功,看到如下紅框的內容則server啟動成功

或者在組態檔中開啟日志審核功能,audit.enable=true
在根目錄下的logs檔案夾下找到zookeeper_audit.log檔案,看到如下結果則server啟動成功

審核日志是3.6.0 中的新功能:默認情況下禁用審核日志,設定為“true”以啟用它,有關日志審核可以查看https://zookeeper.apache.org/doc/r3.6.3/zookeeperAuditLogs.html
這樣,單機版就完成了,
集群版
集群版就像對麻煩一點了,這里的集群還是偽集群,真正實作集群的操作跟單機版的偽集群差不多,只不過是操作不同的服務器而已,
步驟如下:
- 修改組態檔:找到zoo.cfg組態檔,在檔案最后加上
# 集群配置
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
配置介紹:
集群配置節點是server.id=host:port1:port2形式,
id:分配給host的id,需要在myid檔案中指定,id 必須介于 1 和 254 之間
host:zookeeper所在服務器的IP
port1:Zookeeper服務器之間的通信埠
port2:Leader選舉的埠
從 ZooKeeper 3.6.0 開始,可以為每個 ZooKeeper 服務器 指定多個地址
形如:
server.1=zoo1-net1:2888:3888|zoo1-net2:2889:3889
server.2=zoo2-net1:2888:3888|zoo2-net2:2889:3889
server.3=zoo3-net1:2888:3888|zoo3-net2:2889:3889
-
添加myid檔案
myid檔案代表著該zookeeper服務器的id檔案,內容也很簡單,就是一個名為myid的檔案,檔案內容就只有一個上面所說的id,
在Windows系統中,創建一個名為myid的文本檔案,然后輸入一個id,最后洗掉檔案后綴,不要任何后綴,否則會啟動會報myid找不到例外,
myid檔案所在的路徑就是組態檔中dataDir指定的路徑下,

-
集群復制多份,將上述配置好的zookeeper復制兩份,并修改每個組態檔中的clientPort、dataDir和admin.serverPort屬性,還有myid中的數值,
clientPort:客戶端連接Zookeeper服務器的埠,Zookeeper會監聽這個埠,接受客戶端的訪問請求,
admin.serverPort:嵌入式 Jetty 服務器監聽的埠,默認為 8080,
AdminServer是3.5.0 中新添加的功能,更多可以查看https://zookeeper.apache.org/doc/r3.6.3/zookeeperAdmin.html#sc_adminserver
組態檔:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper/zookeeper-3.6.3/data
dataLogDir=D:/zookeeper/zookeeper-3.6.3/logs
clientPort=2181
maxClientCnxns=60
# 嵌入式 Jetty 服務器監聽的埠,默認為 8080
admin.serverPort=8081
messageTracker.Enabled=true
# 日志審核
audit.enable=true
# 集群配置
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
- 啟動集群, 分別到對應zookeeper集群的檔案夾下雙擊zkServer.cmd批處理命令,出現以下日志則代表成功
2022-02-10 16:55:41,612 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@864] - Peer state changed: following - broadcast
2022-02-10 16:55:49,084 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2183)(secure=disabled):QuorumPeer@864] - Peer state changed: following - broadcast
或者
2022-02-10 16:55:41,611 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2182)(secure=disabled):QuorumPeer@864] - Peer state changed: leading - broadcast
可以看到三個zookeeper服務器,一個leader,兩個following,
配置介紹
- tickTime:心跳時間,單位毫秒,默認2000,zookeeper最小的會話超時時間是2個tickTime,
- initLimit: follower連接和同步leader的超時時間,以tickTime為單位,默認10,也就是說10*tickTime時間之后客戶端還沒連接到服務器,則客戶端連接失敗,如果 ZooKeeper 管理的資料量很大,則根據需要增加此值,
- syncLimit:follower連接和同步leader的超時時間,這個時間是leader向follower發送心跳之后,如果在syncLimit時間內沒有收到follower的回信,表示follower掉線了,以tickTime為單位
- dataDir:用于存盤記憶體資料庫快照的路徑
- dataLogDir:允許配置使用專用的日志設備,并有助于避免日志記錄和快照之間的競爭,擁有專用日志設備對吞吐量和穩定延遲有很大影響,強烈建議專用日志設備并將dataLogDir設定為指向該設備上的目錄,然后確保將dataDir指向不在該設備上的目錄,
- clientPort:客戶端連接Zookeeper服務器的埠,Zookeeper會監聽這個埠,接受客戶端的訪問請求,
- maxClientCnxns:通過 IP 地址限制單個客戶端可以對 ZooKeeper 集合的單個服務器進行的并發連接數,用于防止某些類別的 DoS 攻擊,包括檔案描述符耗盡,默認值為 60,將此設定為 0 完全消除了對并發連接的限制,
- admin.serverPort:嵌入式 Jetty 服務器監聽的埠,默認為 8080
- audit.enable:默認情況下禁用審核日志,默認值false,3.6.0 中的新功能
- electionAlg:選舉演算法,0表示leader選舉演算法(基于UDP),1對應非認證的基于UDP的快速leader選舉版本,2對應認證的基于UDP的快速leader選舉版本,3對應基于TCP的快速leader版本選舉,默認值是3,
- autopurge.purgeInterval:Zookeeper服務端自動清除多余的日志和快照檔案的周期,以小時為單位,設定正整數表示開啟自動清除,默認0,不開啟
- server.id=host:port1:port2
id:分配給host的id,需要在myid檔案中指定,id 必須介于 1 和 254 之間
host:zookeeper所在服務器的IP
port1:Zookeeper服務器之間的通信埠
port2:Leader選舉的埠
更多配置請查看官網
能力一般,水平有限,如有錯誤,請多指出,
如果對你有用點個關注給個贊唄

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423730.html
標籤:其他
上一篇:Spark基礎入門
下一篇:點擊曝光日志的資料處理
