Zookeeper配置文件(全)

本文详细介绍了Zookeeper服务器启动时所使用的配置文件`zoo.cfg`,涵盖了最低配置、集群、认证授权、实验功能如只读模式,以及性能调整和AdminServer配置等,特别指出这些配置项在不同版本的支持情况。

ZooKeeper Server启动时,默认读取$ZOOKEEPER_HOME/conf/zoo.cfg文件,zoo.cfg文件配置了Zookeeper所有的运行参数。

最低配置

参数名

默认

描述

clientPort

 

服务的监听端口

dataDir

 

用于存放内存数据快照的文件夹,同时用于集群的myid文件也存在这个文件夹里

tickTime

2000

Zookeeper的时间单元。Zookeeper中所有时间都是以这个时间单元的整数倍去配置的。例如,session的最小超时时间是2*tickTime。(单位:毫秒)

dataLogDir

 

事务日志写入该配置指定的目录,而不是“ dataDir ”所指定的目录。这将允许使用一个专用的日志设备并且帮助我们避免日志和快照之间的竞争

globalOutstandingLimit

1,000

最大请求堆积数。默认是1000。Zookeeper运行过程中,尽管Server没有空闲来处理更多的客户端请求了,但是还是允许客户端将请求提交到服务器上来,以提高吞吐性能。当然,为了防止Server内存溢出,这个请求堆积数还是需要限制下的。 

preAllocSize

64M

预先开辟磁盘空间,用于后续写入事务日志。默认是64M,每个事务日志大小就是64M。如果ZK的快照频率较大的话,建议适当减小这个参数。

snapCount

100,000

每进行snapCount次事务日志输出后,触发一次快照, 此时,Zookeeper会生成一个snapshot.*文件,同时创建一个新的事务日志文件log.*。默认是100,000.

traceFile

 

用于记录所有请求的log,一般调试过程中可以使用,但是生产环境不建议使用,会严重影响性能。

maxClientCnxns

 

最大并发客户端数,用于防止DOS的,默认值是10,设置为0是不加限制

clientPortAddress maxSessionTimeout

 

对于多网卡的机器,可以为每个IP指定不同的监听端口。默认情况是所有IP都监听 clientPort 指定的端口

minSessionTimeout

 

Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。默认的Session超时时间是在2 *  tickTime ~ 20 * tickTime 这个范围 

fsync.warningthresholdms

1000

事务日志输出时,如果调用fsync方法超过指定的超时时间,那么会在日志中输出警告信息。默认是1000ms。

autopurge.snapRetainCount

 

参数指定了需要保留的事务日志和快照文件的数目。默认是保留3个。和autopurge.purgeInterval搭配使用

autopurge.purgeInterval

 

在3.4.0及之后版本,Zookeeper提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能

syncEnabled

 Observer写入日志和生成快照,这样可以减少Observer的恢复时间。默认为true。

集群选项

参数名

默认

描述

electionAlg

 

之前的版本中, 这个参数配置是允许我们选择leader选举算法,但是由于在以后的版本中,只有“FastLeaderElection ”算法可用,所以这个参数目前看来没有用了。

initLimit

10

Observer和Follower启动时,从Leader同步最新数据时,Leader允许initLimit * tickTime的时间内完成。如果同步的数据量很大,可以相应的把这个值设置的大一些。

leaderServes

yes默 认情况下,Leader是会接受客户端连接,并提供正常的读写服务。但是,如果你想让Leader专注于集群中机器的协调,那么可以将这个参数设置为 no,这样一来,会大大提高写操作的性能。一般机器数比较多的情况下可以设置为no,让Leader不接受客户端的连接。默认为yes

server.x=[hostname]:nnnnn[:nnnnn]

 

“x”是一个数字,与每个服务器的myid文件中的id是一样的。hostname是服务器的hostname,右边配置两个端口,第一个端口用于Follower和Leader之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。  

syncLimit

 

表示Follower和Observer与Leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。

group.x=nnnnn[:nnnnn]

 

