Zookeeper Windows 安装配置(单机 – 集群)

官网下载

官网地址:Apache ZooKeeper[1]

Zookeeper Windows 安装配置(单机 - 集群)
image.png

选择当前稳定版本下载,我们可以看到有如下两个选项

Apache ZooKeeper 3.8.4 (asc, sha 512):不带源码

Apache ZooKeeper 3.8.4 Source Release (asc, sha 512):带源码的安装包,对源码感兴趣的可以下载此版本

Zookeeper Windows 安装配置(单机 - 集群)
image.png

本次我们选择不含源码版本,之后解压压缩包即可

更改配置

进入到解压后的安装目录下,新增两个文件夹,一个命名为 data ,一个命名为 log

找到解压目录下的 conf 目录,将目录中的 zoo_sample.cfg 文件,复制一份,重命名为 zoo.cfg

修改 zoo.cfg 配置文件,将默认的 dataDir=/tmp/zookeeper 修改成 zookeeper 安装目录所在的 data 文件夹,修改如下

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin\data
dataLogDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin\log

启动服务端

进入安装目录下的 bin 目录,双击 zkServer.cmd 启动

Zookeeper Windows 安装配置(单机 - 集群)
image.png

启动客户端

双击 zkCli.cmd 启动

Zookeeper Windows 安装配置(单机 - 集群)
image.png

启动之后可以看到 data 和 log 文件夹下均生成了 version-2 文件夹,即可启动成功

注意问题

zk 启动会占用 8080 端口,如果其他项目占用该端口则会启动失败,建议添加配置 admin.serverPort=端口号,以此修改端口

遇到闪退问题可能是 data 路径配置错误,或是没有配置好 JDK 环境和 Java 环境变量

集群配置

上述为单机启动,也可以设置集群启动,这里条件有限使用的是伪集群

我们将上述安装目录复制三份,如下

Zookeeper Windows 安装配置(单机 - 集群)
image.png

配置 zoo.cfg

然后分别配置三个 zk 的 zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5

dataDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-1\data
dataLogDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-1\log

clientPort=2181

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
tickTime=2000
initLimit=10
syncLimit=5

dataDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-2\data
dataLogDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-2\log

clientPort=2182

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
tickTime=2000
initLimit=10
syncLimit=5

dataDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-3\data
dataLogDir=E:\Zookeeper\apache-zookeeper-3.8.4-bin-3\log

clientPort=2183

server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

关于 zoo.cfg 的配置进行说明:

①  在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,可以按照这样的格式进行配置,每一行都代表一个机器配置:server.id=host:port:port。其中,id 被称为  Server ID,用来标识该机器在集群中的机器序列号。同时,在每台 Zookeeper 机器上,我们都需要在数据目录(即 dataDir 参数指定的那个目录)下创建一个 myid 文件,该文件只有一行内容,并且是一个数字,即对应于每台机器的 Server ID 数字。

第一个 port 用于指定 follower 与 leader 进行通信和数据同步所使用的 tcp 端口;第二个 port 指定 leader 选举中投票通信的 tcp 端口。

② 在 Zk 的设计中,集群中所有机器上的 zoo.cfg 文件的内容都应该是一致的。因此最好使用 svn 或是 Git 把此文件管理起来,确保每个机器都能共享到一份相同的配置。

③ myid 文件中只有一个数字,即一个 Server ID。例如,server.1 的 myid 文件内容就是”1″。注意,清确保每个服务器的 myid 文件中的数字不同,并且和自己所在机器的 zoo.cfg 中 server.id=houst:port:port 的 id 一致。另外,id 的范围是 1~255。

