我报名参加了Goldstone Project Phase 1 Challenge——瓜分100,000奖池,这是我的……

我报名了Goldstone Project Phase 1 Challenge——瓜分100,000奖池,这是我的第10篇文章, 点击查看活动详情

Windows环境下安装

下载并安装

1.访问地址: https://zookeeper.apache.org/releases.html#download 下载所需的ZK版本,下载到本地并解压。

2.在解压目录下新建一个空的data文件夹和log文件夹

在这里插入图片描述

配置

复制conf目录下的zoo_sample.cfg文件,重命名为zoo.cfg

在这里插入图片描述

修改zoo.cfg配置文件,将dataDir=/tmp/zookeeper改为zookeeper安装目录所在的data文件夹,并添加配置添加数据日志

每个tick的毫秒数

滴答时间= 2000
# 初始的刻度数
# 同步阶段可以采取
初始化限制= 10
# 之间可以通过的刻度数
# 发送请求并获得确认
同步限制 = 5
# 存储快照的目录。
# 不要使用 /tmp 进行存储,这里的 /tmp 只是
# 示例清酒。
dataDir=D:\Development\apache-zookeeper- 3.6 .3-bin\data
dataLogDir=D:\Development\apache-zookeeper- 3.6 .3-bin\log
# 客户端连接的端口
客户端端口 = 2181
# 最大客户端连接数。
# 如果您需要处理更多客户,请增加此值
#maxClientCnxns= 60
#
# 请务必阅读维护部分
# 打开自动清除之前的管理员指南。
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# 在dataDir中保留的快照数量
#autopurge.snapRetainCount= 3
# 以小时为单位清除任务间隔
# 设置为“0”以禁用自动清除功能
#autopurge.purgeInterval= 1

指标提供者

https://prometheus.io 指标导出器

metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider

metricsProvider.httpPort= 7000

metricsProvider.exportJvmInfo=true

复制代码

启动

双击bin目录下的zkServer.cmd启动

在这里插入图片描述

新版zookeeper内置管理控制台,通过jetty启动,会占用8080端口

在这里插入图片描述

解决方案

1.修改端口

在zoo.cfg中增加 admin.serverPort=没有被占用的端口号
复制代码 admin.serverPort=8088
复制代码

2.修改启动脚本

在启动脚本中增加" -Dzookeeper.admin.enableServer= false " copy code “-Dzookeeper.admin.enableServer=false”
复制代码

Linux环境下安装

下载并安装

地址: zookeeper.apache.org/releases.ht…

wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
复制代码

解压动物园管理员

[ [电子邮件保护] conf] # tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
复制代码

改名

[ [电子邮件保护] conf] # mv tar -zxvf apache-zookeeper-3.7.0-bin zookeeper
复制代码

移动 zookeeper 位置

[ [电子邮件保护] conf] # cp zookeeper /usr/local/
复制代码

配置

修改 zoo_sample.cfg 文件

[ [电子邮件保护] conf] # cd /usr/local/zookeeper/conf
[ [电子邮件保护] conf] # mv zoo_sample.cfg zoo.cfg
复制代码

修改dataDir目录为真正的输出目录

每个tick的毫秒数

基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两个心跳时间

滴答时间= 2000
# 初始的刻度数
# 同步阶段可以采取
# 用于限制follower跟随者服务器必须连接到leader领导者服务器的时限
# 多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值
# 它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败
初始化限制= 10
# 之间可以通过的刻度数
# 发送请求并获得确认
# leader与follower之间发送消息,请求和应答时间长度。
# 如果follower在设置的时间内不能与leader进行通信,那么此follower将被丢弃。
同步限制 = 5
# 存储快照的目录。
# 不要使用 /tmp 进行存储,这里的 /tmp 只是
# 示例清酒。
#dataDir=/tmp/动物园管理员
#存储内存数据库快照的位置
dataDir=/usr/local/zookeeper/数据
# 客户端连接的端口
# 监听客户端连接的端口,默认是 2181
客户端端口 = 2181
# 最大客户端连接数。
# 如果您需要处理更多客户,请增加此值
#maxClientCnxns= 60
#
# 请务必阅读维护部分
# 打开自动清除之前的管理员指南。
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# 在dataDir中保留的快照数量
#autopurge.snapRetainCount= 3
# 以小时为单位清除任务间隔
# 设置为“0”以禁用自动清除功能
#autopurge.purgeInterval= 1

