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集群
    集群状态
    集群状态
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值