文章目录
概述
ZooKeeper 是分布式应用程序的高性能协调服务。它在一个简单的界面中公开了常用服务,例如命名、配置管理、同步和组服务,因此可以不必从头开始编写它们。可以现成地使用它来实现共识、组管理、领导者选举和存在协议,也可以根据自己的特定需求在此基础上进行构建。
下载
可以在Zookeper官网下载页下载zookeeper,这里有最新的zk发布包。
我这里下载是3.6.3版本,是截止到这篇博文发布前最稳定版本,下载链接为https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
安装
- 下载完成之后解压下载的压缩包到自己电脑盘符下,我这里是在D:\zookeeper下解压的,解压后根目录为D:\zookeeper\zookeeper-3.6.3
- 解压后进入conf文件夹下面,把zoo_sample.cfg复制一份并改名为zoo.cfg,zoo.cfg是zookeeper配置文件入口。
- 在根目录下新建一个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
这样,单机版就完成了。
集群版
集群版就像对麻烦一点了,这里的集群还是伪集群,真正实现集群的操作跟单机版的伪集群差不多,只不过是操作不同的服务器而已。
步骤如下:
- 修改配置文件:找到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所在服务器的IP
port1: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
- 添加myid文件 myid文件代表着该zookeeper服务器的id文件,内容也很简单,就是一个名为myid的文件,文件内容就只有一个上面所说的id。 在Windows系统中,创建一个名为myid的文本文件,然后输入一个id,最后删除文件后缀,不要任何后缀,否则会启动会报myid找不到异常。 myid文件所在的路径就是配置文件中dataDir指定的路径下。
- 集群复制多份,将上述配置好的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=8081messageTracker.Enabled=true
# 日志审核
audit.enable=true
# 集群配置
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
- 启动集群, 分别到对应zookeeper集群的文件夹下双击zkServer.cmd批处理命令,出现以下日志则代表成功
2022-02-1016: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-1016: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-1016: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:port2 id:分配给host的id,需要在myid文件中指定,id 必须介于 1 和 254 之间 host:zookeeper所在服务器的IP port1:Zookeeper服务器之间的通信端口 port2:Leader选举的端口
更多配置请查看官网
能力一般,水平有限,如有错误,请多指出。
如果对你有用点个关注给个赞呗
版权归原作者 码猿笔记 所有, 如有侵权,请联系我们删除。