Zookeeper3.7.0的权限控制以及内存数据持久化

  • 1、Zookeeper 的 ACL 权限控制
    • 1.1、权限分类
      • 1.1.1、范围模式:
      • 1.1.2、口令模式
        • 1.1.2.1、密文模式
        • 1.1.2.2、明文模式
    • 1.2、关闭权限
    • 1.3、Super 超级管理员模式
  • 2、ZooKeeper 内存数据和持久化
    • 2.1、log. 事务日志
      • 2.1.1、什么是事务日志?
      • 2.1.2、事务日志的知识点
    • 2.2、snapshot. 快照文件
      • 2.2.1、什么是快照文件?
      • 2.2.2、快照文件的知识点

1、Zookeeper 的 ACL 权限控制

1.1、权限分类

Zookeeper 的 ACL 权限控制有两种模式
一种是范围验证,一种是口令验证

1.1.1、范围模式:

所谓的范围验证就是说 ZooKeeper 可以针对一个 IP 或者一段 IP 地址授予某 种权限。比如我们可以让一个 IP 地址为“ip:192.168.0.110”的机器对服务器上的某个数据节点具有写入的权限。或者也可以通过“ip:192.168.0.1/24”给一段 IP 地址的机器赋权。
详情如下:

使用IP段的方式进行权限控制:

先是在创建一个节点时直接加上可控制读写该节点的IP段
然后去访问就会失败

使用输入控制的ip段的ip远程去连接当前ip的zk
./zkCli.sh -server 192.168.231.131
在连接其它地址的zk时,一定要关闭被连接地址的防火墙
输入读写命令发现可以操作。
如下图所示:

1.1.2、口令模式

口令模式下分为两种授权方式,一种是密文,一种是明文,下来分别介绍两种授权方式。

1.1.2.1、密文模式

可以理解为用户名密码的方式。在 ZooKeeper 中这种验证方式是 Digest 认证,而 Digest 这种认证方式首先在客户端传送“username:password”这种形 式的权限表示符后,ZooKeeper 服务端会对密码部分使用 SHA-1 和 BASE64 算法进行加密, 以保证安全性。
设置权限模式如下


1、在任意一个类似于XShell工具执行如下命令,得到一串密钥。
echo -n user1:paas1 | openssl dgst -binary -sha1 | openssl base64
user和password可以自己定义

2、上面我们已经拿到了密文,下面我们可以使用密文对一个节点去加密。
如下图所示:
注意:
在创建节点时设置权限需要将数据先写上,不然zk会以为你写的权限信息为数据。

// 以密文的方式创建一个节点
create /zknode1 zknodedata digest:user1:7GHKMSnAdtZ69rqQSbnhUcWz1GE=:rw
// 登录用户
addauth digest user1:paas1

1.1.2.2、明文模式

登录一个用户
addauth digest user1:pass1
使用明文的方式对新创建的节点进行授权
create /zknode2 xxxx auth:user1:pass1:rw
看一下权限有没有被赋上去
getAcl /zknode2
看能否获取到节点的数据
get /zknode2

1.2、关闭权限

只需要在zoo.cfg文件中加入如下配置,即表示跳过权限检查。
skipACL=yes

上面我们修改了配置之后,然后再去连接服务并使用get的方式取值,则可以将数据取出来,如下图所示:

1.3、Super 超级管理员模式

如果你忘记了你的认证用户和密码,导致某些节点无法打开,这个时候我们可以设置一个超级管理员,来操作这些节点。
1、获取一个用户名密码的密文,在XShell下执行下面命令。
echo -n super:paas | openssl dgst -binary -sha1 | openssl base64

2、打开zkServer.sh文件并编辑,并添加下面的东西
‐Dzookeeper.DigestAuthenticationProvider.superDigest=super:MIqZXn9ZHKsA7oPtbk08zHiwv4A=
我的zk版本是3.7.0,粘贴在166行。

这里到时候粘贴配置

接下来我们测试一下
先创建一个节点并以密文的方式加权限,如下图所示:

// 以密文的方式创建一个节点
create /zknodeSuper dataOne digest:user1:7GHKMSnAdtZ69rqQSbnhUcWz1GE=:rw
// 获取节点
get /zknodeSuper
// 登录超级管理员
addauth digest super:paas
// 获取节点
get /zknodeSuper

2、ZooKeeper 内存数据和持久化

Zookeeper数据的组织形式为一个类似文件系统的数据结构,而这些数据都是存储在内存中的,所以我们可以认为,Zookeeper是一个基于内存的小型数据库
生成的事务日志文件和快照文件的路径配置如下图所示:
在zoo.cfg文件中

当我们进到这个文件夹下的 version-2 文件夹下,zk的6.0版本叫这个名字,后续就不知道叫什么名字了。

发现有这么多文件,以 log 开头的是事务日志文件,而以 snapshot 开头的是快照文件。
下面详解两个文件:

2.1、log. 事务日志

2.1.1、什么是事务日志?

就是说我们每在客户端输入一条写命令,都会保存在这个里面。

2.1.2、事务日志的知识点

1、为什么事务日志的每个文件大小都一样?

我们首先发现每个事务日志文件大小都一样,都是65MB,这是因为在创建事务日志文件的时候就进行文件空间的预分配- 即在创建文件的时候,就向操作系统申请一块大一点的磁盘块。这个预分配的磁盘大小可以通过系统参数 zookeeper.preAllocSize 进行配置。

