Zookeeper配置

# 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

 

 

  1. Zookeeper是什么
  2. Zookeeper可以干什么
  3. ZooKeeper之ZAB协议
  4. zookeeper在分布式应用中的作用[转]
  5. Zookeeper配置

 

Zookeeper配置》上有2条评论

  1. Pingback引用通告: Zookeeper的安装 | 精彩每一天

  2. Pingback引用通告: Kafka的安装与命令 | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>