1.zookeeper
1.1VM虚拟机安装JDK8
1.官网下载JDK(jdk-*****.tar.gz格式)
2.tar -xzvf 解压JDK文件
3.mv 命令更换jdk文件名
4. vim /etc/profile 配置jdk环境变量
5.source /etc/profile 让环境变量生效
6.检测是否安装成功
7.详细步骤,可百度如何在虚拟机中安装JDK即可.
1.2 zookeeper安装
- 官网下载zookeeper(zookeeper-3.4.8.tar.gz)
- tar -xzvf 解压zookeeper文件
- mv zookeeper-3.4.8 zookeeper命令更换zookeeper文件名
- vim /etc/profile 配置zookeeper环境变量
- source /etc/profile 让环境变量生效
- 配置zoo.cfg文件
tickTime=2000 zookeeper最基础的单元时间 毫秒
initLimit=10 从节点同步到主节点同步的初始化时间 tickTime的倍数
syncLimit=5 从节点与主节点通讯的时间 心跳机制
clientPort=2181 zookeeper端口
dataDir=/usr/local/src/zookeeper/dataDir
dataLogDir=/usr/local/src/zookeeper/dataLogDir 日志目录 - 创建dataDir和dataLogDir目录
- 启动 ./zkServer.sh start
1.3 zookeeper数据模型
- 类似tree.js这种结构,每个节点Znode,可以存储数据,也可以有子节点,存储不宜太大,几K就可
- 节点有临时节点和永久节点,临时节点会随着客户端关闭而消失
- 每个zk节点都会有版本号(乐观锁概念一样)
- 节点可以设置acl权限
1.4 zookeeper作用
- master节点选举,高可用的体现
- 统一配置文件管理
- 发布与订阅 ----发布者把数据存储在znode,订阅者会读取数据
- 提供分布式锁
- 集群管理,保证数据的强一致性
1.5 zookeeper会话session
客户端和服务端之间的会话
存在超时时间
心跳结束,session会过期,临时节点znode会被抛弃
心跳机制:客户端向服务端的ping包请求
1.6 zookeeper客户端操作
- 打开zk客户端./zkCli.sh start
命令详情如下(客户端输入help即可看到)
ls命令:进入节点
ls2命令:显示节点信息
czxid:该数据节点被创建时的事务id。
mzxid:该节点最后一次被更新时的事务id。
ctime:节点被创建时的时间。
mtime:节点最后一次被更新时的时间。
version:这个节点的数据变化的次数。
cversion:这个节点的子节点 变化次数。
aversion:这个节点的ACL变化次数。
ephemeralOwner:如果这个节点是临时节点,表示创建者的会话id。如果不是临时节点,这个值是0。
dataLength:这个节点的数据长度。
numChildren:这个节点的子节点个数。
stat命令:获取节点状态信息
get命令:获取节点信息,包括该节点数据
create命令: -s创建顺序节点.-e创建临时节点
set命令:设置节点数据
delete命令:删除节点
1.7 zookeeper的watcher机制
- 针对每个节点的操作,都会有一个监督者->watcher
- 当监控的某个对象(znode)发生了变化,则触发watcher事件
- zk中的watcher是一次性的,触发后立即销毁
- 父节点,子节点 增删改都能够触发watcher
- 针对不同类型的操作,触发watcher事件也不同:(1) (子)节点创建事件 (2)(子)节点删除事件(3)(子)节点数据变化事件
- 事件类型
NodeCreateed 父节点创建
NodeDateChanged 父节点数据变化
NodeDeleted 父节点删除
NodeChildrenChanged 子节点创建
NodeChildrenChanged 删除子节点
修改子节点不会触发事件
1.8 zookeeper的Acl权限
getAcl 获取某个节点的acl权限信息
setAcl 设置某个节点的acl权限信息
addauth输入认证授权信息,注册时输入明文密码(登录),zk中密码是加密形式存在
schema : id : permissions构成权限列表 权限机制:允许访问的用户:权限组合字符串
schema(权限机制)
world:只有一个用户,anyone(world:anyone:[permission])
auth:代表认证登录,需要注册用户有权限(auth:username:password:[permission])-首先的使用addauth添加用户
digest:需要对面加密才能访问(digest:username:BASE64(SHA1(password)):[permission])
ip:限制ip访问(ip:192:168.1.1:[permission])
permission权限类型(crdwa)
create:创建子节点
read:获取节点/子节点
write:设置节点数据
delete:删除子节点
admin:设置权限
1.9 zookeeper四字命令
1.安装nc命令
yum install nc
echo stat|nc ip port 查看状态信息
echo ruok|nc ip port 查看zkserver是否启动
echo dump|nc ip port 列出未经处理的会话和临时节点
echo conf|nc ip port 查看服务器相关配置
echo cons|nc ip port 展示连接到服务器的客户端信息
echo envi|nc ip port 环境变量
echo mntr|nc ip port 监控zk监控信息
echo wchs|nc ip port 展示watch的信息
1.10 zookeeper集群
一下是用单机模拟的集群,如果用三台服务器,只需要修改ip即可
- 复制zookeeper文件夹
- 修改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文件内容对应
- 创建myid文件
myid内容分别为1,2,3
- 启动zookeeper01,zookeeper02,zookeeper03
- 检查zookeeper集群