Zookeeper配置参数详解

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/cb3faf8f/

Zookeeper配置参数详解

zookeeper的最小配置

最小配置是指Zookeeper运行所必须的配置,Zookeeper只要配置有这些项就可以正常的运行Zookeeper。

配置项 说明
clientPort 向外提供服务的端口号。换句话说,是给客户端连接的端口
dataDir ZooKeeper的数据目录,主要目的是存储内存数据库序列化后的快照路径。
如果没有配置事务日志(即dataLogDir配置项)的路径,那么ZooKeeper的事务日志也存放在数据目录中
tickTime 通知心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒,ZK基本上所有的时间都是这个时间的整数倍

zookeeper的其他配置项

一般选项

配置项 说明
dataLogDir 将事务日志存储在该路径下,比较重要,这个日志存储的设备效率会影响ZK的写吞吐量
maxClientCnxns 默认值是10,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击
clientPortAddress 指定为客户端提供服务的监听地址(ipv4/ipv6)。如果没有设置这个属性,则clientPort会绑定到所有IP地址上,否则只绑定到该设置的IP地址上
minSessionTimeout 客户端和服务端会话保持的最小超时时间,即最小的session time时间,默认值是2个tick time,客户端设置的session time 如果小于这个值,则会被强制协调为这个最小值
maxSessionTimeout 客户端和服务端会话保持的最大超时时间,即最大的session time 时间,默认值是20个tick time,客户端设置的session time 如果大于这个值,则会被强制协调为这个最大值
autopurge.snapRetainCount 该配置项指定开启了ZooKeeper的自动清理功能后(见下一个配置项),每次自动清理时要保留的版本数量。默认值为3,最小值也为3。它表示在自动清理时,会保留最近3个快照以及这3个快照对应的事务日志。其它的所有快照和日志都清理
autopurge.purgeInterval 指定触发自动清理功能的时间间隔,单位为小时,值为大于或等于1的整数,默认值为0,表示不开启自动清理功能
syncEnabled 指定观察者(observers)是否像follower一样,也记录事务日志和快照,以便在observers重启时能加速恢复。默认值为true,设置为false表示禁用该功能,不记录日志和快照
forceSync 默认值是yes, 表示transactionlog在commit时是否立即写到磁盘上,如果关闭这个选项可能会在断电时丢失信息
fsync.warningthresholdms 事务日志输出时,如果调用fsync方法超过此处指定的超时时间,那么会在日志中输出警告信息。默认是1000ms

集群选项

在配置ZooKeeper集群时可能用到的配置项

配置项 说明
electionAlg 指定leader选举算法。默认值为3,表示使用基于TCP的快速选举。在以前的版本中,还有0/1/2三种算法,它们都是基于UDP的,已经废弃了,以后的版本中会移除这三种算法
initLimit followers启动时需要连接leader,并从Leader处获取它所缺失的那部分数据,以便它能和leader的数据保持同步。只有保持了同步,该follower才被标记为ONLINE,然后才能提供服务。这个配置项限定从follower启动到恢复完成的超时时间。一般情况下,ZooKeeper保存的都是协调数据,数据量不会很大,但如果要同步的数据很大,可以考虑增大这个选项的值。注意,这个值依赖于tickTime时间单元,例如tickTime=2000,initLimit=2表示4秒
syncLimit follower和leader之间数据延迟的最大时间长度。例如,有个节点的更新操作缓慢,它的数据已经严重落后于leader,ZooKeeper就会将它从ZooKeeper集群中踢出去。ZooKeeper使用时间来度量follower和leader之间数据的延迟,这个选项的值依赖于tickTime,例如tickTime=2000,syncLimit=2表示follower比leader延迟了4秒
leaderServes 默认值为yes,表示leader也接受客户端的连接,接受来自客户端的读、写请求。leader的主要作用是协调ZooKeeper集群服务器节点间的写操作,如果想要获取更高的写吞吐量,可以将其设置为no,这样leader将不允许客户端的连接,它将专注于协调,但这会损失一点读吞吐量
cnxTimeout 在投票选举新的leader时,需要通过选举端口建立连接来发送通知信息。该配置项设置打开这个连接的超时时长。默认值为5
ipReachableTimeout 3.4.11版本中才引入的配置项。
ip地址可达超时时间,单位ms.当server配置使用域名时,且域名对于多个ip,默认情况直接使用该域名的第一个ip,不做是否可达检查。
如设置该值,将依次检查域名对于的ip是否可达,并使用最先可达的ip.如果都不可达,将无奈的使用第一个ip地址,此时该服务不可用。
是否可达校验使用Java API的InAddiaby.IsAccess(long TimeOutlook)方法
4lw.commands.whitelist 四字符命令系统白名单,开启指定命令,逗号分隔。
server.x=[hostname]:port_A:port_B X:整数。是ZooKeeper中服务器的一个简单标识。这个数值需要和dataDir下的myid文件内容一致。在启动ZooKeeper集群中的每个实例时,需要读取dataDir中的myid文件,并将该文件中的数值和配置文件中的server.X做匹配,匹配到哪个就表示是哪个ZooKeeper服务器节点。
tcpKeepAlive server之间的tcp链接是否为长连接,默认false
peerType 服务在集群集群中的角色,默认participant参与者, 可以设置为observer观察者
group.x=server1:server2… 用于将ZooKeeper集群中的服务器节点进行分组。如果没有使用group选项,则ZooKeeper默认将所有服务器节点归入一个默认组中
选取leader时的投票分组,每个group为一票,当组内服务器大多数投票时,group投票成功
x:分组id, 整数值
weight.y=N y:取自server.X中的X
N:为该服务器节点指定的权重值

蚂蚁再小也是肉🥩!


Zookeeper配置参数详解
http://heibanbai.com.cn/posts/cb3faf8f/
作者
黑伴白
发布于
2024年3月5日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付