Apache ZooKeeper使用指南

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

java -version

安装OpenJDK 1.8

yum install java-1.8.0-openjdk* -y
推荐目录规划*

ZooKeeper路径

/opt/apache-zookeeper-3.7.0-bin

zoo.cfg dataDir

dataDir=/var/data/zookeeper

单例模式

  官网原文:https://zookeeper.apache.org/doc/r3.7.0/zookeeperStarted.html

下载ZooKeeper

基于wget下载

wget --no-check-certificate https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

  由于没使用国内镜像链接进行下载,所以下载速度比较慢,可以采用其他方法自行下载。

解压tar.gz包

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
部署单例模式

  本案例以最简单的单例模式为例。

cd apache-zookeeper-3.7.0-bin
使用默认配置
cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
启动ZooKeeper实例
bin/zkServer.sh start

输出如下:

ZooKeeper JMX enabled by default
Using config: /root/desktop/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看ZooKeeper状态
bin/zkServer.sh status

输出如下:

ZooKeeper JMX enabled by default
Using config: /root/desktop/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
使用ZkCli进行访问
bin/zkCli.sh -server 127.0.0.1:2181
防火墙开放2181端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload

集群模式

节点规划
  • Node01 192.168.7.20
  • Node02 192.168.7.21
  • Node03 192.168.7.22
  • Node04 192.168.7.23
conf/zoo.cfg
## Cluster
server.1=192.168.7.20:2888:3888
server.2=192.168.7.21:2888:3888
server.3=192.168.7.22:2888:3888
server.4=192.168.7.23:2888:3888
配置myid
cd /opt/apache-zookeeper-3.7.0-bin
bin/zkServer-initialize.sh
touch /var/data/zookeeper/myid

  根据节点规划,设置不同的myid。

echo 1 > /var/data/zookeeper/myid

echo 2 > /var/data/zookeeper/myid

echo 3 > /var/data/zookeeper/myid

echo 4 > /var/data/zookeeper/myid
防火墙开放端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --reload
启动ZooKeeper实例
bin/zkServer.sh start

更多知识

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=/tmp/zookeeper
# 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

心跳间隔,默认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是干嘛的?*

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 = 0x100000005
ctime = Thu Jan 20 16:14:50 CST 2022
mZxid = 0x100000037
mtime = Thu Jan 20 17:04:38 CST 2022
pZxid = 0x100000005
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

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

启动软件

java -jar zookeeper-dev-ZooInspector.jar

kafkaUI-lite

  • 史上最轻便好用的kafka ui界面客户端工具,可以在生产消息、消费消息、管理topic、管理group;可以支持管理多个kafka集群
  • 部署简便,可以一键启动,不需要配置数据库、不需要搭建web容器
  • 支持zookeeper ui界面化操作;支持多环境管理
  • 支持redis ui界面化操作;支持多环境管理
  • 支持权限控制,可以自定义不同环境的新增、修改、删除权限;默认分配只读权限,避免用户的误操作

https://gitee.com/freakchicken/kafka-ui-lite

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zookeeper是一个分布式协调服务,常用于大型分布式系统中。以下是Zookeeper的安装和使用步骤: 1. 下载Zookeeper:你可以从Apache官方网站下载Zookeeper的安装包。确保选择与你的操作系统版本相对应的安装包。 2. 解压安装包:将下载的安装包解压到你想要安装的目录下。 3. 创建数据目录:在Zookeeper的安装目录下创建一个数据目录,用于存储Zookeeper的数据。 4. 配置Zookeeper:复制Zookeeper的默认配置文件,重命名为`zoo.cfg`。打开该文件,根据你的需求进行配置。其中,一些重要的配置项包括: - `dataDir`:Zookeeper数据目录的路径。 - `clientPort`:Zookeeper服务监听的端口,默认为2181。 - `tickTime`:Zookeeper中的基本时间单元,以毫秒为单位。 - `initLimit`和`syncLimit`:这两个参数用于配置Zookeeper中的leader选举过程。 5. 启动Zookeeper:通过命令行进入到Zookeeper的安装目录下,执行以下命令来启动Zookeeper: ``` bin/zkServer.sh start ``` 6. 验证Zookeeper是否运行:执行以下命令来验证Zookeeper是否成功启动: ``` bin/zkCli.sh ``` 如果成功连接到Zookeeper的命令行界面,则表示Zookeeper已经成功运行。 现在你已经安装并启动了Zookeeper。你可以使用Zookeeper提供的API来创建、管理和监控分布式应用程序。如果你需要更详细的使用指南,可以参考Zookeeper的官方文档或者其他相关资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值