Zookeeper 单机版安装及使用

Zookeeper 安装

1. zookeeper安装下载

官网地址:https://zookeeper.apache.org/
博主下载稳定版本:apache-zookeeper-3.6.2-bin.tar
百度网盘分享
链接:https://pan.baidu.com/s/1AaLdSc_ILyPnag-iIWTIkA
提取码:yug0

2. 安装及配置说明

  1. 解压
 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
  1. 解压目录下的config,复制配置文件
cp zoo_sample.cfg zoo.cfg 
  1. 修改配置文件zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# 注意需要创建目录
dataDir=/home/zookeeper/zk-data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

參數介紹

  • tickTime: zk 使用的基本时间单位为 tick,该属性设置一个 tick 的时间长度,单位毫秒。
  • initLimit: Follower 初始化同步的超时时限, 单位为 tickTime 的倍数。集群启动或新 Leader选举完成后, Follower 需要从 Leader 同步数据,如果需要同步的数据量较大,则可能超时。 一旦超时,同步失效。
  • syncLimit: Follower 更新同步的超时时限,单位为 tickTime 的倍数。后续同步与初始化同步的不同点在于,初始化同步的数据量要大于后续同步的,后续同步的数据量一般是较小的。 所以,对于 initLimit 是否超时,更多是取决于网络质量。如果超时, Leader 就认为该 Follower 落后太多需要放弃。如果网络为高延迟环境,可适当增加该值,但不宜增加太大,否则会掩盖某些故障。
  • dataDir: 该路径为快照文件存储路径。默认给出的路径在/tmp 中,提示也指出,不要将快照存储路径设置到/tmp 中。ZKServer 的数据在内存中是以 DataTree 树形结构进行存储的,而快照就是每隔一段时间就会把整个 DataTree 的数据序列化后存储在磁盘中, 以备在故障时可以迅速恢复, 这些存储在磁盘中的文件就是 zk 的快照文件。
  • clientPort: 客户端连接 zkServer 的端口号,每台 ZKServer 允许设置为不同的值。默认配置文件设定的是 2181。

3. 启停zookeeper

注意:启动之前必须保证当前linux服务器必须安装java jdk

3.1 在看全局命令配置

由于我们要使用的命令都在 ZK 安装目录下的 bin 目录中,所以在/etc/profile 文件中将该 bin 目录注册到系统环境变量 PATH 中。

# vi /etc/profile文件新增,注意根据zookeeper安装路径自行配置
export PATH=/home/zookeeper/zookeeper-3.6.2/bin:$PATH
# 保存之后刷新
source /etc/profile

3.2 启动

# 启动
[root]# zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.3 查看状态

# 查看状态
[root]# zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

3.4 重启

# 重启
[root]# zkServer.sh restart
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

3.5 停止

# 停止
[root]# zkServer.sh stop
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.6.2/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

3 客户端连接命令

3.1 连接服务器

  1. 连接本地zk服务器
zkCli.sh
  1. 连接其他zk服务器
zkCli.sh -server xxx.xxx.xxx.ip:port

3.2 创建子节点

3.2.1 创建永久节点
  1. 创建一个名为 china 的znode,值为 shagnHai。
[zk: localhost:2181(CONNECTED) 7] create /china shangHai
Created /china
[zk: localhost:2181(CONNECTED) 8] ls /
[china, zookeeper]
3.2.2 创建顺序节点

在/china节点下创建beijing,shenzhen,内容扥别是bj,sz

# 创建临时节点语法:create -s znode value
[zk: localhost:2181(CONNECTED) 2] create -s /china/beijing bj
Created /china/beijing0000000000
[zk: localhost:2181(CONNECTED) 3] create -s /china/shenzhen sz
Created /china/shenzhen0000000001
[zk: localhost:2181(CONNECTED) 4] ls /china
[beijing0000000000, shenzhen0000000001]
3.2.3 创建临时节点

在/china节点下创建aaa,bbb,内容分别为a,b

