zookeeper集群搭建以及常用命令
一集群搭建:本次使用docker-compose.yml來搭建三個節點的zookeeper
1. 如果linux沒安裝docker-compose:
1.curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 2. chmod +x /usr/local/bin/docker-compose 3. docker-compose --version
2.編寫docker-compose.yml文件:
version: '3'
services:
zoo1:
image: zookeeper
restart: always
ports:
- 2182:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
ports:
- 2183:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
ports:
- 2184:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
3. 執行 docker-compose up -d 命令,等待安裝完即可

二:zookeeper常用命令:
1. 登錄其中一個節點使用命令: docker exec -it 容器Id /bin/bash
2. 進入容器后,cd bin進入到bin目錄,然后執行 zkCli.sh -server 127.0.0.1:2181 連接上zookeeper客戶端

3. 使用命令 ls -R / 查詢當前zookeeper的目錄:

4. 創建一個永久節點: create 目錄 數據 如: create /order "ddddd" 重復執行該命令會報錯
5. 獲取節點的數據: get 目錄 如: get /order
6. 創建一個永久順序節點: create -s 目錄 數據 如: create -s /order/dto "6666" 執行2次該命令,就多了2條數據
7. 創建臨時節點: create -e 目錄 數據: 如 create -e /order/temp "ddd" 重復執行該命令會報錯
8. 創建臨時順序節點: create -es 目錄 數據 如:create -es /order /temp2 "ccc" 執行2次會多2條數據

臨時節點:當你退出客戶端連接時,再次進來,臨時節點就不存在了
9:退出客戶端并且再次連接: 使用:quit命令退出客戶端,然后再用命令zkCli.sh -server 127.0.0.1:2181 進行連接客戶端:此時使用 ls -R /order觀察臨時節點是否還存在

10. 給目錄增加一次監控: ls -w 目錄 如:ls -w /order 當/order節點發生改變時,如增加子節點,刪除子節點會得到通知,但如果是改數據的話就不會得到通知

11. 對路徑增加永久監控:命令:addWatch -m PERSISTENT 目錄 如 addWatch -m PERSISTENT /order 對order目錄的修改會觸發監控,但對/order下的子節點修改不會觸發監控,如
create /order/order/dto0000000000/kk "aa" 不會觸發監控,如果要子路徑修改也觸發監控,使用命令 addWatch -m PERSISTENT_RECURSIVE 目錄 如: addWatch -m PERSISTENT_RECURSIVE /order
12. 刪除節點:delete 目錄 如 delete /order,只能刪除最后一級的目錄,如果有子目錄會報錯,如果要刪除包含子目錄的節點,使用命令 deleteall 目錄 如:deleteall /order

13. 設置節點的值: set 目錄 值: 如 set /order "ddd"
14. 查詢集群的配置: config -c | -w |-s

15. 查詢歷史執行的命令 history
16. 重復執行歷史的某個命令 redo +上面查詢到的序號

17. 移除監控 removewatches 目錄 如:removewatches /order
18. 查詢子節點的數量: getAllChildrenNumber path 如 getAllChildrenNumber /shop
19. 查詢臨時節點:getEphemerals path 如 getEphemerals /shop

20.關閉當前連接使用close命令
21. 連接其他節點:connect ip:port; 也可以直接寫對方在節點中配置的服務名,如connect zoo1

22: 查詢目錄的詳細信息 stat 目錄 如stat /shop效果和ls -s /shop差不多

23.前面說的監聽,對數據變更是沒效果的,如果要對數據變更進行監聽使用get -w 目錄,如:

三、權限管理:

1. 登錄賬號(賬戶不存在會自動創建):addauth digest 賬戶:密碼 如 addauth digest root:admin
2. 查詢當前登錄的用戶 whoami

2. 給指定目錄授權:setAcl 目錄 auth:賬戶:密碼:權限 如: setAcl /shop auth:root:admin:cdrwa
3. 查詢指定目錄的權限 getAcl 目錄,如getAcl /shop

登錄其他節點,再訪問該目錄看看:connect zoo3登錄節點3,然后再查詢該節點(可以發現沒權限訪問)

但你訪問子節點是有權限的 如: get /shop/dto

因此,如果你想所有的子節點都要權限訪問,在設置權限時加上-R參數,如setAcl -R /shop auth:root:admin:cdrwa
4.登錄賬戶再次訪問看看:


浙公網安備 33010602011771號