Zookeeper配置参数详解
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/
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付