# 创建临时节点语法:create -e znode value
[zk: localhost:2181(CONNECTED) 0] create -e /china/aaa a
Created /china/aaa
[zk: localhost:2181(CONNECTED) 1] create -e /china/bbb b
Created /china/bbb
[zk: localhost:2181(CONNECTED) 2] ls
ls [-s] [-w] [-R] path
[zk: localhost:2181(CONNECTED) 3] ls /china
[aaa, bbb, beijing0000000000, shenzhen0000000001]
3.2.4 创建临时顺序节点
# 语法:create -e -s znode value
[zk: localhost:2181(CONNECTED) 5] create -e -s /china/sss s
Created /china/sss0000000005
[zk: localhost:2181(CONNECTED) 6] get /china/sss0000000005 
s

3.3 获取节点数据内容-get

语法:get 节点

[zk: localhost:2181(CONNECTED) 2] get /china/beijing0000000000 
bj
[zk: localhost:2181(CONNECTED) 3] get /china/shenzhen0000000001 
sz
[zk: localhost:2181(CONNECTED) 4] get /china

3.4 重新设置节点内容-set

语法:set 节点 value

[zk: localhost:2181(CONNECTED) 1] set /china newinfo
[zk: localhost:2181(CONNECTED) 2] get /china 
newinfo

3.5 删除节点

语法:delete znode

[zk: localhost:2181(CONNECTED) 2] delete /china/maybe 

3.6 ACL操作

3.6.1 查看权限-getAcl
[zk: localhost:2181(CONNECTED) 0] getAcl /china
# 表示所有人均可操作增删改查
'world,'anyone
: cdrwa
3.6.2 设置权限

下面的命令是,首先增加了一个认证用户 zk,密码为 123,然后为/china 节点指定只有zs 用户才可访问该节点,而访问权限为所有权限。

# 为节点设置权限  setAct /china auth:用户:密码:cdrwa
[zk: localhost:2181(CONNECTED) 1] setAct /china auth:zk:123:cdrwa
# 退出客户端重新连接
[zk: localhost:2181(CONNECTED) 0] getAcl /china
Authentication is not valid : /china
# 添加认证用户 addauth digest 用户:密码
[zk: localhost:2181(CONNECTED) 0] addauth digest zk:123
# 添加认证用户拥有权限获取
[zk: localhost:2181(CONNECTED) 2] getAcl /china 
'digest,'zk:MsjFltVWzlTGMoDYclrWdyEQ9KU=
: cdrwa

4 zookeeper数据类型

4.1 节点类型

  1. 持久节点: 一旦创建就一直存在于 zk 中,直到将删除
  2. 持久顺序节点: 一个父节点可以为其子节点维护一个创建的先后顺序,这个顺序体现在节点名称上,是节点名称后自动添加一个由 10 位数字组成的数字串。从 0 开始计数。
  3. 临时节点: 临时节点的生命周期是与客户端会话绑定的,会话消失则节点消失。临时节点只能做叶子节点,不能创建子节点。
  4. 临时顺序节点: 添加了创建序号的临时节点。

4.2 节点状态

通过 stat znode语法查看

  1. cZxid: Created Zxid,表示当前 znode 被创建时的事务 ID
  2. ctime: Created Time,表示当前 znode 被创建的时间
  3. mZxid: Modified Zxid,表示当前 znode 最后一次被修改时的事务 ID
  4. mtime: Modified Time,表示当前 znode 最后一次被修改时的时间
  5. pZxid: 表示当前 znode 的子节点列表最后一次被修改时的事务 ID。注意,只能是其子节点列表变更了才会引起 pZxid 的变更,子节点内容的修改不会影响 pZxid。
  6. cversion: Children Version,表示子节点的版本号。该版本号用于充当乐观锁。
  7. dataVersion: 表示当前 znode 数据的版本号。该版本号用于充当乐观锁。
  8. aclVersion: 表示当前 znode 的权限 ACL 的版本号。该版本号用于充当乐观锁。
  9. ephemeralOwner: 若当前 znode 是持久节点,则其值为 0;若为临时节点,则其值为创建该节点的会话的 SessionID。当会话消失后,会根据 SessionID 来查找与该会话相关的临时节点进行删除。
  10. dataLength: 当前 znode 中存放的数据的长度。
  11. numChildren: 当前 znode 所包含的子节点的个数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值