Apache ZooKeeper使用指南

文章目录

  • 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

??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进行处理,非常感谢!

上一篇 2022年1月15日
下一篇 2022年1月15日

相关推荐