④ 参数的作用说明:

  1. tickTime:默认值为 3000,单位是毫秒(ms),可以不配置。参数 tickTime 用于配置 Zookeeper 中最小时间单元的长度,很多运行时的时间间隔都是使用 tickTime 的倍数来表示的。例如,Zk 中会话的最小超时时间默认是 2*tickTime。

  2. dataDir:该参数无默认值,必须配置。参数 dataDir 用于配置 Zookeeper 服务器存储快照文件的目录。

  3. clientPort:参数 clientPort 用于配置当前服务器对外的服务端口,客户端会通过该端口和 Zk 服务器创建连接,一般设置为 2181。

  4. initLimit:该参数默认值:10,表示是参数 tickTime 值的 10 倍,必须配置,且为正整数。该参数用于配置 Leader 服务器等待 Follower 启动,并完成数据同步的时间。Follower 服务器在启动过程中,会与 Leader 建立连接并完成对数据的同步,从而确定自己对外提高服务的起始状态。leader 服务器允许 Follower 在 initLimit 时间内完成这个工作。

  5. syncLimit:该参数默认值:5,表示是参数 tickTime 值的 5 倍,必须配置,且为正整数。该参数用于配置 Leader 服务器和 Follower 之间进行心跳检测的最大延时时间。在 Zk 集群运行的过程中,Leader 服务器会与所有的 Follower 进行心跳检测来确定该服务器是否存活。如果 Leader 服务器在 syncLimit 时间内无法获取到 Follower 的心跳检测响应,那么 Leader 就会认为该 Follower 已经脱离了和自己的同步。

  6. server.id:该参数无默认值,在单机模式下可以不配置。该参数用于配置组成 Zk 集群的机器列表,其中 id 即为 Server ID,与每台服务器 myid 文件中的数字相对应。同时,在该参数中,会配置两个端口:第一个端口用于指定 Follower 服务器与 Leader 进行运行时通信和数据同步时所使用的端口,第二个端口测专门用于进行 Leader 选举过程中的投票通信。

创建 myid

分别在三个 zk 安装目录下的 data 目录下创建 myid 文件,然后在该文件第一行填上对应的数字

E:\Zookeeper\apache-zookeeper-3.8.4-bin-1\data 创建值为"1"的myid文件
E:\Zookeeper\apache-zookeeper-3.8.4-bin-2\data 创建值为"2"的myid文件
E:\Zookeeper\apache-zookeeper-3.8.4-bin-3\data 创建值为"3"的myid文件

启动集群

分别启动三个 zk 的 zkServer.cmd(未全部启动会出现报错,原因是心跳检测失败,全部启动即可)

方便起见也可以使用如下 bat 脚本启动全部节点

start call E:\Zookeeper\apache-zookeeper-3.8.4-bin-1\bin\zkServer.cmd
start call E:\Zookeeper\apache-zookeeper-3.8.4-bin-2\bin\zkServer.cmd
start call E:\Zookeeper\apache-zookeeper-3.8.4-bin-3\bin\zkServer.cmd

客户端连接测试

zkCli.cmd -server 127.0.0.1:2181
# 当然连接 2182,2183 也可以

节点可视化

查看 zookeeper 上的节点信息时,输命令很麻烦,可以使用常用的可视化的客户端 zooinspector

zooinspector 仓库:zzhang5/zooinspector: An improved zookeeper inspector (github.com)[2]

参考链接

  • Windows 下 Zookeeper 安装使用 – 简书 (jianshu.com)[3]
  • Windows 安装 Zookeeper 详细步骤_windows 安装 zookeeper[4]
  • Windows 下安装 ZooKeeper-阿里云开发者社区 (aliyun.com)[5]
  • Windows 安装 Zookeeper – codedot – 博客园 (cnblogs.com)[6]

参考资料

[1]

Apache ZooKeeper: https://zookeeper.apache.org/index.html

[2]

zzhang5/zooinspector: An improved zookeeper inspector (github.com): https://github.com/zzhang5/zooinspector

[3]

Windows 下 Zookeeper 安装使用 – 简书 (jianshu.com): https://www.jianshu.com/p/0447ab3dfd5b

[4]

Windows 安装 Zookeeper 详细步骤_windows 安装 zookeeper: https://blog.csdn.net/wxw1997a/article/details/119998932

[5]

Windows 下安装 ZooKeeper-阿里云开发者社区 (aliyun.com): https://developer.aliyun.com/article/879449

[6]

Windows 安装 Zookeeper – codedot – 博客园 (cnblogs.com): https://www.cnblogs.com/myitnews/p/13739514.html


原文始发于微信公众号(编程杂烩):Zookeeper Windows 安装配置(单机 – 集群)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/251193.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!