本文我们主要针对zookeeper配置文件中的各个选项进行讲解,注意本文参数主要针对3.5.7版本
首先zookeeper的配置主要分为以下几个大类,下面我们就会对每一类的参数进行详细讲解
- 基本参数配置
- 集群参数配置
- 日志参数配置
- 权限和角色参数配置
基本参数配置
参数 | 描述 |
---|---|
clientPort | 主要定义客户端连接zookeeper server的端口,默认情况下为2181 |
dataDir | 主要用来配置zookeeper server数据的存放路径 |
dataLogDir | 主要用来存储事物日志,如果该参数不配置,则事物日志存储在dataDir路下 |
tickTime | zookeeper中使用的基本时间度量单位,单位为毫秒。zookeeper客户端与服务器之间的心跳时间就是一个tickTime单位。默认值为2000毫秒,即2秒 |
集群参数配置
参数 | 定义 |
---|---|
initLimit | Follower连接到Leader并同步数据的最大时间,如果zookeeper数据比较大,可以考虑调大这个值来避免报错 |
syncLimit | Follower同步Leader的最大时间 |
leaderServes | 用于配制Leader节点是否接收客户端请求,默认情况下这个值是yes ,当集群中节点数量超过3个,建议设置为false,关闭leader节点接收客户端请求 |
server.x | 主要用来设置集群中某台server的参数,格式[hostname]:n:n[:observer],zookeeper server启动的时候,会根据dataDirxia的myid文件确定当前节点的id。该参数里,第一个port是follower连接leader同步数据和转发请求用,第二个端口是leader选举用的 |
cnxTimeout | 设置连接Leader接收通知的最大超时时间,该参数只在使用electionAlg 3时生效 |
electionAlg | leader选举算法,1表示基于UDP通信的不进行权限验证算法,2表示进行基于UDP通信的进行权限验证算法,3表示基于TCP通信的fast leader选举 |
日志相关配置
Zookeeper server使用log4j作为其logging的基本框架,具体实现是使用Log4j1.2.7版本,在zookeeper server的conf路径下有个log4j.properties配置其日志相关信息
# Define some default values that can be overridden by system properties
zookeeper.root.logger=INFO, CONSOLE
zookeeper.console.threshold=INFO
zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=INFO
zookeeper.log.maxfilesize=256MB
zookeeper.log.maxbackupindex=20
zookeeper.tracelog.dir=${zookeeper.log.dir}
zookeeper.tracelog.file=zookeeper_trace.log
log4j.rootLogger=${zookeeper.root.logger}
#
# console
# Add "console" to rootlogger above if you want to use this
#
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
#
# Add ROLLINGFILE to rootLogger to get log file output
#
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.ROLLINGFILE.MaxFileSize=${zookeeper.log.maxfilesize}
log4j.appender.ROLLINGFILE.MaxBackupIndex=${zookeeper.log.maxbackupindex}
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
#
# Add TRACEFILE to rootLogger to get log file output
# Log TRACE level and above messages to a log file
#
log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
log4j.appender.TRACEFILE.Threshold=TRACE
log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file}
log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
### Notice we are including log4j's NDC here (%x)
log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n