# zookeeper中使用的基本时间单位, 毫秒值
tickTime=2000
# zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower.
# initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间.
# 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
initLimit=5
# 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度.
# 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
syncLimit=2
# zookeep的数据、日志目录
# dataLogDir如果没提供的话使用的则是dataDir。zookeeper的持久化都存储在这两个目录里。dataLogDir
# 里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能
# 最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。
dataDir=/data/zookeeper
dataLogDir=var/log/zookeeper
# 监听client连接的端口号
clientPort=2181
# 集群中其他服务器
# server.X=A:B:C 其中X是一个数字, 表示这是第几号server(就是myid)
# A是该server所在的IP地址.
# B配置该server和集群中的leader交换消息所使用的端口.
# C配置选举leader时所使用的端口.
# 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同
server.1=192.168.80.121:2888:3888
server.2=192.168.80.122:2888:3888
server.3=192.168.80.123:2888:3888
# 对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。但是在我们实际使用中发现,在测试环境经常超过这个数,经过调查发现有的团队将几十个应用全部部署到一台机器上,以方便测试,于是这个数字就超过了。
maxClientCnxns=60
#一般客户端连接zookeeper的时候,都会设置一个session timeout,如果超过这个时间client没有与zookeeper server有联系,则这个session会被设置为过期(如果这个session上有临时节点,则会被全部删除,这就是实现集群感知的基础,后面的文章会介绍这一点)。但是这个时间不是客户端可以无限制设置的,服务器可以设置这两个参数来限制客户端设置的范围。在PHP中客户端设置的超时时间是 10S
minSessionTimeout=30
maxSessionTimeout=120
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
#客户端在与zookeeper交互过程中会产生非常多的日志,而且zookeeper也会将内存中的数据作为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会越来越多。不过可以通过这两个参数来设置,让zookeeper自动删除数据。autopurge.purgeInterval就是设置多少小时清理一次。而autopurge.snapRetainCount是设置保留多少个snapshot,之前的则删除。
# 不过如果你的集群是一个非常繁忙的集群,然后又碰上这个删除操作,可能会影响zookeeper集群的性能,所以一般会让这个过程在访问低谷的时候进行,但是遗憾的是zookeeper并没有设置在哪个时间点运行的设置,所以有的时候我们会禁用这个自动删除的功能,而在服务器上配置一个cron,然后在凌晨来干这件事。
#autopurge.snapRetainCount=3
#autopurge.purgeInterval=1
配置-myid
在dataDir里会放置一个myid文件,里面就一个数字,用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一。zookeeper会根据这个id来取出server.x上的配置。比如当前id为1,则对应着zoo.cfg里的server.1的配置。
而且在后面我们介绍leader选举的时候,这个id的大小也是有意义的。
本人的配置实例:
# zookeeper中使用的基本时间单位, 毫秒值 tickTime=2000 # zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. # initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. # 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s. initLimit=5 # 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. # 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms. syncLimit=2 # zookeep的数据、日志目录 dataDir=/data/zookeeper dataLogDir=/var/log/zookeeper # 监听client连接的端口号 clientPort=2181 # server.X=A:B:C 其中X是一个数字, 表示这是第几号server. # A是该server所在的IP地址. # B配置该server和集群中的leader交换消息所使用的端口. # C配置选举leader时所使用的端口. # 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同. server.1=192.168.80.121:2888:3888 server.2=192.168.80.122:2888:3888 server.3=192.168.80.123:2888:3888 # 对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。 # 但是在我们实际使用中发现,在测试环境经常超过这个数, # 经过调查发现有的团队将几十个应用全部部署到一台机器上, # 以方便测试,于是这个数字就超过了。 maxClientCnxns=60 # 一般客户端连接zookeeper的时候,都会设置一个session timeout, # 如果超过这个时间client没有与zookeeper server有联系, # 则这个session会被设置为过期(如果这个session上有临时节点,则会被全部删除, # 这就是实现集群感知的基础,后面的文章会介绍这一点)。 # 但是这个时间不是客户端可以无限制设置的, # 服务器可以设置这两个参数来限制客户端设置的范围。 minSessionTimeout=60 maxSessionTimeout=120 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
Pingback引用通告: Zookeeper的安装 | 精彩每一天
Pingback引用通告: Kafka的安装与命令 | 精彩每一天