zookeeper介绍及集群环境搭建
zookeeper概述
zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中的应用系统的一致性问题,例如在避免在同时处理同一数据时出现脏读。
zookeeper本质是一个分布式的小文件存储系统,提供类似于文件系统的目录树方式的数据存储,并且对树中的节点进行有效的管理。
zookeeper的架构
zookeeper集群中有:leader,follower,observer三个角色
leader是集群工作的核心:
leader是事务请求(增删改)的唯一调度者和处理者,保证事务处理的顺序性,集群内部的各个服务器的调度者
follower:
用来处理非事务的请求,并且转发事务请求给leader,并且参与集群leader的选举投票,2n-1可以做集群投票
此外针对访问量较大的集群,还可以增加观察者这个角色
observer
观察者角色,观察zookeeper集群的最新状态变化,并将这些状态同步过来,可以对非事务进行独立的处理,对于事务请求转发给leader,并且不会参与leader的选举投票,增加并发的读请求
zookeeper的特性
1.全局数据的一致性:每个servier保存一份相同的数据副本,client无论连接到哪个server,展示的都是一致的
2.可靠性:如果消息被一个服务器接收了,那么将被所以的服务器接受
3.顺序性:包括全局有序和偏序两种,如果在一台服务器上,消息a在消息b之前发布,那么在所有的服务器上消息a都在消息b前发布;偏序是指如果一个消息b在消息a后被同一个发布者发布,a必将排在b前面
4.数据更新的原子性:一次数据更新要么成功(半数以上节点成功),要么失败
5实时性:zookeeper保证客户端在一个时间间隔的范围内获得服务器的更新信息或者服务器的失效信息。
三台虚拟机的zookeeper集群的环境搭建
zookeeper集群搭建指的是zookeeper分布式模式的安装,通常由2n+1台servers组成,这是为了保证leader选举时能得到多数的支持,集群数量一般为奇数。
在安装zookeeper之前需要确保这三台虚拟机能够联网,免密登陆,时钟同步,jdk环境。
第一步:下载zookeeper安装包
下载网址:http://archive.apache.org/dist/zookeeper/
选择稳定版本下载使用,下载完成后上传到虚拟机中
第二步:解压
解压压缩包,进行安装
第三步:修改配置文件
在zookeeper的安装目录下的conf文件中
#复制一份配置文件
cp zoo_sample.cfg zoo.cfg
#在安装目录下创建文件加
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
#修改配置文件
vim zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
#在末尾添加
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
第四步:添加myid配置
在zkdatas目录下创建一个文件
echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第五步:安装包分发并修改myid的值
scp -r /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r /export/servers/zookeeper-3.4.9/ node03:/export/servers/
分别在另外两台虚拟机上修改myid的值
echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid
第六步:三台虚拟机启动zookeeper服务
#启动三台虚拟机的bin目录下的zkServer.sh脚本
/export/servers/zookeeper-3.4.9/bin/zkServer.sh start
#查看启动状态
/export/servers/zookeeper-3.4.9/bin/zkServer.sh status
zookeeper的shell操作
客户端连接
运行bin目录下的zkCli.sh ,进入命令行工具
输入help,能看到zk shell提示
shell操作
创建节点
create [-s] [-e] path data acl
#其中的-s或者-e分别指定节点特性,顺序或者临时节点,若不指定默认是永久节点
#创建顺序节点
create -s /test 123
#创建临时节点
create -e /test-temp 123temp
#创建永久节点
create /test-p 123p
读取节点
与读取相关的命令有ls,get
#列出指定节点下的所有子节点,指定节点下的第一级所有节点
ls path [watch]
#获取zookeeper指定节点的数据内容和属性信息
get path [watch]
#更新节点
ls2 /
更新节点内容
set path data [version]
#修改之后,dataVersion会随之修改,表示进行了更新
删除节点
delete path
#若删除节点存在子节点。那么无法删除该节点,必须删除子节点。再删除父节点
Rmr path
#可以递归删除节点
quota
setquta -n | -b val path
#对节点增加限制 n:表示子节点的最大个数 b:表示数据值的最大长度 val:子节点最大个数或数据值的最大长度 path:节点路径
listquota path
#列出指定节点的quota
delquota quota
其他命令
history:列出命令历史