必填配置参数
clientPort
该端口监听客户端的连接。也就是说,客户端都会尝试连接该端口。
dataDir
该路径用于存储zookeeper内存数据库快照。除非有特殊设定,否则也会存储数据库更新的事物日志。事物日志的存放位置是很有讲究的。有一台专门用于存放事物日志的设备,可以产生持久的高性能。讲日志放在高负荷的设备上,会对性能产生副作用。
tickTime
一个心跳的长度,它是zookeeper毫秒级的一个基本时间单位。它用来设定心跳间隔和超时时间。例如,最小会话超时时间是两倍的心跳长度。
可选配置参数
dataLogDir
这个选项指定将事物日志存储于该路径,代替了dataDir。目的是可以用专门的设备来存储日志,这样可以避免日志和快照的资源竞争。有一个专门的日志存储设备,可以导致高的吞吐量和稳定性。我们更推荐使用一台专用日志设备并用dataLogDir在该设备上指定目录来存放日志,这样可以保证dataDir指定的目录不在该设备上(dataDir指定存放快照的目录,快照和日志会竞争资源)。
globalOutstandingLimit(java:zookeeper.globalOutstandingLimit)
客户端提交请求的速度可能会超过zookeeper处理请求的速度,尤其是存在大量的客户端。为了避免由于排队的请求导致的内存溢出,zookeeper将会对客户端进行限流,将请求的数量保持在globalOutstandingLimit以下。globalOutstandingLimit的默认值是1000。
preAllocSize(java:zookeeper.preAllocSize)
zookeeper将事务日志文件分割成preAllocSize kb大小的模块,这样可以避免查询带来的消耗。默认的模块大小是64M。当快照频繁产生时,我们可以肩上模块的大小来提高系统的效率(这段好难翻译,还不知道对不对)。
snapCount(java:zookeeper.snapCount)
zookeeper将所有事务记录到日志中。当记录了snapCount数量的事务后,会生成新的快照和事务日志文件。snapCount默认值是100000。
traceFile(Java:requestTraceFile)
如果使用该选项,我们会将请求记录在追踪文件中,并将其以traceFile.year.month.day格式命名。这个选项可以提供调试信息,但会影响性能。
maxClientCnxns
一个客户端的最大并发连接数(接口级别),每台客户端用IP地址区分,成为zookeeper总体中的一个成员(貌似翻译的不对)。它用来防止某些DoS攻击,包括文件描述符耗尽(不懂-_-||)。默认值是60。将其设定为0,则取消并发连接数的限制。
clientPortAddress
监听客户端连接的地址(ipv4,ipv6,hostname),也就是说,客户端会尝试连接该地址。可选配置,默认情况下,客户端都会连接到clientPort上(address,interface,nic)。
minSessionTimeout
最小会话超时时间(毫秒级),默认是2倍的tickTime。
maxSessionTimeout
最大会话超时时间(毫秒级),默认是20倍的tickTime。(在代码中会设置超时时间,但是必须在这里设定的最小与最大值之间,否则直接取最小/最大值)
fsync.warningthresholdms(java:fsync.warningthresholdms)
当日志中的fsync函数超出了该值的长度,就会在日志出输出警告信息。默认值是1000(毫秒级),是系统属性。
autopurge.snapRetainCount
当启用时,zookeeper将自动储存最近autopurge.snapRetainCount次的快照和事务日志,分别放在dataDir和dataLogDir中,其余部分将被删除。默认值是3,最小值是3。
autopurge.purgeInterval
设置该定时器,能定时触发净化任务(清理快照和日志),单位为小时,值为大于等于1的正整数,默认值是0。
集群选项
electionAlg
作用是实现选举。0是基于UDP的传统版本,1是基于未认证UDP的快速选举版本,2是基于已认证UDP的快速选举版本,3是基于TCP的快速选举版本。默认值是3。(0/1/2已经不建议使用,在下个版本准备取消)
initLimit
在心跳连接中,允许followers连接leader和与leader同步数据的时间。如果zookeeper管理的数据比较大,可以增加此值。
leaderServes(zookeeper.leaderServes)
leader接受客户端的连接。默认值是“yes”。leader主机的坐标更新。要实现使用很少的读取量而达到更高的更新量,leader可以不接受客户端的连接而是只专注于负载的均衡。默认值是“yes”,就是可以接受连接。(当集群中存在3台以上的zookeeper服务端时,推荐使用“no”)
server.x=[hostname]:nnnnn[:nnnnn],etc
配置的服务端组成zookeeper集群。集群启动时,将在配置的服务端上寻找myid文件。该文件包含服务器编号,于server.x中的x值相匹配。
每台zookeeper服务器都持有这个服务器列表,客户端必须根据这个列表进行连接。
配置中还存在两个端口号nnnnn。第一个端口号用于follower连接leader,第二个端口号用于leader的选举。当electionAlg=1,2,3时,选举端口是必要的。当=0时,不是必要的。加入想要在单机上测试集群,可以使用不同端口号来模拟。
syncLimit
在心跳连接中,允许followers同步zookeeper数据的时间。如果followers与leader长久失去连接,它将被丢弃。
group.x=nnnnn[:nnnnn]
实现一个分层的法定人数的构造。“x”是组的标识,“=”后边是服务器的标识。
例:group.2=4:5:6
group.3=7:8:9
weight.x=nnnnn[:nnnnn]
要与group搭配使用,为服务器设置一个比重。这个比重就是选举投票时一台服务器的比重。group.1=1:2:3
例:weight.1=1
weight.2=1
weight.3=1
weight.4=1
weight.5=1
weight.6=1
weight.7=1
weight.8=1
weight.9=1
cnxTimeout
leader选举的超时时间,electionAlg=3时才起作用。默认值是5秒。
原文地址:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html