Zk环境安装
单机版
(1)创建如下目录,将tar包上传并解压
(2)进入解压后的zk,创建data目录
(3)复制配置文件并重命名如下,然后修改配置
(4)修改配置文件中的dataDir为自己创建的数据目录
(5)在zookeeper的bin目录,启动zk
(6)停止zk:start改stop,看状态:start改status
伪分布版
(1)将上面的单机版复制三份,比如01,02,03
(2)给节点写入myid,节点的唯一标识
(3)修改配置文件zk01,zk02和zk03也要修改,三个节点clientPor不能一样t
(4)三个节点分别启动,关闭也是分别关闭(注意进入到具体目录去操作)
完全分布版
(1)用之前配置的单机版,复制三份,每个机器放一份
(2)三台机器都写入myid
(3)三台机器修改zoo.cfg配置文件
(4)分别在三个节点启动zk
Zk详解
配置文件详解
(1)clientPort
客户端连接server的端口,即外部服务端口,默认是2181
(2)dataDir
存myid,默认的事务日志也存储在这里,存Version
(3)tickTime
是一个zk中的时间单元,zk中所有时间都是以这个时间单元为基础的,比如定义一些时间配置时,整数倍定义,session超时时间定义2*tickTime
(4)initLimit
Follower启动过程中,从leader同步所有最新数据,leader限制Follower在initlimit时间内完成同步任务,如果leader数据量大,调高此属性
(5)syncLimit
同步时间,设置时最好别太大
(6)maxClientCnxns
客户端与服务器之间连接数的限制,默认为60
(7)server.A=B:C:D
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
A:必须是一个数字,代表的是几号服务器
B:服务器的IP
C:表示服务器集群中,leader服务器交换信息的端口
D:选举用到的端口,若leader挂掉,通过此端口选举
(8)若需要配置observer,修改配置如下
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888:observer
解压目录详解
Bin目录:运行脚本
- zkCleanup.sh:会清理日志信息,生产环境下最好不要用
- zkCli.sh:启动client端命令行,直接启动的话,访问localhost:2181,
./zkCli.sh 客户端访问远程 zkCli.sh-server ip:2181
Conf目录:配置文件
Contrib:一些用于操作zk的工具包
Lib:zk的依赖包
Recipes:存放zk的示例代码
dist-maven:编译后发布的目录
命令行的操作
(1)help 快速帮助
(2) ls 可以添加watch event
(3)create:create [-s] [-e] path data acl
创建zk节点: -s顺序节点和-e临时节点(session失效则节点消失),如果这两个参数不写,则创建持久化节点
- Path:创建节点的全路径
- Data:当前节点存储的数据
- Acl:用来控制权限,不写的情况下,认为不控制权限
(4)get:获取节点数据和属性信息
123:节点数据
- cZxid:节点创建的zxid,zk状态的每一次改变,都对应一个递增的transaction id,该ID称为zxid
- ctime:节点创建的时间戳
- mZxid:节点最新更新发生的zxid
- mtime:节点最新更新发生的时间戳
- pZxid:父类的zxid
- cversion:子节点的更新次数
- dataVersion:节点数据的更新次数
- aclVersion:节点ACL权限更新的次数
- ephemeralOwner:记录是否为临时节点
- numChildren:子节点的个数