“x”是一个数字,与每个服务器的myid文件中的id是一样的。对机器分组,后面的参数是myid文件中的ID

weight.x=nnnnn

 

“x”是一个数字,与每个服务器的myid文件中的id是一样的。机器的权重设置,后面的参数是权重值

cnxTimeout

5s

 选举过程中打开一次连接的超时时间,默认是5s

standaloneEnabled

 

当设置为false时,服务器在复制模式下启动

认证和授权选项

只有在3.2之后才支持。

参数名

默认

描述

 

zookeeper.DigestAuthenticationProvider.superDigest

disabled启用超级管理员的用户去访问znode.
可 以使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider来生成一个 superDigest,参数格式为:"super:<password>",一旦当前连接addAuthInfo超级用户验证通过,后续所 有操作都不会checkACL。

实验选项/功能

Read Only Mode Server
    (java系统属性: readonlymode.enabled)
    在3.4.0之后支持,设置这个值为true,就支持只读模式。
不安全选项
以下的变量都是非常有用的,但是使用的时候还是要注意。

参数名

默认

描述

forceSync

 

该参数确定了是否需要在事务日志提交的时候调用 FileChannel .force来保证数据完全同步到磁盘。对应的java系统属性:zookeeper.forceSync

jute.maxbuffer

 该参数只能设置为java系统属性。没有zookeeper前缀。它指定了Znode可以存储最大的数据量的大小。默认是1M。如果要改变该配置,就必须在所有服务器和客户端中设置。

skipACL

 

跳过ACL检查,这样可以是Zookeeper的吞吐量增加。只是会使所有用户都有访问权限。对应的java系统属性:zookeeper.skipACL

quorumListenOnAllIPs

false

该参数设置为true,Zookeeper服务器将监听所有可用IP地址的连接。他会影响ZAB协议和快速Leader选举协议。默认是false。

性能调整选项

只有在3.5.0之后才支持。

参数名

默认

描述

zookeeper.nio.numSelectorThreads

 

NIO选择器的线程数量。建议使用多个选择器线程来扩大客户端的连接数,默认值是(CPU核心数/2)

 

zookeeper.nio.numWorkerThreads

 

NIO工作线程数。如果工作线程数设置为0,那么选择器线程就可以直接输出。默认值是(CPU核心数 * 2)

zookeeper.commitProcessor.numWorkerThreads

 

提交处理器工作线程数。如果该工作线程数设置为0,那么主线程就直接处理请求。默认是(CPU核心数)

AdminServer配置

AdminServer只有在3.5.0之后才支持。

参数名

默认

描述

admin.enableServer

true

设置为“false”禁用AdminServer。默认情况下,AdminServer是启用的。对应java系统属性是:zookeeper.admin.enableServer

admin.serverPort

8080

Jetty服务的监听端口,默认是8080。对应java系统属性是:zookeeper.admin.serverPort

admin.commandURL

"/commands"

访问路径

参考:http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_configuration

