基于3.4.13版本

基础配置

配置项示例说明
tickTimetickTime=2000心跳,单位ms
dataDirdataDir=/opt/zookeeper/data数据存放目录
clientPortclientPort=2181客户端链接端口
clientPortAddressclientPortAddress=172.0.0.1多网卡时可以为每个ip配置不同的端口,默认情况下都是clientPort。(3.3.0版本以上)

高级配置

配置项示例说明
dataLogDirdataLogDir=/opt/zookeeper/logdata事物日志存储路径,不设置则写入到dataDir目录下
globalOutstandingLimitglobalOutstandingLimit=500最大链接数据,默认1000,请求数据较大可以适当降低该值
preAllocSizepreAllocSize=32M

每个事务日志的大小,每多少个事务生成一次快照,snapCount参数配合

使用,和默认64M。

snapCountsnapCount=50000

每个事务快照的事务数据,默认100000,为了防止集群同时进行快照生成,

每隔服务的事务数为[snapCount/2+1,snapCount]之间的随机数。

maxClientCnxnsmaxClientCnxns=64单个客户端最大链接数据,防止Dos等恶意链接,默认60,设置0为不做限制。
minSessionTimeoutminSessionTimeout=4000

客户端请求超时时间区间,单位ms。

当客户端设置的超时时间小于minSessionTimeout时,

置minSessionTimeout为超时时间,默认2*tickTime。(3.3.0版本以上)

maxSessionTimeoutmaxSessionTimeout=40000

客户端请求超时时间区间,单位ms。

当客户端设置的超时时间小于maxSessionTimeout时,

置maxSessionTimeout为超时时间,默认20*tickTime。(3.3.0版本以上)

autopurge.snapRetainCountautopurge.snapRetainCount=5

留存快照数量,开启时,服务只保留最近几次快照,

清理其他历史快照,默认3,最小3。(3.4.0版本以上)

autopurge.purgeIntervalautopurge.purgeInterval=1

清楚历史快照的时间,单位小时。大于0时开启,

默认为0不开启。(3.4.0版本以上)

syncEnabledsyncEnabled=false

是否开启同步,开启后服务存储快照,

减少观察者重启恢复的时间,默认true.

集群配置

配置项示例说明
electionAlgelectionAlg=3

选举leader方式,0、1、2基于UDP选举,3基于TCP快速选取,

默认3。

initLimitinitLimit=10leader与follower之间链接初始化心跳次数,10*2s后置为失败
syncLimitsyncLimit=5leader与follower之间同步重试次数,5*2s后置为失败
leaderServesleaderServes=no

leader服务是否接受客户端连接,默认yes。

可以牺牲读取吞吐量为代价增加更高的更新吞吐量,可以设置no。

节点大于3个时建议关闭。

peerTypepeerType=observer  

服务在集群集群中的角色,默认participant参与者,

可以设置为observer观察者。

server.x=serverIp1:port1:port2:peerTypeserver.1=serverIp1:2888:3888
server.2=serverIp2:2788:3788
server.3=serverIp3:2688:3688
server.4=serverIp4:2588:3588:observer

集群服务器,通过查找数据目录中的myid文件内容来获取编号,

myid文件中ASCII和配种中的x一致,
hostname表示本地服务ip
port1端口号,用于正常连接工作
port2端口号,用于leader的选举操作,当electionAlg配置为0时不需要配置。
伪集群每个端口号需不一样。
节点最后加上observer 设置该点为观察者模式,节点较少时不建议设置。

group.x=server1:server2…group.1=1:4:7
group.2=2:5:8
group.3=3:6:9

选取leader时的投票分组,每个group为一票,

当组内服务器大多数投票时,group投票成功。

weight.x=numweight.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使用
cnxTimeoutcnxTimeout=3

leader选举时通知链接的超时时间,单位s,默认5s。

适用于electionAlg=3的tcp链接的情况。

4lw.commands.whitelist4lw.commands.whitelist=stat,ruok,conf,isro

四字符命令系统白名单,开启指定命令,逗号分隔。

*代表所有四字符系统命令。
默认情况开启除了“wchp”和“wchc”之外的所有。

(3.4.10版本以上)

ipReachableTimeoutipReachableTimeout=0

ip地址可达超时时间,单位ms.当server配置使用域名时,

且域名对于多个ip,
默认情况直接使用该域名的第一个ip,不做是否可达检查。
如设置该值,将依次检查域名对于的ip是否可达,

并使用最先可达的ip.
如果都不可达,将无奈的使用第一个ip地址,此时该服务不可用。
是否可达校验使用Java API的InAddiaby.IsAccess(long TimeOutlook)方法。

tcpKeepAlivetcpKeepAlive=falseserver之间的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

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