说明
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=准备同步数