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 | 當前節點的子節點個數 | 