<think> 我们正在寻找Kafka中ZooKeeper配置文件的内容。注意,Kafka本身不包含ZooKeeper的安装,但Kafka依赖ZooKeeper。因此,用户可能是在询问Kafka配置中关于ZooKeeper连接的部分,或者是ZooKeeper自身的配置文件。 根据引用[1],在Kafka配置中,我们通过`zookeeper.connect`属性来指定ZooKeeper的地址,例如: zookeeper.connect=10.19.200.151:2181,10.19.200.151:2182,10.19.200.152:2181 但是,如果用户是问ZooKeeper自身的配置文件,那么我们需要查看ZooKeeper配置文件(如zoo.cfg)。 从引用[2]中,我们知道ZooKeeper配置文件通常是`zoo.cfg`,它是从模板`zoo_sample.cfg`复制而来。配置文件中需要指定数据目录(dataDir)以及每个服务器的配置(如果是在集群模式下)。 引用[3]中给出了Windows下启动ZooKeeperKafka的脚本,其中ZooKeeper的启动命令指向了`zkServer.cmd`,这个命令会使用`conf`目录下的`zoo.cfg`配置文件。 因此,我们分两种情况: 1. Kafka配置文件中关于ZooKeeper的连接配置(在Kafka的server.properties中) 2. ZooKeeper自身的配置文件(zoo.cfg)的内容 由于用户的问题可能指其中一种,我们将分别说明。 情况1:Kafka配置文件中关于ZooKeeper的部分 在Kafka的配置文件(如server.properties)中,关键配置项是: zookeeper.connect=<host:port,host:port,...> 这个配置告诉Kafka Broker如何连接到ZooKeeper集群。 情况2:ZooKeeper自身的配置文件 ZooKeeper配置文件(zoo.cfg)通常包含以下内容: tickTime=2000 dataDir=/path/to/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=host1:2888:3888 server.2=host2:2888:3888 server.3=host3:2888:3888 其中: - tickTime:ZooKeeper使用的基本时间单位(毫秒) - dataDir:存储内存数据库快照的位置 - clientPort:监听客户端连接的端口 - initLimit:允许follower连接并同步到leader的初始时间(以tickTime的倍数表示) - syncLimit:允许follower与leader同步的时间(以tickTime的倍数表示) - server.X:集群中的服务器列表,X是每个服务器的myid,后面的端口用于集群内部通信(如选举同步) 此外,在dataDir目录下需要有一个myid文件,其中包含与server.X对应的数字X。 根据引用[2],在ZooKeeper的数据目录(zkData)中创建myid文件,并写入对应的编号(比如2),这个编号必须与配置文件中server.X的X一致。 因此,如果用户想要知道ZooKeeper配置文件(zoo.cfg)的内容,我们可以给出一个典型的配置示例。 由于问题没有明确是Kafka中的配置还是ZooKeeper的配置,我们提供两者。 </think>根据引用内容,Kafka中ZooKeeper配置文件主要涉及两个层面: ### 一、Kafka Broker配置中ZooKeeper的连接参数 在Kafka的`server.properties`文件中(或自定义的配置文件如`server2.properties`),需通过以下参数配置ZooKeeper集群: ```properties zookeeper.connect=10.19.200.151:2181,10.19.200.151:2182,10.19.200.152:2181 broker.id=1 log.dirs=/root/kafka/kafka-logs2 ``` - **`zookeeper.connect`**:ZooKeeper集群地址列表,格式为`host1:port,host2:port,...` - **`broker.id`**:当前Broker的唯一ID(需与ZooKeeper的`myid`对应) - **`log.dirs`**:Kafka日志存储目录(不同Broker需不同路径)[^1] ### 二、ZooKeeper自身的配置文件 ZooKeeper配置文件通常为`zoo.cfg`(由`zoo_sample.cfg`复制而来),核心配置包括: ```properties tickTime=2000 dataDir=/path/to/zkData clientPort=2181 initLimit=5 syncLimit=2 server.1=10.19.200.151:2888:3888 server.2=10.19.200.151:2889:3889 # 单机多节点需不同端口 server.3=10.19.200.152:2888:3888 ``` - **`dataDir`**:指定数据目录(需预先创建`zkData`文件夹) - **`myid文件`**:在`dataDir`目录下创建`myid`文件,内容为当前节点ID(如`2`),需与`server.X`的`X`及Kafka的`broker.id`一致[^2] - **`server.X`**:集群节点列表,格式为`server.<id>=<host>:<follower通信端口>:<选举端口>` ### 三、Windows环境特殊配置 Windows启动脚本需指定ZooKeeper路径: ```bat set zk=C:\apache-zookeeper-3.8.0-bin\bin\zkServer.cmd start cmd /k "%zk%" ``` 同时需在`zoo.cfg`中配置`dataDir`(如`C:\tmp\zk_data`)[^3] > **关键点**: > 1. Kafka通过`zookeeper.connect`参数关联ZooKeeper集群 > 2. ZooKeeper节点需正确配置`myid`文件实现ID映射 > 3. 单机部署多个节点时,需为每个ZooKeeper实例分配独立端口数据目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值