简介
本章将记录所有的zookeeper命令以及可能使用的场景,需提前配置好zookeeper环境
ZNode增删查改操作
- help 查看zk命令列表
- create
,创建节点, path可以为绝对路径也可以为相对路径 , data为节点值, -s 表示创建顺序节点, -e表示创建临时节点(使用很多,会话关闭或者创建节点的Cli关闭节点会小时)。 - delete
, 删除空节点,节点不为空或有子节点时,会报错“node not empty”, ,version代表期望的版本号,输入version时只有节点的数据版本号与version相同才能删除节点。 - rmr
, 删除path节点及子路径,不要求节点为空 - ls
, 查询path下子节点, watch可选,表示是否监听节点,后面watch都是这个含义。当watch大于0时,当节点数据改变、 - ls2
, - get
,获取节点数据 - set
, 修改path节点数据为data。输入version时,只有当前数据版本号与version相同时修改成功。 - stat
, 查看节点状态
quota
- setquota
,设置path配额 -
listquota
列出path配额 -
delquota
,删除path配额
ACL
ACL(访问控制列表)机制用于ZK节点的权限控制,,
ACL控制类型分为world、auth、digest、ip四种方式,,world是默认类型,所有人可访问,,ip用于对cli的ip进行控制,,digest是用户名和密码形式,密码为Base64(sha1(password)),先sha1加密,Base64编码。
权限分为crwda,分别代表创建(create)、读取(read)、修改(write)、删除(delete)、管理(admin),,
- setAcl
, -
getAcl
,查询path的acl设置 -
addAuth
,操作节点前ASC验证
测试:
ipacl:
,创建新节点,,
,查看ACL,默认为world:anyone,允许cdrwa操作,即所有操作,,
,设置ipacl节点acl为ip。
,,
,不能直接访问,只能通过192.168.100.1的cli访问
digest:
,,
,设置/degest节点为digest方式,auth为user1 HY.../s=这部分是123456按照sha1加密,Base64编码的结果,授予rwda权限。
,直接访问节点被拒绝,,
,添加验证然后访问,这里的密码为明文。
附一个JAVA生成ACL密码的方法:
static public String generateDigest(String idPassword)
throws Exception {
String parts[] = idPassword.split(":", 2);
byte digest[] = MessageDigest.getInstance("SHA1").digest(
idPassword.getBytes());
return parts[0] + ":" + base64Encode(digest);
}
private static String base64Encode(byte[] bytes) throws Exception {
final Base64.Decoder decoder = Base64.getDecoder();
final Base64.Encoder encoder = Base64.getEncoder();
//编码
final String encodedText = encoder.encodeToString(bytes);
return encodedText;
}
其它
-
history 列出历史命令及命令号

-
redo
,重新执行cmdno的命令,命令号可用history查出 -
sync
,强制zk集群同步数据,,因为做修改时只要有半数机器应用即提示应用成功,sync将path的修改应用到整个集群,而不仅是半数机器。 -
close
,关闭连接 ,不退出zkCli -
connect
, close后连接host:port -
quit 退出zkCli
本文记录了Zookeeper的所有命令及使用场景,需提前配置好环境。涵盖ZNode增删查改操作、quota配额设置、ACL访问控制列表机制等内容,还包括测试示例及其他命令,如历史命令查看、重新执行命令、集群数据同步等。
1729

被折叠的 条评论
为什么被折叠?



