基于3.4.13版本
基础配置
配置项 | 示例 | 说明 |
tickTime | tickTime=2000 | 心跳,单位ms |
dataDir | dataDir=/opt/zookeeper/data | 数据存放目录 |
clientPort | clientPort=2181 | 客户端链接端口 |
clientPortAddress | clientPortAddress=172.0.0.1 | 多网卡时可以为每个ip配置不同的端口,默认情况下都是clientPort。(3.3.0版本以上) |
高级配置
配置项 | 示例 | 说明 |
dataLogDir | dataLogDir=/opt/zookeeper/logdata | 事物日志存储路径,不设置则写入到dataDir目录下 |
globalOutstandingLimit | globalOutstandingLimit=500 | 最大链接数据,默认1000,请求数据较大可以适当降低该值 |
preAllocSize | preAllocSize=32M | 每个事务日志的大小,每多少个事务生成一次快照,snapCount参数配合 使用,和默认64M。 |
snapCount | snapCount=50000 | 每个事务快照的事务数据,默认100000,为了防止集群同时进行快照生成, 每隔服务的事务数为[snapCount/2+1,snapCount]之间的随机数。 |
maxClientCnxns | maxClientCnxns=64 | 单个客户端最大链接数据,防止Dos等恶意链接,默认60,设置0为不做限制。 |
minSessionTimeout | minSessionTimeout=4000 | 客户端请求超时时间区间,单位ms。 当客户端设置的超时时间小于minSessionTimeout时, 置minSessionTimeout为超时时间,默认2*tickTime。(3.3.0版本以上) |
maxSessionTimeout | maxSessionTimeout=40000 | 客户端请求超时时间区间,单位ms。 当客户端设置的超时时间小于maxSessionTimeout时, 置maxSessionTimeout为超时时间,默认20*tickTime。(3.3.0版本以上) |
autopurge.snapRetainCount | autopurge.snapRetainCount=5 | 留存快照数量,开启时,服务只保留最近几次快照, 清理其他历史快照,默认3,最小3。(3.4.0版本以上) |
autopurge.purgeInterval | autopurge.purgeInterval=1 | 清楚历史快照的时间,单位小时。大于0时开启, 默认为0不开启。(3.4.0版本以上) |
syncEnabled | syncEnabled=false | 是否开启同步,开启后服务存储快照, 减少观察者重启恢复的时间,默认true. |
集群配置
配置项 | 示例 | 说明 |
electionAlg | electionAlg=3 | 选举leader方式,0、1、2基于UDP选举,3基于TCP快速选取, 默认3。 |
initLimit | initLimit=10 | leader与follower之间链接初始化心跳次数,10*2s后置为失败 |
syncLimit | syncLimit=5 | leader与follower之间同步重试次数,5*2s后置为失败 |
leaderServes | leaderServes=no | leader服务是否接受客户端连接,默认yes。 可以牺牲读取吞吐量为代价增加更高的更新吞吐量,可以设置no。 节点大于3个时建议关闭。 |
peerType | peerType=observer | 服务在集群集群中的角色,默认participant参与者, 可以设置为observer观察者。 |
server.x=serverIp1:port1:port2:peerType | server.1=serverIp1:2888:3888 server.2=serverIp2:2788:3788 server.3=serverIp3:2688:3688 server.4=serverIp4:2588:3588:observer | 集群服务器,通过查找数据目录中的myid文件内容来获取编号, myid文件中ASCII和配种中的x一致, |
group.x=server1:server2… | group.1=1:4:7 group.2=2:5:8 group.3=3:6:9 | 选取leader时的投票分组,每个group为一票, 当组内服务器大多数投票时,group投票成功。 |
weight.x=num | 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 | 组内票数的权重,可以一票当多票。集合group使用 |
cnxTimeout | cnxTimeout=3 | leader选举时通知链接的超时时间,单位s,默认5s。 适用于electionAlg=3的tcp链接的情况。 |
4lw.commands.whitelist | 4lw.commands.whitelist=stat,ruok,conf,isro | 四字符命令系统白名单,开启指定命令,逗号分隔。 *代表所有四字符系统命令。 (3.4.10版本以上) |
ipReachableTimeout | ipReachableTimeout=0 | ip地址可达超时时间,单位ms.当server配置使用域名时, 且域名对于多个ip, 并使用最先可达的ip. |
tcpKeepAlive | tcpKeepAlive=false | server之间的tcp链接是否为长连接,默认false. |
JAVA环境变量配置
- 权限配置
zookeeper.DigestAuthenticationProvider.superDigest
默认disabled,通过修改启动文件zkServer.sh文件中的java环境变了开启。
开启方法:
以参数"super:<password>"来调用org.apache.zookeeper.server.auth.DigestAuthenticationProvider可以生成一个超级用户.
用过命令“java -cp "/usr/lib/zookeeper/zookeeper.jar:/usr/lib/zookeeper/lib/slf4j-api-1.7.25.jar"
org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:pwd123”生成加密密码<data>.
然后用前面命令生成的"super:<data>"作为服务启动的Java系统属性传递给进程, 就开启了这个功能.
- 函数同步时间
fsync.warningthresholdms=500
单位ms,当同步时间超出这个值时,会输出一条警告消息,默认1000。(3.3.4版本以上)
启动文件zkserver.sh中java环境变量设置。
伪集群配置
tickTime=2000
dataDir=/opt/zookeeper/zookeeper1/data
dataLogDir=/opt/zookeeper/zookeeper1/logdata
clientPort=2181
initLimit=10
syncLimit=5
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883