赞
踩
带*号的内容可以直接跳过,不影响阅读。
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
检查是否安装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
基于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
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
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
bin/zkCli.sh -server 127.0.0.1:2181
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload
## 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
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
bin/zkServer.sh start
# 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
心跳间隔,默认2000毫秒。
ZooKeeperK集群中Leader和Follower之间的心跳间隔,来维护节点存活状态。
初始化限制 默认为10。
ZooKeeper集群中的Follower服务器与Leader服务器之间初始连接时能容忍的最多心跳数(tickTime的数量)。
同步限制,默认为5。
ZooKeeper集群中Leader和Follower之间的请求和答应最多能容忍的心跳数。
用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
推荐 /var/zookeeper
ZooKeeper对外提供的服务端口号,默认是2181端口。
当前ZooKeeper服务允许最大的客户端链接数。
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 文件))已经成为问题。请注意,此脚本确保数据目录仅存在,它不会创建配置文件,而是需要一个配置文件才能执行。
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子节点数量
下载链接
https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
启动软件
java -jar zookeeper-dev-ZooInspector.jar
https://gitee.com/freakchicken/kafka-ui-lite
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。