zookeeper配置文件zoo.cfg详细讲解

zookeeper 的配置文件是位于conf/zoo.cfg。不过这个文件安装包中,并没有直接给出,而是给出一个zoo_sample.cfg 的sample文件。所以在配置前先要copy一份并重命名。
# cp zoo_sample.cfg zoo.cfg

下面就来说明一下zookeeper中的比较典型的几个配置:

1、基本配置

a) tickTime
心跳间隔时间。客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。 

b) initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

c) syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。

d) dataDir
该属性对应的目录是用来存放myid、 version(数据信息)、pid(服务器允许时候ID)等。 其中myid是需要人工创建的,并设置一个整数值。集群中的任何一台服务器都是唯一的。

e) dataLogDir
zookeeper的日志存放目录。

f) clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。

2、集群信息的配置

在zoo.cfg这个文件中,配置集群信息是存在一定的格式:service.[myid]=[服务器IP]:[F和L的通信端口]:[选举端口]
eg:
server.1=hadoop05:2888:3888
server.2=hadoop06:2888:3888
server.3=hadoop07:2888:3888
zk的默认服务端口:2181; F和L的通信端口:2888; 选举端口:3888; 

3、优化配置

globalOutstandingLimit:
最大请求堆积数,在zk运行中客户端会源源不断的将请求发送到服务端,为了防止服务端资源过度消耗,服务端必须限制同时处理的请求数,服务端必须限制最大请求堆积数(defalult:1000);

preAlloSize:
用于配置zk事务文件预分配的磁盘空间的大小默认是64m;

snapCount:
用于配置相邻两次数据快照之间的事务操作次数,zk会在snapCount次事务操作之后,会进行一次数据快照(default:100000);

maxClientCnxns:
该参数从socket层面限制单个客户端与单个服务器之间的并发连接数,是以IP地址的粒度来进行连接数的限制。
如果将该参数设置为0那么表示对连接数不做任何限制,限制范围仅仅是单台客户机对单台服务器之间的链接数限制,并不能控制所有客户端的连接数总和

clientPortAddress:
针对多网卡的机器允许为每个IP地址制定不同的监听端口

minSessionTimeout, maxSessionTimeout:
用于服务端对客户端会话的超时时间进行限制。
如果客户端设置的超时时间不在设置时间范围以内,那么会被服务端强制设置为最大或者最小超时时间
minSessionTimeout default:2times the tickTime
maxSessionTimeout default:20times the tickTime

fsync.warningthresholdms:
用于配置zk进行事务日志同步操作时消耗时间的报警阈值,一旦进行一个同步操作,消耗的时间大于参数值就会在日志中打印报警日志(3.3.4,defalut:1000)

autopurge.snapRetainCount:(3.4.0版本开始)
zk提供了对历史事务日志和快照数据自动清理的支持。
用于配置zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件,最小值时三,如果比3小,会自动调整为3

autopurge.purgeInterval:(3.4.0版本开始)
同上面参数配套使用,用于配置zk进行历史文件自动清理的频率,单位为小时。
如果参数配置为0或者小于零,就表示不开启定时清理功能,ZK默认不开启该功能。