Zookeeper服务器配置项详解

文章转自:算法

http://www.bug315.com/article/159.htm数据库

http://www.bug315.com/article/160.htm安全

Zookeeper是经过一个***.cfg配置文件来进行配置管理的,默认使用zoo.cfg文件进行配置。下面咱们将仔细介绍Zookeeper的配置项及该配置项的主要做用。服务器

 

1、ZK的最小配置网络

最小配置是指Zookeeper运行所需的最小配置,Zookeeper只须要配置这些项就能够正常的运行Zookeeper。session

clientPortide

配置ZK监听客户端链接的端口spa

 

dataDir日志

内存数据库快照存放地址,若是没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不一样的设备上。code

 

tickTime

心跳基本时间单位,毫秒级,ZK基本上全部的时间都是这个时间的整数倍。

 

2、ZK的高级配置(可选)

高级配置是指有的须要直接经过系统属性进行设置)

dataLogDir

将事务日志存储在该路径下,比较重要,这个日志存储的设备效率会影响ZK的写吞吐量。

 

globalOutstandingLimit

(Java system property: zookeeper.globalOutstandingLimit)默认值是1000,限定了全部链接到服务器上可是尚未返回响应的请求个数(全部客户端请求的总数,不是链接总数),这个参数是针对单台服务器而言,设定太大可能会致使内存溢出。

 

preAllocSize

(Java system property: zookeeper.preAllocSize)默认值64M,以KB为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4K时,就会又分配64M,如此循环。若是SNAP作得比较频繁(snapCount比较小的时候),那么请减小这个值。

 

snapCount

(Java system property: zookeeper.snapCount)默认值100,000,当transaction每达到snapCount/2+rand.nextInt(snapCount/2)时,就作一次SNAPSHOT,默认状况下是50,000~100,000条transactionlog就会作一次,之因此用随机数是为了不全部服务器可能在同一时间作snapshot.

 

traceFile (Java system property: requestTraceFile)

 

maxClientCnxns

默认值是10,一个客户端可以链接到同一个服务器上的最大链接数,根据IP来区分。若是设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。

 

clientPortAddress

与clientPort匹配,表示某个IP地址,若是服务器有多个网络接口(多个IP地址),若是没有设置这个属性,则clientPort会绑定到全部IP地址上,不然只绑定到该设置的IP地址上。

 

minSessionTimeout

最小的session time时间,默认值是2个tick time,客户端设置的session time 若是小于这个值,则会被强制协调为这个最小值。

 

maxSessionTimeout

最大的session time 时间,默认值是20个tick time. ,客户端设置的session time 若是大于这个值,则会被强制协调为这个最大值。

 

3、ZK的集群配置选项

electionAlg

领导选举算法,默认是3(fast leader election,基于TCP),0表示leader选举算法(基于UDP),1表示非受权快速选举算法(基于UDP),2表示受权快速选举算法(基于UDP),目前1和2算法都没有应用,不建议使用,0算法将来也可能会被干掉,只保留3(fast leader election)算法,所以最好直接使用默认就好。

 

initLimit

tickTime的个数,表示在leader选举结束后,followers与leader同步须要的时间,若是followers比较多或者说leader的数据灰常多时,同步时间相应可能会增长,那么这个值也须要相应增长。固然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)

 

syncLimit

tickTime的个数,这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕以后,进入正常请求转发或ping等消息交互时的超时时间。

 

leaderServes

(Java system property: zookeeper.leaderServes)  若是该值不是no,则表示该服务器做为leader时是须要接受客户端链接的。为了得到更高吞吐量,当服务器数三台以上时通常建议设置为no。

 

cnxTimeout 

(Java system property: zookeeper.cnxTimeout) 默认值是5000,单位ms 表示leaderelection时打开链接的超时时间,只用在算法3中。

 

4、ZK的不安全配置项

skipACL

(Java systemproperty: zookeeper.skipACL) 默认值是no,忽略全部ACL检查,至关于开放了全部数据权限给任何人。

 

forceSync

(Java systemproperty: zookeeper.forceSync) 默认值是yes, 表示transactionlog在commit时是否当即写到磁盘上,若是关闭这个选项可能会在断电时丢失信息。

 

jute.maxbuffer

(Java system property: jute.maxbuffer)默认值0xfffff,单位是KB,表示节点数据最多1M。若是要设置这个值,必需要在全部服务器上都须要设置。

受权认证配置项

 

DigestAuthenticationProvider.superDigest

(Java system property only: zookeeper.DigestAuthenticationProvider.superDigest)   设置这个值是为了肯定一个超级用户,它的值格式为

super:<base64encoded(SHA1(idpassword))> ,一旦当前链接addAuthInfo超级用户验证经过,后续全部操做都不会checkACL.

相关文章
相关标签/搜索