指标提供者

https://prometheus.io 指标导出器

metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider

metricsProvider.httpPort= 7000

metricsProvider.exportJvmInfo=true

复制代码

创建数据目录

[ [电子邮件保护] conf] # cd /usr/local/zookeeper/
[ [电子邮件保护] zookeeper] # mkdir 数据
复制代码

启动

注意:zookeeper需要依赖jdk环境

[ [电子邮件保护] bin] # cd /usr/local/zookeeper/bin
[ [电子邮件保护] bin] # ./zkServer.sh 启动
/usr/bin/java
ZooKeeper JMX 默认启用
使用配置:/usr/local/zookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始
[ [电子邮件保护] 垃圾桶] #
复制代码

查看启动状态

[ [电子邮件保护] bin] # ./zkServer.sh 状态
/usr/bin/java
ZooKeeper JMX 默认启用
使用配置:/usr/local/zookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:独立
复制代码

停止

[ [电子邮件保护] bin] # ./zkServer.sh 停止
复制代码

测试

[ [电子邮件保护] bin] # ./zkCli.sh -server 127.0.0.1:2181

[zk:127.0.0.1:2181(已连接)8] ls
ls [-s] [-w] [-R] 路径
复制代码

退出客户端

[zk: 127.0.0.1:2181(CONNECTED) 0] 退出
复制代码

搭建 Zookeeper 集群环境

搭建 Zookeeper 集群至少需要三台服务器,并且服务器之间的系统时间是一致的。三台服务器1个leader和2个follower

下载并安装

[ [电子邮件保护] zookeeper] # wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
复制代码

解压并重命名

[ [电子邮件保护] zookeeper] # tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz

[ [电子邮件保护] zookeeper] # mv apache-zookeeper-3.7.0-bin zookeeper
复制代码

配置

创建数据目录

[ [电子邮件保护] zookeeper] # cd zookeeper

[ [电子邮件保护] zookeeper] # mkdir 数据
复制代码

创建一个myid文件,填写每个节点的编号(node001 ==> 1),必须是唯一的。

[ [电子邮件保护] zookeeper] # cd 数据
[ [电子邮件保护] zookeeper] # vim myid

1
复制代码

配置 zoo.cfg

[ [电子邮件保护] zookeeper] # cd conf/

[ [电子邮件保护] zookeeper] # mv zoo_sample.cfg zoo.cfg

[ [电子邮件保护] zookeeper] # vim zoo.cfg
复制代码 # 每个tick的毫秒数
#心跳时间
滴答时间=2000
# 初始的刻度数
# 同步阶段可以采取
# 用于限制follower服务器必须连接到leaderleader服务器的时间段
# 允许其他服务器连接和初始化数据的心跳次数。如果 ZooKeeper 管理的数据很大,这个值应该相应增加
初始化限制=10
# 之间可以通过的刻度数
# 发送请求并获得确认
# 集群中leader和follower之间的最大响应时间单位
# 允许follower同步多少tickTimes,如果follower落后太远,会被丢弃。
同步限制=5
# 存储快照的目录。
# 不要使用 /tmp 进行存储,这里的 /tmp 只是
# 示例清酒。
# 修改数据存储路径
# 内存数据库快照的存储位置
dataDir=/usr/local/program/z​​ookeeper/data
# 客户端连接的端口
# 用于监听客户端连接的端口
客户端端口=2181
# 最大客户端连接数。
# 如果您需要处理更多客户,请增加此值
#maxClientCnxns=60
#
# 请务必阅读维护部分
# 打开自动清除之前的管理员指南。
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# 在dataDir中保留的快照数量
#autopurge.snapRetainCount=3
# 以小时为单位清除任务间隔
# 设置为“0”以禁用自动清除功能
#autopurge.purgeInterval=1

指标提供者

https://prometheus.io 指标导出器

metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider

metricsProvider.httpPort=7000

metricsProvider.exportJvmInfo=true

3 服务器的地址

服务器.A=B:C:D

添加集群配置

