上一篇《Zookeeper基礎知識點》的入門介紹,此文介紹一下ZK的安裝與配置以及基本使用。
搭建zookeeper集群至少需要三個節點,要求系統服務器之間保持一致(本事例使用192.168.56.200 201 202三臺服務器)
1.安裝與配置過程
- 解壓:tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local
- 重命名:mv zookeeper-3.4.10/ zookeeper
- 修改環境變量 vim /etc/profile
#ZOOKEEPER配置
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
- 刷新配置:source /etc/profile
- 到zookeeper下修改配置文件 cd /usr/local/zookeeper/conf
- 修改配置文件名稱:mv zoo_sample.cfg zoo.cfg
(修改兩處,vim zoo.cfg )- dataDir=/usr/local/zookeeper/data
- 最后面添加:
server.0=192.168.56.200:2888:3888
server.1=192.168.56.201:2888:3888
server.2=192.168.56.202:2888:3888
- 服務器標識配置
- 創建文件夾:mkdir /usr/local/zookeeper/data
- 創建文件myid并填寫內容為0:vi myid (內容為服務器標識 : 0)
- 把上面配置好的整個目錄zookeeper拷貝至另外兩臺服務器:
scp -r zookeeper/ 192.168.56.201:/usr/local
scp -r zookeeper/ 192.168.56.202:/usr/local
-
修改另外兩臺服務器以下兩個內容
- /etc/profile環境變量配置
- myid文件里的服務器標識相應的改為1和2
-
啟動zookeeper
zkServer.sh start (注意這里3臺機器都要進行啟動)
啟動后,jps可以查看到zk服務進程
zk服務進程.png 查看狀態
狀態:zkServer.sh status(在三個節點上檢驗zk的mode,一個leader和倆個follower)
node1狀態:
node1狀態.png
node2狀態:
node2狀態.png
node3狀態:
node3狀態.png
2.操作zookeeper
zkCli.sh 進入zookeeper客戶端
zookeeper客戶端.png
根據提示命令進行操作:
查找:ls / ls /zookeeper
查找.png
創建并賦值:create /lyx hadoop
創建并賦值.png
獲取:get /lyx
獲取.png
設值:set /lyx landy
設值.png
然后再查看/lyx節點,他的值就變為了landy
查看設值后的值.png
可以看到zookeeper集群的數據一致性,在其他節點也可以查看到/lyx的信息。
其他節點.png
創建節點有倆種類型:短暫(ephemeral) 持久(persistent)
3.zoo.cfg配置文件詳解
- tickTime:基本事件單元,以毫秒為單位。這個時間是作為 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每隔 tickTime時間就會發送一個心跳。
- dataDir:存儲內存中數據庫快照的位置,顧名思義就是 Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日志文件也保存在這個目錄里。
- clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
- initLimit:這個配置項是用來配置 Zookeeper 接受客戶端初始化連接時最長能忍受多少個心跳時間間隔數,當已經超過 10 個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗。總的時間長度就是 10*2000=20 秒。
- syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 5*2000=10 秒
- server.A = B:C:D
- A表示這個是第幾號服務器
- B 是這個服務器的 ip 地址
- C 表示的是這個服務器與集群中的 Leader 服務器交換信息的端口
- D 表示的是萬一集群中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader
- server.A = B:C:D
zoo.cfg.png