2、如何查看事务日志?

我们进入到zk安装包的lib目录下,执行如下命令:
java -classpath .:slf4j-api-1.7.25.jar:zookeeper-3.5.9.jar:zookeeper-jute-3.5.9.jar org.apache.zookeeper.server.LogFormatter …/data/version-2/log.1
如下图所示:

2.2、snapshot. 快照文件

2.2.1、什么是快照文件?

每隔一段时间就会创建一个当前zk所有信息存成一个快照存起来,存起来的这个文件就叫快照文件。

2.2.2、快照文件的知识点

1、如何查看快照日志?

我们进入到zk安装包的lib目录下,执行如下命令:
java -classpath .:slf4j-api-1.7.25.jar:zookeeper-3.5.9.jar:zookeeper-jute-3.5.9.jar org.apache.zookeeper.server.SnapshotFormatter …/data/version-2/snapshot.0
如下图所示:

Zookeeper3.7.0的权限控制以及内存数据持久化相关推荐

  1. Vue2.0用户权限控制解决方案

    Vue2.0用户权限控制解决方案 参考文章: (1)Vue2.0用户权限控制解决方案 (2)https://www.cnblogs.com/zhumengke/articles/11526973.ht ...

  2. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探

    文章目录 内存数据 源码实现 事务日志 配置项 查看事务日志数据 LogFormatter 写入日志的优化 (预分配) 数据快照 查看数据快照数据 SnapshotFormatter 事务日志 VS ...

  3. 为什么我不推荐 v-has 实现权限控制?

    前言 如何实现权限控制?很多前端同学第一时间会想到实现自定义指令 v-has 或 v-permission.代码大致如下: Vue.directive("has", {insert ...

  4. 松耦合式的权限控制设计,自定义权限表达式

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  5. 权限控制最常见的五种方法

    涉及到权限的问题往往是都是复杂的问题,在系统权限控制方面,我们经常会参照现成的案例来设计自己的权限控制,以下就是最常见的几种权限控制的方法 1. 控制系统的登录 在用户状态上加状态控制,可用的用户就可 ...

  6. 分布式内存数据技术为查询提速

    背景和需求 中国铁路客户服务中心网站(www.12306.cn)是世界规模最大的实时交易系统之一,媲美Amazon.com,节假日尤其是春节的访问高峰,网站压力巨大.据统计, 在2012年初的春运高峰 ...

  7. 揭秘12306技术改造(三):传统框架云化迁移到内存数据平台

    注:本文首发于CSDN,转载请标明出处. [编者按]在年前的「技术揭秘12306改造」专题中,负责12306改造的技术架构师刘云程从技术的角度.用科学论证的方式说明 12306是如何实现高流量高并发的 ...

  8. 12306上的分布式内存数据技术GemFire

    12306分布式x86服务器虚拟化技术PaaS 摘要:作为世界规模最大的实时交易系统之一,12306备受关注,尤其在特殊节日里.尽管昨天消息称其又宕掉了,但恢复时间明显缩短不少,且手机APP未受影响. ...

  9. 【SSH框架/国际物流商综平台】-09 POI-SXSSFWorkbook 海量数据导出 细粒度权限控制 出口报运模块 打断设计+跳跃查询 内存监控工具jvisualvm

    回顾: 1.细粒度权限的控制 2.POI报表 八个步骤 3.Excel版本之间的区别 4.模板打印的步骤 1.制作模板 2.加载模板文件,得到工作簿 3.获取工作表 4.获取行对象 5.获取单元格对象 ...

最新文章

  1. 【直播】陈信达:零基础计算机视觉之机器学习基础
  2. c++ char **argv 赋值
  3. 网站改版都要注重哪些因素?
  4. 彻底弄懂css中单位px和em,rem的区别
  5. 【程序设计基础】第九、十、十一章 综合实例分析 递归
  6. 《Neo4j全栈开发》_陈韶健
  7. Hangfire使用ApplicationInsigts监控
  8. NumPy Beginner's Guide 2e 带注释源码 二、NumPy 基础入门
  9. 丹泽尔 x 陆奇:扫地僧牛逼的日常
  10. RoomIt屏幕画笔工具
  11. Linux中安装tree命令
  12. 数采仪厂家_环保数采仪生产厂家
  13. 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...
  14. 图的表示(无权图和有权图)
  15. 华硕 ROG Win11.21H2 x64极速精简优化专业版
  16. 请用文言文写一篇500字的古文
  17. Jmeter实现多用户压测
  18. 找回你的xournal++未保存文档
  19. udev (简体中文)
  20. c语言do循环函数,C语言do-while循环

热门文章

  1. 打印机无法从服务器获取信息,win10系统安装打印机提示无法从Windows Update获取设备列表怎么办...
  2. 取得助工前发表的论文可以用来评中级吗?
  3. dgl-02 gcn
  4. .net开发时用NPOI导出xlsx格式的Excel时,打开导出的Excel遇到“部分内容有问题”的报错
  5. 九型人格测试php,九型人格测试--图片判断
  6. 如何用企业微信管理客户?
  7. 移动**21*设置无法接通_怎样才能让手机无法接通
  8. java中哈希表HashMap详解遍历操作
  9. 关于地址联级的后台代码
  10. html标签 textarea多行文本框中如何显示提示信息呢?