server.1=node001:2888:3888
server.2=node002:2888:3888
server.3=node003:2888:3888
复制代码 A :一个数字,表示是第几号服务器

B:服务器的地址

C:服务器Follower与集群中的Leader服务器交换信息的端口

D:万一集群中的Leader服务器挂了,需要一个端口来重新进行选举一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
复制代码

分发到其他节点

scp -r zookeeper node002:/usr/local/program/z​​ookeeper

scp -r zookeeper node003:/usr/local/program/z​​ookeeper
复制代码

修改分布式Zookeeper机器的myid号,分别为2、3

[ [电子邮件保护] zookeeper] # vim 数据/myid
2

[ [电子邮件保护] zookeeper] # vim 数据/myid
3
复制代码

启动集群

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 启动
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 启动
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 启动
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
启动 zookeeper ... 开始
复制代码

查看集群状态

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:领导者

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:追随者

[ [电子邮件保护] zookeeper] # bin/zkServer.sh 状态
ZooKeeper JMX 默认启用
使用配置:/usr/local/program/z​​ookeeper/bin/../conf/zoo.cfg
发现客户端端口:2181。客户端地址:localhost。客户端 SSL:错误。
模式:追随者
复制代码

查看进度

[ [电子邮件保护] hadoop] # jps
18946 QuorumPeerMain
19675 日元

[ [电子邮件保护] hadoop] # jps
21860 QuorumPeerMain
22095 日元

[ [电子邮件保护] hadoop] # jps
25607 日元
25547 日志节点
复制代码

常用命令

零知识操作

命令效果 zkServer.sh start/stop start/stop service zkCli.sh start/stop start/stop client zkServer.sh status 查看状态(leader/follower) bin/zkCli.sh 连接本机 zkCli.sh -server node001:2181连接其他zk服务器 status /zk 查看/zk节点的状态信息

创建节点 ZNode

命令效果 create /zk mydata 创建znode节点,永久+无序列号 create -e /zk mydata 创建临时znode create -s /zk mydata 创建顺序znode节点 create -e -s /zk mydata 创建临时顺序znode

节点ZNode的查询

命令效果 ls /zk 查看znode子节点列表 ls /zk watch 为节点的子节点变化事件注册监听 get /zk 获取znode数据 get /zk watch 为节点的数据内容变化事件注册监听

节点ZNode的修改和删除

命令效果 set /zk value set znode data delete /zk 只能删除没有子znode的znode rmr/zk 删除znode的znode,递归删除

数据信息字段

znode数据信息字段说明

cZxid = 0x1000fe0597c0002 节点创建的时候的zxid
# 导致创建此 znode 的更改的 zxid。

ctime = Fri Dec 02 16: 41: 50 PST 2022 节点创建的时间
# 从创建这个 znode 的纪元开始的时间,以毫秒为单位。

mZxid = 0x1000fe0597c0002 节点修改的时候的zxid,与子节点的修改无关
# 上次修改这个 znode 的变更的 zxid。

mtime = Fri Dec 02 16: 41: 50 PST 2022 节点的修改的时间
# 上次修改此 znode 的时间(以毫秒为单位)。

pZxid = 0x1000fe0597c0002 和子节点的创建/删除对应的zxid,和修改无关,和孙子节点无关
# 最后修改此 znode 子节点的更改的 zxid。

cversion = 0 子节点的更新次数
# 这个znode子节点的变化次数。

dataVersion = 0 节点数据的更新次数
# 这个znode的数据变化的次数。

aclVersion = 0 节点(ACL)的更新次数
# 这个znode的ACL的修改次数。

ephemeralOwner = 0x0 如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的
session id. 如果该节点不是ephemeral节点, ephemeralOwner值为 0
# 如果 znode 是临时节点,则该 znode 所有者的会话 id。
如果它不是临时节点,它将为零。

dataLength = 6 节点数据的字节数
# 这个znode的数据字段的长度。

numChildren = 0 子节点个数,不包含孙子节点
# 这个znode的子节点数。
复制代码

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议。转载请附上原文出处链接和本声明。

这篇文章的链接: https://homecpp.art/0020/9521/1013

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38156/56562011

posted @ 2022-09-20 11:57  哈哈哈来了啊啊啊  阅读(58)  评论(0)    收藏  举报