隐藏

在Windows系统上安装zookeeper

发布:2022/6/17 16:25:27作者:管理员 来源:本站 浏览次数:1294

概述

ZooKeeper 是分布式应用程序的高性能协调服务。它在一个简单的界面中公开了常用服务,例如命名、配置管理、同步和组服务,因此可以不必从头开始编写它们。可以现成地使用它来实现共识、组管理、领导者选举和存在协议,也可以根据自己的特定需求在此基础上进行构建。

下载

可以在Zookeper官网下载页下载zookeeper,这里有最新的zk发布包。我这里下载是3.6.3版本,是截止到这篇博文发布前最稳定版本,下载链接为https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

安装

  1. 下载完成之后解压下载的压缩包到自己电脑盘符下,我这里是在D:\zookeeper下解压的,解压后根目录为D:\zookeeper\zookeeper-3.6.3

  2. 解压后进入conf文件夹下面,把zoo_sample.cfg复制一份并改名为zoo.cfg,zoo.cfg是zookeeper配置文件入口。

  3. 在根目录下新建一个data文件夹,用于存储内存数据库快照, 修改配置文件,将dataDir属性修改为自定义的data路径下,dataDir=D:/zookeeper/zookeeper-3.6.3/data,「注意」:路径分隔符要用反斜杠 「/」这样配置就基本结束了,接下来就是启动了,启动分为两种,单机版和集群版

单机版

zookeeper的启动命令都在bin目录下,进入bin目录下,*.cmd是Windows版本的命令,*.sh 是Linux的命令。找到zkServer.cmd,

双击启动,看到如下窗口,不闪退,不报错就是启动成功了也可以通过,双击客户端zkCli.cmd批处理命令来验证server是否启动成功。看到如下红框的内容则server启动成功或者在配置文件中开启日志审核功能,audit.enable=true在根目录下的logs文件夹下找到zookeeper_audit.log文件,看到如下结果则server启动成功审核日志是3.6.0 中的新功能:默认情况下禁用审核日志。设置为“true”以启用它,有关日志审核可以查看https://zookeeper.apache.org/doc/r3.6.3/zookeeperAuditLogs.html

这样,单机版就完成了。

集群版

集群版就像对麻烦一点了,这里的集群还是伪集群,真正实现集群的操作跟单机版的伪集群差不多,只不过是操作不同的服务器而已。步骤如下:

  1. 修改配置文件:找到zoo.cfg配置文件,在文件最后加上
# 集群配置 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890 

配置介绍:集群配置节点是server.id=host:port1:port2形式,id:分配给host的id,需要在myid文件中指定,id 必须介于 1 和 254 之间host:zookeeper所在服务器的IPport1:Zookeeper服务器之间的通信端口port2:Leader选举的端口从 ZooKeeper 3.6.0 开始,可以为每个 ZooKeeper 服务器 指定多个地址形如:

server.1=zoo1-net1:2888:3888|zoo1-net2:2889:3889 server.2=zoo2-net1:2888:3888|zoo2-net2:2889:3889 server.3=zoo3-net1:2888:3888|zoo3-net2:2889:3889 
  1. 添加myid文件myid文件代表着该zookeeper服务器的id文件,内容也很简单,就是一个名为myid的文件,文件内容就只有一个上面所说的id。在Windows系统中,创建一个名为myid的文本文件,然后输入一个id,最后删除文件后缀,不要任何后缀,否则会启动会报myid找不到异常。myid文件所在的路径就是配置文件中dataDir指定的路径下。


  1. 集群复制多份,将上述配置好的zookeeper复制两份,并修改每个配置文件中的clientPort、dataDir和admin.serverPort属性,还有myid中的数值。clientPort:客户端连接Zookeeper服务器的端口。Zookeeper会监听这个端口,接受客户端的访问请求。admin.serverPort:嵌入式 Jetty 服务器监听的端口,默认为 8080。AdminServer是3.5.0 中新添加的功能,更多可以查看https://zookeeper.apache.org/doc/r3.6.3/zookeeperAdmin.html#sc_adminserver

配置文件:

tickTime=2000 initLimit=10 syncLimit=5 dataDir=D:/zookeeper/zookeeper-3.6.3/data dataLogDir=D:/zookeeper/zookeeper-3.6.3/logs clientPort=2181 maxClientCnxns=60 # 嵌入式 Jetty 服务器监听的端口。默认为 8080 admin.serverPort=8081 messageTracker.Enabled=true # 日志审核 audit.enable=true # 集群配置 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890 
  1. 启动集群, 分别到对应zookeeper集群的文件夹下双击zkServer.cmd批处理命令,出现以下日志则代表成功
2022-02-10 16:55:41,612 [myid:1] - INFO  [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@864] - Peer state changed: following - broadcast 2022-02-10 16:55:49,084 [myid:3] - INFO  [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2183)(secure=disabled):QuorumPeer@864] - Peer state changed: following - broadcast 

或者

2022-02-10 16:55:41,611 [myid:2] - INFO  [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2182)(secure=disabled):QuorumPeer@864] - Peer state changed: leading - broadcast 

可以看到三个zookeeper服务器,一个leader,两个following。

配置介绍

  • tickTime:心跳时间,单位毫秒,默认2000。zookeeper最小的会话超时时间是2个tickTime。
  • initLimit: follower连接和同步leader的超时时间,以tickTime为单位,默认10,也就是说10*tickTime时间之后客户端还没连接到服务器,则客户端连接失败。如果 ZooKeeper 管理的数据量很大,则根据需要增加此值。
  • syncLimit:follower连接和同步leader的超时时间,这个时间是leader向follower发送心跳之后,如果在syncLimit时间内没有收到follower的回信,表示follower掉线了。以tickTime为单位
  • dataDir:用于存储内存数据库快照的路径
  • dataLogDir:允许配置使用专用的日志设备,并有助于避免日志记录和快照之间的竞争。拥有专用日志设备对吞吐量和稳定延迟有很大影响。强烈建议专用日志设备并将dataLogDir设置为指向该设备上的目录,然后确保将dataDir指向不在该设备上的目录。
  • clientPort:客户端连接Zookeeper服务器的端口。Zookeeper会监听这个端口,接受客户端的访问请求。
  • maxClientCnxns:通过 IP 地址限制单个客户端可以对 ZooKeeper 集合的单个服务器进行的并发连接数。用于防止某些类别的 DoS 攻击,包括文件描述符耗尽。默认值为 60。将此设置为 0 完全消除了对并发连接的限制。
  • admin.serverPort:嵌入式 Jetty 服务器监听的端口。默认为 8080
  • audit.enable:默认情况下禁用审核日志,默认值false。3.6.0 中的新功能
  • electionAlg:选举算法,0表示leader选举算法(基于UDP),1对应非认证的基于UDP的快速leader选举版本,2对应认证的基于UDP的快速leader选举版本,3对应基于TCP的快速leader版本选举。默认值是3。
  • autopurge.purgeInterval:Zookeeper服务端自动清除多余的日志和快照文件的周期,以小时为单位,设置正整数表示开启自动清除,默认0,不开启
  • server.id=host:port1:port2id:分配给host的id,需要在myid文件中指定,id 必须介于 1 和 254 之间host:zookeeper所在服务器的IPport1:Zookeeper服务器之间的通信端口port2:Leader选举的端口

更多配置请查看官网

能力一般,水平有限,如有错误,请多指出。如果对你有用点个关注给个赞呗更多文章可以关注一下我的微信公众号suncodernote