說明
Linux安裝ZK:https://www.cnblogs.com/chunxiaozhang/p/12752944.html
ZK_入門學習:https://www.cnblogs.com/chunxiaozhang/p/12753009.html
命令查詢
通過命令行可查看zk支持的所有命令,如下: [zk: 127.0.0.1:2181(CONNECTED) 2] cmd args ZooKeeper -server host:port cmd args addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path [-b batch size] delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path getAllChildrenNumber path getEphemerals path history listquota path ls [-s] [-w] [-R] path printwatches on|off quit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path version Command not found: Command not found cmd
命令詳解
1、系統命令
//系統命令 close 關閉其他連接 connect host:port 連接其他節點 version 查看版本信息 quit 退出 history 查看歷史命令 redo cmdno redo命令用於再次執行某個命令,使用方式為redo cmdid 如 redo 20,常與history配合使用 addauth scheme auth addauth命令用於節點認證,使用方式:如addauth digest username:password sync path sync命令用於強制同步,由於請求在半數以上的zk server上生效就表示此請求生效,那么就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
2、配置命令
//配置信息 config [-c] [-w] [-s] reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
3、節點命令
//節點信息 /**節點創建**/ create [-s] [-e] [-c] [-t ttl] path [data] [acl] 創建節點: -s:順序節點 -e:臨時節點 -c: -t ttl: path:節點路徑 data:節點數據 acl:節點權限 例:create /zktest first-zk //創建永久節點/zktest,缺省為永久,節點數據為first-zk set [-s] [-v version] path data 設置節點數據,存在則覆蓋 -s: -v version: 例如:set /zktest newvalue delete [-v version] path 刪除節點 -v version: deleteall path [-b batch size] 調件刪除節點 -b batch size /**節點查詢**/ getAllChildrenNumber path 獲取節點下所有持久節點數量(包括子節點的子節點) getEphemerals path 獲取節點下所有臨時節點數量(包括子節點的子節點) stat [-w] path 列出節點信息 -w: 節點信息查詢 [zk: 127.0.0.1:2182(CONNECTED) 33] stat /zktest cZxid = 0x100000008 //節點創建時的zxid ctime = Thu Apr 23 10:37:02 CST 2020 //節點創建時間 mZxid = 0x100000008 //節點最近一次更新時的zxid mtime = Thu Apr 23 10:37:02 CST 2020 //節點最近一次更新的時間 pZxid = 0x100000009 // cversion = 1 //子節點數據更新次數 dataVersion = 0 //本節點數據更新次數 aclVersion = 0 //節點ACL(授權信息)的更新次數 ephemeralOwner = 0x0 //如果該節點為臨時節點,ephemeralOwner值表示與該節點綁定的session id. 如果該節點不是臨時節點,ephemeralOwner值為0 dataLength = 8 //節點數據長度 numChildren = 1 //子節點個數 get [-s] [-w] path 獲取節點數據data -s:獲取節點數據,額外列出節點stat信息 -w: 獲取數據 [zk: 127.0.0.1:2182(CONNECTED) 34] get /zktest first-zk ls [-s] [-w] [-R] path 列出節點目錄,只列出一層目錄 -s:列出節點目錄,額外列出節點stat信息 -w: 列出目錄 [zk: 127.0.0.1:2182(CONNECTED) 35] ls /zktest [f1]
4、配額命令
//quota信息 listquota path 列除節點設置的配額信息 setquota -n|-b val path 設置節點配額信息 -n:子節點最大數量 -b:節點最大長度 例如:setquota -n 10 -b 100 /zktest delquota [-n|-b] path 刪除節點的配額信息
5、權限命令
//權限操作 /** 1、ZooKeeper的權限控制是基於每個znode節點的,需要對每個節點設置權限 2、每個znode支持設置多種權限控制方案和多個權限 3、子節點不會繼承父節點的權限,客戶端無權訪問某節點,但可能可以訪問它的子節點 4、auth、digest的模式必須使用addauth認證,一次連接可認證多個用戶,關閉后失效 **/ addauth scheme auth addauth命令用於節點認證,使用方式:如addauth digest username:password getAcl [-s] path 獲取節點權限信息 -s:獲取節點權限信息,額外獲取節點stat信息 權限信息由三部分組成:<Schema>:<ID>:<Permission> Schema:授權模式:world(默認代表所有人anyone)、ip(使用IP地址認證)、auth(使用已添加認證的用戶認證)、digest(使用“用戶名:密碼”方式認證) ID:授權對象,以設定的schema模式形成映射關系,用於認證 permission:權限:CREATE(可以創建子節點)、DELETE(可以刪除子節點,僅下一級節點)、READ(可以讀取節點數據及顯示子節點列表)、WRITE(可以設置節點數據)、ADMIN(可以設置節點訪問控制列表權限) setAcl [-s] [-v version] [-R] path acl 設置節點權限信息 -s: -v ersion: -R: path:節點路徑 acl:權限信息<Schema>:<ID>:<Permission> world模式:setAcl /zktest world:anyone:cdrwa ip模式:setAcl /zktest ip:192.168.1.1:cdr auth模式:setAcl /zktest/f1/f1-1 auth:zhang:cdrw //此模式設置權限前必須先添加認證用戶,使用addauth命令 digest模式:setAcl /zktest/f1/f1-1 digest:zhang:UiSDb/vR/ydnWXx3EpPrRF4LvRw=:cdrw //此模式UiSDb/vR/ydnWXx3EpPrRF4LvRw=部分必須為【user:password】的加密內容 echo -n li:123456 | openssl dgst -binary -sha1 | openssl base64 //密碼加密
6、監視器命令
//監視器操作 printwatches on|off addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE removewatches path [-c|-d|-a] [-l]
四字命令
1、說明
ZooKeeper支持某些特定的四字命令,它們大多是查詢命令,用戶在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應的命令。 ZooKeeper 常用四字命令主要如下: conf 3.3.0版本引入的。打印出服務相關配置的詳細信息。 cons 3.3.0版本引入的。列出所有連接到這台服務器的客戶端全部連接/會話詳細信息。包括"接受/發送"的包數量、會話id、操作延遲、最后的操作執行等等信息。 crst 3.3.0版本引入的。重置所有連接的連接和會話統計信息。 dump 列出那些比較重要的會話和臨時節點。這個命令只能在leader節點上有用。 envi 打印出服務環境的詳細信息。 reqs 列出未經處理的請求 ruok 測試服務是否處於正確狀態。如果確實如此,那么服務返回"imok",否則不做任何相應。 stat 輸出關於性能和連接的客戶端的列表。 srst 重置服務器的統計。 srvr 3.3.0版本引入的。列出連接服務器的詳細信息 wchs 3.3.0版本引入的。列出服務器watch的詳細信息。 wchc 3.3.0版本引入的。通過session列出服務器watch的詳細信息,它的輸出是一個與watch相關的會話的列表。 wchp 3.3.0版本引入的。通過路徑列出服務器watch的詳解信息,它輸出一個與session相關的路徑。 mntr 3.4.0版本引入的。輸出可用於檢測集群健康狀態的參數列表。
2、環境配置
zookeeper必須開啟四字命令才能使用,修改zoo.cfg添加如下開啟 4lw.commands.whitelist=* telnet、nc在服務器可能並未安裝,安裝如下: telnet: [root@localhost ~]# rpm -qa telnet-server //檢測telnet-server的安裝 [root@localhost ~]# yum install telnet-server //安裝telnet-server [root@localhost ~]# rpm -qa telnet //檢測telnet的安裝 [root@localhost ~]# yum install telnet //安裝telnet [root@localhost ~]# rpm -qa | grep xinetd //telnet 是掛在 xinetd 底下的,所以同時查看是否安裝了xinetd服務 [root@localhost ~]# yum install xinetd //安裝xinetd [root@localhost ~]# systemctl start xinetd //啟動xinetd [root@localhost ~]# systemctl start telnet.socket //啟動telnet /**設置telnet開機啟動,需要時進行以下配置**/ [root@localhost ~]# systemctl enable xinetd.service [root@localhost ~]# systemctl enable telnet.socket nc: [root@bogon ~]# yum install -y nc //安裝nc [root@bogon ~]# nc -vuz 127.0.0.1 2181 //查看端口連接情況 使用: [root@bogon ~]# telnet localhost 2181 //進入telnet端,輸入相應四字命令,查詢信息 [root@bogon ~]# echo conf | nc localhost 2181 //直接查詢 [root@bogon ~]# nc localhost 2181 //進入nc客戶端,輸入相應四字命令,查詢信息
3、命令詳解
conf: clientPort:客戶端端口號 dataDir:數據文件目錄 dataLogDir:日志文件目錄 tickTime:間隔單位時間 maxClientCnxns:最大連接數 minSessionTimeout:最小session超時 maxSessionTimeout:最大session超時 serverId:id initLimit:初始化時間 syncLimit:心跳時間間隔 electionAlg:選舉算法 默認3 electionPort:選舉端口 quorumPort:法人端口 peerType:未確認 cons: ip=ip port=端口 queued=所在隊列 received=收包數 sent=發包數 sid=session id lop=最后操作 est=連接時間戳 to=超時時間 lcxid=最后id(未確認具體id) lzxid=最后id(狀態變更id) lresp=最后響應時間戳 llat=最后/最新 延時 minlat=最小延時 maxlat=最大延時 avglat=平均延時 crst: 重置所有連接 dump: session id : znode path (1對多 , 處於隊列中排隊的session和臨時節點) envi: zookeeper.version=版本 host.name=host信息 java.version=java版本 java.vendor=供應商 java.home=jdk目錄 java.class.path=classpath java.library.path=lib path java.io.tmpdir=temp目錄 java.compiler=<NA> os.name=Linux os.arch=amd64 os.version=2.6.32-358.el6.x86_64 user.name=hhz user.home=/home/hhz user.dir=/export/servers/zookeeper-3.4.6 ruok: imok=正常,查看server是否正常 srst: 重置server狀態 srvr: Zookeeper version:版本 Latency min/avg/max: 延時 Received: 收包 Sent: 發包 Connections: 連接數 Outstanding: 堆積數 Zxid: 操作id Mode: leader/follower Node count: 節點數 stat: Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT Clients: /192.168.147.102:56168[1](queued=0,recved=41,sent=41) /192.168.144.102:34378[1](queued=0,recved=54,sent=54) /192.168.162.16:43108[1](queued=0,recved=40,sent=40) /192.168.144.107:39948[1](queued=0,recved=1421,sent=1421) /192.168.162.16:43112[1](queued=0,recved=54,sent=54) /192.168.162.16:43107[1](queued=0,recved=54,sent=54) /192.168.162.16:43110[1](queued=0,recved=53,sent=53) /192.168.144.98:34702[1](queued=0,recved=41,sent=41) /192.168.144.98:34135[1](queued=0,recved=61,sent=65) /192.168.162.16:43109[1](queued=0,recved=54,sent=54) /192.168.147.102:56038[1](queued=0,recved=165313,sent=165314) /192.168.147.102:56039[1](queued=0,recved=165526,sent=165527) /192.168.147.101:44124[1](queued=0,recved=162811,sent=162812) /192.168.147.102:39271[1](queued=0,recved=41,sent=41) /192.168.144.107:45476[1](queued=0,recved=166422,sent=166423) /192.168.144.103:45100[1](queued=0,recved=54,sent=54) /192.168.162.16:43133[0](queued=0,recved=1,sent=0) /192.168.144.107:39945[1](queued=0,recved=1825,sent=1825) /192.168.144.107:39919[1](queued=0,recved=325,sent=325) /192.168.144.106:47163[1](queued=0,recved=17891,sent=17891) /192.168.144.107:45488[1](queued=0,recved=166554,sent=166555) /172.17.36.11:32728[1](queued=0,recved=54,sent=54) /192.168.162.16:43115[1](queued=0,recved=54,sent=54) Latency min/avg/max: 0/0/599 Received: 224869 Sent: 224817 Connections: 23 Outstanding: 0 Zxid: 0x68000af707 Mode: follower Node count: 101081 wchs: connectsions=連接數 watch-paths=watch節點數 watchers=watcher數量 wchc: session id 對應 path wchp: path 對應 session id mntr: zk_version=版本 zk_avg_latency=平均延時 zk_max_latency=最大延時 zk_min_latency=最小延時 zk_packets_received=收包數 zk_packets_sent=發包數 zk_num_alive_connections=連接數 zk_outstanding_requests=堆積請求數 zk_server_state=leader/follower 狀態 zk_znode_count=znode數量 zk_watch_count=watch數量 zk_ephemerals_count=臨時節點(znode) zk_approximate_data_size=數據大小 zk_open_file_descriptor_count=打開的文件描述符數量 zk_max_file_descriptor_count=最大文件描述符數量 zk_followers=follower數量 zk_synced_followers=同步的follower數量 zk_pending_syncs=准備同步數