zookeeper基础

1.zookeeper

1.1VM虚拟机安装JDK8

1.官网下载JDK(jdk-*****.tar.gz格式)
2.tar -xzvf 解压JDK文件
3.mv 命令更换jdk文件名
4. vim /etc/profile 配置jdk环境变量
配置jdk环境变量
5.source /etc/profile 让环境变量生效
6.检测是否安装成功
检测jdk是否安装成功
7.详细步骤,可百度如何在虚拟机中安装JDK即可.

1.2 zookeeper安装
  1. 官网下载zookeeper(zookeeper-3.4.8.tar.gz)
  2. tar -xzvf 解压zookeeper文件
  3. mv zookeeper-3.4.8 zookeeper命令更换zookeeper文件名
  4. vim /etc/profile 配置zookeeper环境变量
    配置环境变量
  5. source /etc/profile 让环境变量生效
  6. 配置zoo.cfg文件
    zookeeper配置文件
    tickTime=2000 zookeeper最基础的单元时间 毫秒
    initLimit=10 从节点同步到主节点同步的初始化时间 tickTime的倍数
    syncLimit=5 从节点与主节点通讯的时间 心跳机制
    clientPort=2181 zookeeper端口
    dataDir=/usr/local/src/zookeeper/dataDir
    dataLogDir=/usr/local/src/zookeeper/dataLogDir 日志目录
  7. 创建dataDir和dataLogDir目录
  8. 启动 ./zkServer.sh start
    zookeeper服务端启动
1.3 zookeeper数据模型
  1. 类似tree.js这种结构,每个节点Znode,可以存储数据,也可以有子节点,存储不宜太大,几K就可
  2. 节点有临时节点和永久节点,临时节点会随着客户端关闭而消失
  3. 每个zk节点都会有版本号(乐观锁概念一样)
  4. 节点可以设置acl权限
1.4 zookeeper作用
  1. master节点选举,高可用的体现
  2. 统一配置文件管理
  3. 发布与订阅 ----发布者把数据存储在znode,订阅者会读取数据
  4. 提供分布式锁
  5. 集群管理,保证数据的强一致性
1.5 zookeeper会话session

客户端和服务端之间的会话
存在超时时间
心跳结束,session会过期,临时节点znode会被抛弃
心跳机制:客户端向服务端的ping包请求

1.6 zookeeper客户端操作
  1. 打开zk客户端./zkCli.sh start
    命令详情如下(客户端输入help即可看到)
    命令详情
    ls命令:进入节点
    ls命令
    ls2命令:显示节点信息
    ls2命令

czxid:该数据节点被创建时的事务id。
mzxid:该节点最后一次被更新时的事务id。
ctime:节点被创建时的时间。
mtime:节点最后一次被更新时的时间。
version:这个节点的数据变化的次数。
cversion:这个节点的子节点 变化次数。
aversion:这个节点的ACL变化次数。
ephemeralOwner:如果这个节点是临时节点,表示创建者的会话id。如果不是临时节点,这个值是0。
dataLength:这个节点的数据长度。
numChildren:这个节点的子节点个数。

stat命令:获取节点状态信息
stat命令
get命令:获取节点信息,包括该节点数据
get命令
create命令: -s创建顺序节点.-e创建临时节点
create命令
set命令:设置节点数据
set命令
delete命令:删除节点
delete命令

1.7 zookeeper的watcher机制
  1. 针对每个节点的操作,都会有一个监督者->watcher
  2. 当监控的某个对象(znode)发生了变化,则触发watcher事件
  3. zk中的watcher是一次性的,触发后立即销毁
  4. 父节点,子节点 增删改都能够触发watcher
  5. 针对不同类型的操作,触发watcher事件也不同:(1) (子)节点创建事件 (2)(子)节点删除事件(3)(子)节点数据变化事件
  6. 事件类型
    NodeCreateed 父节点创建
    NodeDateChanged 父节点数据变化
    NodeDeleted 父节点删除
    NodeChildrenChanged 子节点创建
    NodeChildrenChanged 删除子节点
    修改子节点不会触发事件
1.8 zookeeper的Acl权限

getAcl 获取某个节点的acl权限信息
getAcl

setAcl 设置某个节点的acl权限信息
setAcl命令
addauth输入认证授权信息,注册时输入明文密码(登录),zk中密码是加密形式存在
addauth命令
schema : id : permissions构成权限列表 权限机制:允许访问的用户:权限组合字符串

schema(权限机制)
world:只有一个用户,anyone(world:anyone:[permission])
auth:代表认证登录,需要注册用户有权限(auth:username:password:[permission])-首先的使用addauth添加用户
auth权限
auth权限
digest:需要对面加密才能访问(digest:username:BASE64(SHA1(password)):[permission])
digest权限
ip:限制ip访问(ip:192:168.1.1:[permission])

permission权限类型(crdwa)
create:创建子节点
read:获取节点/子节点
write:设置节点数据
delete:删除子节点
admin:设置权限

1.9 zookeeper四字命令

1.安装nc命令
yum install nc
安装nc命令
echo stat|nc ip port 查看状态信息
stat
echo ruok|nc ip port 查看zkserver是否启动
ruok
echo dump|nc ip port 列出未经处理的会话和临时节点
dump
echo conf|nc ip port 查看服务器相关配置
conf
echo cons|nc ip port 展示连接到服务器的客户端信息
cons
echo envi|nc ip port 环境变量
envi
echo mntr|nc ip port 监控zk监控信息
mntr
echo wchs|nc ip port 展示watch的信息
wchs

1.10 zookeeper集群

一下是用单机模拟的集群,如果用三台服务器,只需要修改ip即可

  1. 复制zookeeper文件夹
    配置集群
  2. 修改zoo.cfg配置文件中的端口号,日志目录,集群
    端口号分别为2181,2182,2183
    日志目录分别为,并创建相对应的目录
    dataDir=/usr/local/src/zookeeper01/dataDir
    dataLogDir=/usr/local/src/zookeeper02/dataLogDir

dataDir=/usr/local/src/zookeeper02/dataDir
dataLogDir=/usr/local/src/zookeeper02/dataLogDir

dataDir=/usr/local/src/zookeeper03/dataDir
dataLogDir=/usr/local/src/zookeeper03/dataLogDir

集群
每个zoo.cfg配置文件都添加如下的配置
server.1与myid文件内容对应
集群

  1. 创建myid文件
    myid内容分别为1,2,3
    myid
  2. 启动zookeeper01,zookeeper02,zookeeper03
    启动
  3. 检查zookeeper集群
    集群状态
    集群状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值