Zookeeper配置详解
Zookeeper的配置文件存放在主目录下的conf目录中,文件名为zoo.cfg。
·
Zookeeper的配置文件存放在主目录下的conf目录中,文件名为zoo.cfg。
一、基本配置
基本配置是Zookeeper运行时所必需的,如果不配置这些参数,就无法启动Zookeeper服务。
tickTime:默认值为3000,单位是毫秒,不支持以系统属性方式配置。tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。
dataDir:无默认值,不支持以系统属性方式配置,用于配置Zookeeper服务器存储快照文件的目录。默认情况下,如果没有配置dataLogDir,那么事务日志也会存储到该目录中。
clientPort:无默认值,不支持以系统属性方式配置,用于配置服务器对外的服务端口。客户端通过此端口和Zookeeper服务器创建连接,通常设置为2181。每台服务器可以使用不同的端口,并且集群中的所有服务器也不需要保持此端口一致。
二、高级配置
dataLogDir:默认值为dataDir的值,不支持以系统属性方式配置,用于配置Zookeeper服务器存储事务日志的目录。默认情况下与快照数据保存在相同的目录中。在条件允许的情况下,可以将事务日志的存储配置在一个单独的磁盘上,因为事务日志记录对于磁盘的性能要求非常高,为了保证数据一致性,Zookeeper在返回客户端事务请求的响应之前,必须将本次请求对应的事务日志写入到磁盘中,因此,事务日志的写性能直接决定了Zookeeper在处理事务请求时的吞吐。针对同一块磁盘的其他并发读写操作,尤其是数据快照操作,会极大的影响事务日志的写性能。server.id=host:port:port:无默认值,单机模式下不需要配置,不支持以系统属性方式配置。用于配置Zookeeper集群的机器列表。其中id为serverId,与每台服务器的myid文件中的数字对应,host为主机名。两个端口,分别为Follower与Leader进行通信和同步时使用的端口和用于Leader选举的端口。
initLimit:默认值为10,表示是tickTime的10倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器等待Follower启动,并完成数据同步的时间。
syncLimit:默认值为5,表示是tickTime的5倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间,在Zookeeper运行期间,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果在syncLimit时间内无法获取到Follower的心跳检测响应,就认为Follower已经脱离了和自己的同步。在网络环境较差时,可以适当调大这个参数。
snapCount:默认为100000,表示每进行snapCount次事务日志输出后,触发一次快照,生成一个snapshot.*文件。为了避免所有的服务器在同一时间进行快照操作而影响性能,会对snapCount进行随机数处理:snapCount/2+rand.int(snapCount/2)。此属性只支持系统属性方式配置:zookeeper.snapCount。
preAllocSize:默认值为65536,单位为Kb,即64Mb。仅支持系统属性方式配置:zookeeper.preAllocSize。用于配置Zookeeper事务日志文件预分配的磁盘空间大小。如果调整snapCount大小,preAllocSize也要随之做出变更。
minSessionTimeout/ maxSessionTimeout:默认值分别为2和20,即tickTime的2倍和20倍。表示会话的超时时间在2*tickTime~20*tickTime之间,单位为毫秒,不支持以系统属性方式配置。用于服务端对客户端的会话超时时间进行限制,如果客户端设置的超时时间不在该范围内,服务端会强制设置为最大或最小超时时间。
maxClientCnxns:默认为60,不支持以系统属性方式配置。从Socket层面限制单个客户端与单台服务器之间的并发连接数,即以ip地址来进行连接数的限制。如果设置为0,表示不做任何限制。仅仅是单台客户端与单个Zookeeper服务器连接数的限制,不能控制所有客户端的连接数总和。
jute.maxbuffer:默认值为1048575,单位为字节,仅支持系统属性方式配置:jute.maxBuffer。用于配置单个数据节点上可以存储的最大数据量大小。在变更该参数时,需要变更集群中所有机器以及客户端上均设置才能生效。
clientPortAddress:无默认值,不支持以系统属性方式配置。针对多网卡的机器,允许为每个IP地址指定不同的监听端口。
autopurge.snapRetainCount:默认值为3,不支持以系统属性方式配置。用于配置Zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件。此参数的最小值为3,如果配置的值小于3会自动调整到3。
autopurge.purgeInterval:默认值为0,单位为小时,不支持以系统属性方式配置。用于配置Zookeeper进行历史文件自动清理的频率。如果配置为0或负数,表示不需要开启定时清理功能。
fsync.warningthresholdms:默认值为1000,单位为毫秒,仅支持系统属性方式配置:fsync.warningthresholdms。用于配置Zookeeper进行事务日志fsync操作时消耗时间的报警阈值。一旦fsync操作消耗的时间大于该参数指定的值,就在日志中打印出报警日志。
forceSync:默认值为yes,可配置项为“yes”和“no”,仅支持系统属性方式配置:zookeeper.forceSync。用于配置Zookeeper服务器是否在提交的时候,将日志写入操作强制刷入磁盘,默认情况下,每次事务日志写入操作都会实时刷入磁盘,如果设置为“no”,则能一定程度的提高ZooKeeper的写性能,但会存在类似机器断电等安全风险。
globalOutstandingLimit:默认值为1000,仅支持系统属性方式配置:zookeeper.globalOutstandingLimit。用于配置ZooKeeper服务器最大请求堆积数量。在Zookeeper服务器运行的过程中,客户端会源源不断的将请求发送到服务器,为了防止服务端资源耗尽,服务端必须限制同时处理的请求数,即最大请求堆积数量。
leaderServes:默认值为yes,可选配置项为“yes”和“no”,仅支持系统属性方式配置:zookeeper.leaderServes。用于配置Leader服务器是否能够接受客户端的连接,即是否允许Leader向客户端提供服务。默认情况下,Leader服务器能够接受并处理客户端的所有读写请求。在Zookeeper的架构设计中,Leader服务器主要用来进行对事务更新
请求的协调以及集群本身的运行时协调,因此可以设置让Leader服务器不接受客户端的连接,以使其专注于进行分布式协调。
skipAcl:默认值为no,可选配置项为“yes”和“no”,仅支持系统属性方式配置:zookeeper.skipACL。用于配置ZooKeeper服务器是否跳过ACL权限检查,默认情况下,会对每一个客户端请求进行权限检查。如果设置为“yes”,则能一定程度的提高ZooKeeper的读写性能,但同时也将向所有客户端开放Zookeeper的数据,包括之前设置过ACL权限的数据节点,也不在接受权限控制。
cnxTimeout:默认值为5000,单位毫秒,仅支持系统属性方式配置:zookeeper.cnxTimeout。用于配置在Leader选举过程中各服务器之间进行TCP连接创建的超时时间。
electionAlg:用于配置选择ZooKeeper进行Leader选举时所使用的算法。目前Zookeeper中只保留了一种选举算法,所以不做讲解。
更多推荐
已为社区贡献1条内容
所有评论(0)