Docker安裝Zookeeper以及Zk常用命令


Docker安裝Zookeeper

下載並運行

$ docker search zookeeper # 查看一下鏡像

$ docker pull zookeeper:3.4.9  # 拉取指定版本zk鏡像

$ docker images  # 查看image ID

$ mkdir -p /root/docker/zookeeper/data
$ docker run -d -p 2181:2181 -v /root/docker/zookeeper/data:/data/ --name zookeeper --privileged 3b83d9104a4c # 最后跟着 image ID

進入容器

$ docker ps # 查看zookeeper的CONTAINER ID
$ docker exec -it CONTAINERID /bin/bash  # 后台進入容器

連接ZooKeeper 服務

$ cd bin # 進入bin目錄
$ ./zkCli.sh

設置防火牆

關於防火牆,你可以關閉它,或者開啟2181端口:

【查看防火牆是否開啟】

$ systemctl status firewalld

【開啟或關閉防火牆】

$ systemctl start firewalld
$ systemctl stop firewalld

【查看所有開啟的端口】

$ firewall-cmd --list-ports

【開啟80端口】

$ firewall-cmd --zone=public --add-port=2181/tcp --permanent

【重啟防火牆,使其生效】

$ firewall-cmd --reload

配置阿里雲安全組

來到實例管理頁面,點擊更多,點擊網絡和安全組,點擊安全組配置。

點擊配置規則。

點擊添加安全組規則

使用Zookeeper圖形化客戶端工具連接

下載地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

解壓壓縮包,進入jar包所在目錄,執行命令:

$ java -jar xxx.jar

左上角按鈕表示登錄,主機地址和端口號:你的服務器ip:2181

Docker常用命令演示

查看常用命令help

[zk: localhost:2181(CONNECTED) 0] help

創建節點create

通過 create 命令在根目錄創建了 node1 節點,與它關聯的字符串是"node1"

[zk: localhost:2181(CONNECTED) 0] create /node1 "node1"

通過 create 命令在根目錄創建了 /node1/node1.1 節點,與它關聯的內容是數字 123

[zk: localhost:2181(CONNECTED) 0] create /node1/node1.1 123

設置節點數據內容set

設置/node1節點的數據內容為"new node!",此時相當於更新操作。

[zk: localhost:2181(CONNECTED) 0] set /node1 "new node!"

獲取節點的數據get

get 命令可以獲取指定節點的數據內容和節點的狀態,可以看出我們通過 set 命令已經將節點數據內容改為 "new node!"。

[zk: localhost:2181(CONNECTED) 0] get /node1 #"new node!"
cZxid = 0xb
ctime = Fri Nov 20 09:36:43 GMT 2020
mZxid = 0xd
mtime = Fri Nov 20 09:43:25 GMT 2020
pZxid = 0x10
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0

下面的一些字段信息,將在本篇第三節znode結構中介紹。

查看某個目錄的子節點ls

查看根目錄下的子節點

[zk: localhost:2181(CONNECTED) 0] ls /
[node2, zookeeper, node1]

查看/node1目錄下的子節點

[zk: localhost:2181(CONNECTED) 0] ls /node1
[node1.1]

查看節點狀態stat

[zk: localhost:2181(CONNECTED) 0] stat /node1
cZxid = 0xb
ctime = Fri Nov 20 09:36:43 GMT 2020
mZxid = 0xd
mtime = Fri Nov 20 09:43:25 GMT 2020
pZxid = 0xc
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 1

查看節點信息和狀態ls2

ls2 = ls + stat

[zk: localhost:2181(CONNECTED) 0] ls2 /node1
[node1.1]
cZxid = 0xb
ctime = Fri Nov 20 09:36:43 GMT 2020
mZxid = 0xd
mtime = Fri Nov 20 09:43:25 GMT 2020
pZxid = 0xc
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 1

刪除節點delete

刪除某一個節點,這個節點必須無子節點。

[zk: localhost:2181(CONNECTED) 10] delete /node1
Node not empty: /node1
[zk: localhost:2181(CONNECTED) 11] delete /node1/node1.1
[zk: localhost:2181(CONNECTED) 12] get /node1/node1.1
Node does not exist: /node1/node1.1

znode結構

znode 狀態信息 解釋
cZxid create ZXID,即該數據節點被創建時的事務 id
ctime create time,即該節點的創建時間
mZxid modified ZXID,即該節點最終一次更新時的事務 id
mtime modified time,即該節點最后一次的更新時間
pZxid 該節點的子節點列表最后一次修改時的事務 id,只有子節點列表變更才會更新 pZxid,子節點內容變更不會更新
cversion 子節點版本號,當前節點的子節點每次變化時值增加 1
dataVersion 數據節點內容版本號,節點創建時為 0,每更新一次節點內容(不管內容有無變化)該版本號的值增加 1
aclVersion 節點的 ACL 版本號,表示該節點 ACL 信息變更次數
ephemeralOwner 創建該臨時節點的會話的 sessionId;如果當前節點為持久節點,則 ephemeralOwner=0
dataLength 數據節點內容長度
numChildren 當前節點的子節點個數

參考閱讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM