Zookeeper基础常用操作以及ACL权限
这次将Zookeeper的一些基础用法以及权限这块的都补充一下在这篇博客中。
上篇博客介绍了基于ZooKeeper实现的分布式锁,也介绍了一些ZooKeeper的节点类型以及监听机制,今天这里就不作过多的介绍了,大家也可以自行的去官方文档上看看更具体的介绍ZooKeeper官方链接
会话
会话(session)是zookepper非常重要的概念,客户端和服务端之间的任何交互操作都与会话有关,
客户端与服务端的一次会话连接,本质是TCP长连接,通过会话可以进行心跳检测和数据传输:
看下这图,Zk客户端和服务端成功连接后,就创建了一次会话,ZK会话在整个运行期间的生命周期中,会在不同的会话状态之间切换,这些状态包括:
CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE
一旦客户端开始创建Zookeeper对象,那么客户端状态就会变成CONNECTING状态,同时客户端开始尝试连接服务端,连接成功后,客户端状态变为CONNECTED,通常情况下,由于断网或其他原因,客户端与服务端之间会出现断开情况,一旦碰到这种情况,Zookeeper客户端会自动进行重连服务,同时客户端状态再次变成CONNCTING,直到重新连上服务端后,状态又变为CONNECTED,在通常情况下,客户端的状态总是介于CONNECTING和CONNECTED之间。但是,如果出现诸如会话超时、权限检查或是客户端主动退出程序等情况,客户端的状态就会直接变更为CLOSE状态
目录
下载了ZooKeeper之后在bin目录下有以下可执行文件:
常用脚本
zkCli:连接ZooKeeper服务的客户端脚本
bin/zkCli.sh -server 127.0.0.1:2181
zkServer:ZooKeeper服务的启动、状态以及关闭脚本
启动ZK服务: bin/zkServer.sh start
查看ZK服务状态: bin/zkServer.sh status
停止ZK服务: bin/zkServer.sh stop
重启ZK服务: bin/zkServer.sh restart
参数大全
ZooKeeper服务启动默认需加载conf文件夹下的zoo.cfg文件,参数也可以自行去官方文档查询,ZooKeeper配置文件官方参数大全
这里列举一些常用的:
clientPort:参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接
clientPortAddress:在3.3.0版本之后,监听客户端连接的地址(ipv4、ipv6或主机名);即客户端试图连接到的地址。这是可选的,默认情况下,我们以这样一种方式进行绑定,即服务器上的任何地址/接口/网卡的任何连接都将被接受。
dataDir:用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
dataLogDir:用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争
dataDir:新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机
以下配置集群中才会使用,后面再讨论
tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间
initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。
常用命令
在ZooKeeper的客户端使用help命令是可以看到所有命令:
介绍一些常用命令:
显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串 [-e] [-s] 【-e 零时节点】 【-s 顺序节点】
获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串 [watch]【watch 监听】
修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
删除文件: delete /zk 将刚才创建的 znode 删除,如果存在子节点删除失败
递归删除:rmr /zk将刚才创建的 znode 删除,子节点同时删除
退出客户端: quit
帮助命令: help
节点
上篇讲过节点,所以今天这里就不谈节点类型了,谈谈节点状态属性,在使用get命令查看具体数据的时候,会打印:
ACL权限
在ZooKeeper里面可以控制节点的访问权限,保障数据的安全
表示为scheme:id:permissions,第一个字段表示采用哪一种机制,第二个id表示用户,permissions表示相关权限(如只读,读写,管理等)
schema:代表授权策略
id:代表用户
permission:代表权限
scheme
world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的
auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication)
digest: 它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication
ip: 它对应 的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段
id
scheme为auth时:
username:password
scheme为digest时:username:BASE64(SHA1(password))
scheme为ip时:客户端的ip地址。
scheme为world时anyone。
permission
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
CREATE(c):创建子节点的权限
DELETE(d):删除节点的权限
READ(r):读取节点数据的权限
WRITE(w):修改节点数据的权限
ADMIN(a):设置子节点权限的权限
ACL命令
getAcl
获取指定节点的ACL权限信息
setAcl
setAcl /demo world:anyone:crwa 设置指定节点的ACL权限
由于没用设置删除权限,所以在删除的时候就会提示无法删除
addauth
addauth digest user1:123456设置用户和密码,
setAcl /demo auth:user1:123456:crwa 使用用户去设置指定的权限,然后就可以直接登陆用户进行访问
在退出客户端之后再次连接客户端
对使用用户设置权限的节点无权访问,所以需登陆用户进行访问
即addauth digest user1:123456执行一下,就可以访问指定节点了
digest
auth与digest的区别就是,前者使用明文密码进行登录,后者使用密文密码进行登录
addauth digest user1:123456 设置用户密码
setAcl /demo digest:user1:HYGa7IZRm2PUBFiFFu8xY2pPP/s=:crwa 使用digest来设置权限
如果这里使用明文登陆的话,会导致改节点不可访问
在ZooKeeper里面有可以获取密文方法,在命令执行如下:
命令:java -Djava.ext.dirs=/soft/zookeeper-3.4.12/lib -cp /soft/zookeeper-3.4.12/zookeeper-3.4.12.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider deer:123456
结果:deer:123456->deer:ACFm5rWnnKn9K9RN/Oc8qEYGYDs=
IP
create /testDir/testIp data 创建节点
setAcl /testDir/testIp ip:192.168.30.10:cdrwa 给指定节点设置指定IP可访问
getAcl /testDir/testIp 获取节点权限信息
超级管理员
为了避免出现因权限设置的问题,所以在ZooKeeper中有超级管理员的权限存在
先获取super:admin的密文:super:xQJmxLMiHGwaqBvst5y6rkB6HQs=
在ZooKeeper启动的参数中添加启动超级管理员
添加参数:"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="
在客户端中启动超级管理员:
addauth digest super:admin
常用四字命令
ZooKeeper 支持某些特定的四字命令字母与其的交互。用来获取 ZooKeeper 服务的当前状态及相关信息。可通过 telnet 或 nc 向 ZooKeeper 提交相应的命令 :
当然,前提是安装好了nc
echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
echo kill | nc 127.0.0.1 2181 ,关掉server
echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息
echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。
还有一些其他的东西,后面有空在说呀
Zookeeper基础常用操作以及ACL权限相关推荐
- zookeeper中展示所有节点_Zookeeper系列一:Zookeeper基础命令操作
有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...
- excel基础常用操作(2)
excel基础常用操作(2) 一.筛选 1.基本筛选 开始菜单--排序与选项 小漏斗 2.高级筛选 可以有多个筛选条件 可以保留原数据,又可以把结果数据保留下来 位置:数据菜单下--排序与筛选--高级 ...
- Zookeeper基础命令操作
转载链接:https://blog.csdn.net/dandandeshangni/article/details/80558383 安装参考链接https://blog.csdn.net/qiun ...
- 【Linux】基础常用操作
文章目录 一.安装 二.常用操作 1.用户的切换和创建 2.Shell快捷键 3.目录结构-ls命令-列示目录 4.目录结构-cd命令-切换目录 5.目录结构-目录的含义 6.文件操作 1)识别内容 ...
- linux权限切换命令,Linux基础常用命令汇总(权限操作)
权限操作 权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功. Linux下文件的权限类型一般包括读,写,执行.对应字母为 r.w. ...
- Zookeeper后端开发工具Curator的使用 | Curator对节点的增删改查 | ACL权限控制 | 分布式锁 | 分布式计数器 | 附带最新版本下载
前言 Curator是Apache开源的一个Java工具类,通过它操作Zookeeper会变得极度舒适! 前置条件:已掌握的基本操作,比如在后台可以增减节点.ACL权限设置等. 1.Zookeeper ...
- ZooKeeper基础知识笔记(含3节点伪分布式安装配置流程)
本笔记涉及代码:https://github.com/hackeryang/Hadoop-Exercises/tree/master/src/main/java/ZooKeeper 一.ZooKeep ...
- matlab三维 旋转矩阵,matlab旋转矩阵来旋转三维模型+meshlab旋转模型+matlab基础常用...
matlab旋转矩阵来旋转三维模型+meshlab旋转模型+matlab基础常用 matlab旋转矩阵来旋转三维模型+meshlab旋转模型+matlab基础常用操作 matlab旋转矩阵实战: ①点 ...
- zookeeper的acl权限控制_zookeeper权限acl与四字命令
权限acl介绍,acl的构成与id acl是Access control lists 的缩写,也就是权限控制列表: 针对节点可以设置相关读写等权限,目的是为了保障数据安全性 权限permissions ...
最新文章
- Spring5 - 核心原理
- linux笔记之常用的基本命令
- vue 父组件传子组件数值,父值变更子获取的值没有变的问题
- oid 值 内存使用_如何使用Choerodon LDAP以及配置定时任务
- uni-app使用input框 v-model双向绑定不起作用解决方案
- Day03:文件打开;错误处理
- linux反序列化漏洞,思科多个产品Java反序列化漏洞(CVE-2015-6420)
- 全面的Spring Boot配置文件详解
- 前端工作学习相关网站收集整理
- 实战 | F1060路由模式典型组网配置案例(静态路由)
- [android] fragment的动态创建
- SAP SD跨公司销售案例教程后台配置
- Typora常用好看主题推荐!!!
- jibx进行xml数据绑定的binging.xml配置
- 拨号上网怎么修改dns服务器,dns怎么设置才能上网 dns设置上网方法【图文】
- 八叶一刀流·四之型·红叶·选题报告
- 佳能Canon imageRUNNER ADVANCE C9060 驱动
- jro java_java-如何遍历Android中的Firebase结构?
- Oracle 考试重点代码整理
- [Python]利用jieba.analyse进行 关键词 提取
热门文章
- 某一个接口403 其他接口可以调通_Neo的务实外设指南 篇三十六:一个就够,65W快充+C口混插+最多6个设备 - 飞利浦65W摩天轮插座_插座...
- sql server服务器位置,SQL语句实现查询SQL Server服务器名称和IP地址
- 万丰科技机器人排名_机器人系统集成“7宗最”
- c#简单记事本应用程序的快捷方式_Windows 10七月更新又翻车,记事本没了
- Java 设计模式 Day1 之面向抽象原则:抽象(abstract)类的设计与应用分析
- android按钮置于顶层,如何把按键显示在最顶层窗口上(屏幕最顶上)
- 16字节 oracle md5,Oracle中的MD5加密
- java sqlite 工具类_Java 工具类 - JDBC通用操作基类 BaseDao
- mysql设置success信息_【原创】MySQL Cluster安装部署(Success)
- orange pi java_[中文]Orange Pi家族各大成员一览表