ZK_命令大全

说明

  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=准备同步数
原文地址:https://www.cnblogs.com/chunxiaozhang/p/12759595.html