前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zookeeper 集群搭建及使用

zookeeper 集群搭建及使用

作者头像
用户3147702
发布2022-06-27 12:34:57
2220
发布2022-06-27 12:34:57
举报
文章被收录于专栏:小脑斧科技博客

1. 概述

本文我们来介绍一下 zookeeper 的常用用法。

2. 配置

下面是一个常见的 zookeeper 配置文件:

代码语言:javascript
复制
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=5
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=2
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper/zk1
#zk log dir
logDir=/tmp/zookeeper/zk1/logs
# 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
#
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

这里使用了下列配置:

  • tickTime — zookeeper 服务器之间或客户端与服务器之间的心跳间隔时间,每 tickTime 发一次心跳
  • dataDir — zookeeper 保存数据的目录,写数据的日志文件也保存在这里,dataDir 需要手动创建,并在目录中创建相应的 myid 文件,文件内容为当前 Server 编号,zookeeper 由此知道自己是配置中的哪个 server
  • clientPort — 客户端连接 zookeeper 服务的端口,zookeeper 监听在这个端口上接受客户端请求
  • initLimit — Leader接受Follower初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
  • syncLimit — 表示Leader与Follower之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是2*2000=4秒
  • server.A=B:C:D — 其中A是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C表示的是这个服务器与集群中的Leader服务器交换信息的端口;D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口

3. 搭建伪集群

我们创建另外两个配置文件:

代码语言:javascript
复制
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/tmp/zookeeper/zk2
logDir=/tmp/zookeeper/zk2/logs
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
代码语言:javascript
复制
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/tmp/zookeeper/zk3
logDir=/tmp/zookeeper/zk3/logs
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

然后运行建立三个 dataDir 和 logDir(由于我们的 logDir 都是 dataDir 的子目录,所以用一个命令可以创建全部):

代码语言:javascript
复制
mkdir -p /tmp/zookeeper/zk1/logs /tmp/zookeeper/zk2/logs /tmp/zookeeper/zk3/logs

启动三个 zkServer:

代码语言:javascript
复制
./bin/zkServer.sh start conf/zk1.cfg
./bin/zkServer.sh start conf/zk2.cfg
./bin/zkServer.sh start conf/zk3.cfg

此时,通过 status 命令,可以查看节点状态:

代码语言:javascript
复制
./bin/zkServer.sh status conf/zk1.cfg

如图所示,节点都已经存活,而 zk2 是 Leader,其他两个 Server 是 Follower:

4. 连接集群

如下图所示,以 -server 参数运行 bin 目录下的 zkCli 即可连接到指定的 Server:

5. zookeeper 的指令

zookeeper 是以类似于文件系统的 path 作为单位工作的,他拥有下列指令,在 client 中输入 help 指令可以查看:

zookeeper client 常用指令

指令

意义

ls path [watch]

查看 path 下包含的内容,如果使用可选参数 watch,则会在节点内容发生变化时通知 client

ls2 path [watch]

查看当前节点数据并能看到更新次数等数据

stat path [watch]

查看 path 状态,如果使用可选参数 watch,则会在节点状态发生变化时通知 client

printwatches on|off

是否开启、关闭 watch 内容变更的打印

delete path [version]

删除 path

get path [watch]

得到一个节点,包含数据和更新次数等数据

create [-s] [-e] path data acl

创建 znode

addauth scheme auth

增加权限认证

sync path

同步 path

set path data [version]

为 path 设置数据

setquota -n|-b val path

quota 用来设置节点个数和空间大小限制,-n 用来限制个数,-b 用来限制大小(znode 字节数)

listquota path

列出 quota 限制

delquota [-n|-b] path

接触 quota 限制

setAcl path acl

访问权限控制,只限制当前 path,不支持递归

getAcl path

获取访问权限

redo cmdno

重新执行指令

history

指令执行历史

close

关闭连接

quit

退出 client

connect host:port

连接 server

通过这些指令,就可以模拟各种分布式集群工作了,虽然使用简单,但是将这些简单的指令加以组合,将会实现非常强大的功能,比如著名的消息队列 kafka、nosql 存储引擎 hbase、分布式架构 hadoop 都是使用 zookeeper。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 配置
  • 3. 搭建伪集群
  • 4. 连接集群
  • 5. zookeeper 的指令
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档