文章目录
- Apache ZooKeeper使用指南
-
- 部署指南
-
- 软件环境
-
- 检查JAVA
- 推荐目录规划*
- 单例模式
-
- 下载ZooKeeper
- 部署单例模式
- 使用默认配置
- 启动ZooKeeper实例
- 查看ZooKeeper状态
- 使用ZkCli进行访问
- 防火墙开放2181端口
- 集群模式
-
- 节点规划
- conf/zoo.cfg
- 配置myid
- 防火墙开放端口
- 启动ZooKeeper实例
- 更多知识
-
- zoo.cfg配置讲解
-
- tickTime
- initLimit
- syncLimit
- dataDir
- clientPort
- maxClientCnxns
- zkServer-initialize.sh是干嘛的/li>
- stat path命令详解
- 可视化工具
-
- ZooInspector
- kafkaUI-lite
Apache ZooKeeper使用指南
带* 的内容可以直接跳过,不影响阅读。
Apache ZooKeeper 官 :
??https://zookeeper.apache.org/
Apache ZooKeeper r3.7.0原版文档:
??https://zookeeper.apache.org/doc/r3.7.0/index.html
Apache ZooKeeper r3.5.6中文文档:
??https://www.docs4dev.com/docs/zh/zookeeper/r3.5.6/reference/
部署指南
??如果你只想简单启动ZooKeeper进行API学习,推荐我之前的一篇博客《Centos7环境下安装ZooKeeper单例模式》。
??ZooKeeper支持高可用,所以部署分为单例模式和集群模式。接下来将在Centos7环境下分别介绍ZooKeeper单例和集群的构建过程。
软件环境
操作系统: CentOS Linux release 7.9.2009
JAVA: OpenJDK 1.8.0_312
Zookeeper: ZooKeeper-3.7.0
检查JAVA
检查是否安装JRE
安装OpenJDK 1.8
推荐目录规划*
ZooKeeper路径
zoo.cfg dataDir
单例模式
??官 原文:https://zookeeper.apache.org/doc/r3.7.0/zookeeperStarted.html
下载ZooKeeper
基于wget下载
??由于没使用国内镜像链接进行下载,所以下载速度比较慢,可以采用其他方法自行下载。
解压tar.gz包
部署单例模式
??本案例以最简单的单例模式为例。
使用默认配置
启动ZooKeeper实例
输出如下:
查看ZooKeeper状态
输出如下:
使用ZkCli进行访问
防火墙开放2181端口
集群模式
节点规划
- Node01 192.168.7.20
- Node02 192.168.7.21
- Node03 192.168.7.22
- Node04 192.168.7.23
conf/zoo.cfg
配置myid
??根据节点规划,设置不同的myid。
防火墙开放端口
启动ZooKeeper实例
更多知识
zoo.cfg配置讲解
tickTime
心跳间隔,默认2000毫秒。
ZooKeeperK集群中Leader和Follower之间的心跳间隔,来维护节点存活状态。
initLimit
初始化限制 默认为10。
ZooKeeper集群中的Follower服务器与Leader服务器之间初始连接时能容忍的最多心跳数(tickTime的数量)。
syncLimit
同步限制,默认为5。
ZooKeeper集群中Leader和Follower之间的请求和答应最多能容忍的心跳数。
dataDir
用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
推荐 /var/zookeeper
clientPort
ZooKeeper对外提供的服务端口 ,默认是2181端口。
maxClientCnxns
当前ZooKeeper服务允许最大的客户端链接数。
zkServer-initialize.sh是干嘛的/h3>
https://www.docs4dev.com/docs/zh/zookeeper/r3.5.6/reference/zookeeperAdmin.html
https://www.docs4dev.com/docs/zh/zookeeper/r3.5.6/reference/zookeeperAdmin.html
??3.5 中的新增功能: ZooKeeper 服务器的默认行为是在启动时自动创建数据目录(在配置文件中指定),如果该目录尚不存在。在某些情况下,这可能会带来不便,甚至是危险。以正在运行的服务器的配置更改为例,其中 dataDir 参数被意外更改。当 ZooKeeper 服务器重新启动时,它将创建一个不存在的目录并开始提供服务-带有一个空的 znode 命名空间。这种情况可能导致有效的“裂脑”情况(即新无效目录和原始有效数据存储区中的数据)。因此,最好选择一个选项来关闭此自动创建行为。通常,对于生产环境,应该这样做,但是不幸的是,此时默认的旧行为无法更改,因此必须视具体情况进行更改。这留给用户和 ZooKeeper 发行版的打包者。
??当运行 zkServer.sh 时,可以通过将环境变量 ZOO_DATADIR_AUTOCREATE_DISABLE 设置为 1 来禁用自动创建。当直接从类文件运行 ZooKeeper 服务器时,可以通过设置 **zookeeper.datadir.autocreate = false 来实现.在 Java 命令行上,即 -Dzookeeper.datadir.autocreate = false **
??当禁用此功能,并且 ZooKeeper 服务器确定所需的目录不存在时,它将生成错误并拒绝启动。
??提供了一个新脚本 zkServer-initialize.sh 以支持此新功能。如果禁用了自动创建,则用户必须首先安装 ZooKeeper,然后创建数据目录(可能还有 txnlog 目录),然后启动服务器。否则,如前一段所述,服务器将无法启动。运行 zkServer-initialize.sh 将创建所需的目录,并可选地设置 myid 文件(可选的命令行参数)。即使不使用自动创建功能本身,也可以使用此脚本,并且该脚本可能已被用户使用,因为过去(用户设置(包括创建 myid 文件))已经成为问题。请注意,此脚本确保数据目录仅存在,它不会创建配置文件,而是需要一个配置文件才能执行。
stat path命令详解
czxid
引起这个znode创建的zxid,创建节点的事务的zxid
ctime
znode被创建的毫秒数(从1970年开始)
mzxid
znode最后更新的zxid
mtime
znode最后修改的毫秒数(从1970年开始)
pZxid
znode最后更新的子节点zxid
cversion
znode子节点变化 ,znode子节点修改次数
dataversion
znode数据变化
aclVersion
znode访问控制列表的变化
ephemeralOwner
如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0
dataLength
znode的数据长度
numChildren
znode子节点数量
可视化工具
ZooInspector
下载链接
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
启动软件
kafkaUI-lite
- 史上最轻便好用的kafka ui界面客户端工具,可以在生产消息、消费消息、管理topic、管理group;可以支持管理多个kafka集群
- 部署简便,可以一键启动,不需要配置数据库、不需要搭建web容器
- 支持zookeeper ui界面化操作;支持多环境管理
- 支持redis ui界面化操作;支持多环境管理
- 支持权限控制,可以自定义不同环境的新增、修改、删除权限;默认分配只读权限,避免用户的误操作
https://gitee.com/freakchicken/kafka-ui-lite
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93644 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!