Kafka在 property file format 使用键值对作为配置。这些值无论来自文件还是以编程的方式,都被支持。
1. Broker Configs
必要配置如下:
- broker.id
- log.dirs
- zookeeper.connect
更详细的Topic-level的配置和默认值如下:
NAME | DESCRIPTION | TYPE | DEFAULT | VALID VALUES | IMPORTANCE | DYNAMIC UPDATE MODE |
---|---|---|---|---|---|---|
zookeeper.connect | 用hostname:port的格式指定ZK连接串。 为了让ZK服务器down掉的时候能够连接上其他的ZK节点,能指定多个hosts:hostname1:port1,hostname2:port2,hostname3:port3 服务器还可以将ZooKeeper chroot路径作为其ZooKeeper连接字符串的一部分,该字符串将其数据放在全局ZooKeeper命名空间中的某个路径下。例如,一个chroot路径:/chroot/path,需要指定如下连接串:hostname1:port1,hostname2:port2,hostname3:port3/chroot/path. |
string | 高 | 只读 | ||
advertised.host.name | 废弃,只有在advertised.listeners或者listeners没有指定的时候使用,请用advertised.listeners替代它。要发布到ZK以供客户端使用的主机名。在Iaas环境下,需要和broker绑定的接口不同。如果没有设置,如果设置了host.name就用这个值。否则将使用从java.net.InetAddress.getCanonicalHostName()返回的值。 | string | null | 高 | 只读 | |
advertised.listeners | 如果和监听器配置的属性不同,发布到ZK以供用户使用的监听器。在IaaS环境下,需要和broker绑定的接口不同。如果没有设置,会使用监听器的值。和监听器不同,公开的0.0.0.0的元地址无效。 | string | null | 高 | per-broker | |
advertised.port | 废弃,仅在advertised.listeners or listeners 未设置时使用。改用advertised.listeners。发布到ZK的接口以供用户使用。在IaaS环境下,需要和broker板顶的端口不同。如果没有设置,将发布和broker绑定的接口相同。 | int | null | 高 | 只读 | |
auto.create.topics.enable | 在服务器开启自动创建topic | boolean | true | 高 | 只读 | |
auto.leader.rebalance.enable | 开启自动均衡,一个定时检查和触发leader平衡的后台进程 | boolean | true | 高 | 只读 | |
background.threads | 开启的后台处理任务的线程数 | int | 10 | [1,...] | 高 | cluster-wide |
broker.id | 服务器的broker id,如果未设置,会生成一个唯一brokerid。为了避免ZK生成的broker id和用户生成的产生id冲突,生成的broker id从reserved.broker.max.id + 1开始 | int | -1 | 高 | 只读 | |
compression.type | 指定给定topic的最终压缩类型。这个配置接受标准压缩编码('gzip', 'snappy', 'lz4', 'zstd')。还接受“ uncompressed”,也就是不压缩。也接受“ producer“,也就是保留生产者设置的原始压缩编码。 | string | producer | 高 | cluster-wide | |
control.plane.listener.name | 用于controller和brokers之间的通信的监听器的名称。Broker将使用control.plane.listener.name 来定位监听器列表中的终端,监听来自控制器的连接。 例如,如果broker的配置是:listeners = INTERNAL://192.1.1.8:9092, EXTERNAL://10.1.1.5:9093, CONTROLLER://192.1.1.8:9094 listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL control.plane.listener.name = CONTROLLER 启动时,broker将使用SSL安全协议在"192.1.1.8:9094"上监听。在控制器端,当它发现一个broker通过ZK发布了终端,将会使用control.plane.listener.name来找到这个终端,以此建立和broker的连接。 例如:如果一个broker在ZK发布的终端是:"endpoints" : ["INTERNAL://broker1.example.com:9092","EXTERNAL://broker1.example.com:9093","CONTROLLER://broker1.example.com:9094"] ;控制器配置是:listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL control.plane.listener.name = CONTROLLER 那么控制器将在“broker1.example.com:9094”上使用SSL安全协议连接到broker。如果没有明确配置,默认值是null,并且控制器连接没有专用端点。 |
string | null | 高 | 只读 | |
delete.topic.enable | 启用删除主题。如果关闭,通过admin工具删除主题将没有作用 | boolean | true | 高 | 只读 | |
host.name | 废弃,仅在未设置listeners时使用,改为使用listeners,broker的hostname。如果设置了,就只绑定到这个地址。如果没有设置,就绑定到所有接口 | string | "" | 高 | 只读 | |
leader.imbalance.check.interval.seconds | 控制器触发分区重新平衡检查的频率 | long | 300 | 高 | 只读 | |
leader.imbalance.per.broker.percentage | 每个broker允许的leader的不平衡的比率。如果每个broker超过了这个值,控制器将触发一次leader平衡。这个值用百分比指定 | int | 100 | 高 | 只读 | |
listeners | 监听器列表,将监听用逗号分隔的URI列表和监听器名称。如果监听器名称不是一个安全协议,必须设置listener.security.protocol.map。将主机名指定为0.0.0.0以绑定到所有接口。保留hostname为空以绑定到默认接口。 合法的监听器列表示例:PLAINTEXT://myhost:9092,SSL://:9091 CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093 |
string | null | 高 | per-broker | |
log.dir | 保存日志数据的目录(log.dirs属性的补充) | string | /tmp/kafka-logs | high | read-only | |
log.dirs | 保存日志数据的目录,如果没有设置,使用log.dir设置的值 | string | null | high | read-only | |
log.flush.interval.messages | 消息刷新到磁盘之前在日志分区上积累的消息数 | long | 9223372036854775807 | [1,...] | high | cluster-wide |
log.flush.interval.ms | 刷新到磁盘之前,任何主题中的消息将会被存放在内存中的最大毫秒数,如果未设置,使用long.flush.scheduler.interval.ms中的值 | long | null | high | cluster-wide | |
log.flush.offset.checkpoint.interval.ms | 更新上次flush的持久化记录的频率,该记录作为日志恢复点 | int | 60000 | [0,...] | high | read-only |
log.flush.scheduler.interval.ms | 日志刷新器检查是否需要将一些日志flush到磁盘的频率 | long | 9223372036854775807 | high | read-only | |
log.flush.start.offset.checkpoint.interval.ms | 更新日志开始偏移的持久化记录的频率 | int | 60000 | [0,...] | high | read-only |
log.retention.bytes | 删除之前的最大日志大小 | long | -1 | high | cluster-wide | |
log.retention.hours | 删除之前保留日志文件的小时数,是log.retention.ms 属性的第三级 | int | 168 | high | read-only | |
log.retention.minutes | 删除之前保留日志文件的分钟数,是log.retention.ms属性的第二级,如果不设置,使用log.retention.hours 属性 | int | null | high | read-only | |
log.retention.ms | 删除之前保留日志文件的毫秒数,如果不设置,使用log.retention.hours 属性 | long | null | high | cluster-wide | |
log.roll.hours | 新日志段推出之前的最长小时数,log.roll.ms 属性的第二级 | int | 168 | [1,...] | high | read-only |
log.roll.jitter.hours | 从logRollTimeMillis(以小时为单位)中间去的最大抖动,log.roll.jitter.ms属性的第二级 | int | 0 | [0,...] | high | read-only |
log.roll.jitter.ms | 从logRollTimeMillis(以毫秒为单位)减去的最大抖动,如果不设置,使用log.roll.jitter.hours的值 | long | null | high | cluster-wide | |
log.roll.ms | 新日志段推出之前的最长毫秒数,如果不设置,使用log.roll.hours的值 | long | null | high | cluster-wide | |
log.segment.bytes | 单个日志文件的 | int | 1073741824 | [14,...] | high | cluster-wide |
log.segment.delete.delay.ms | 从文件系统中删除文件之前等待的最长时间 | long | 60000 | [0,...] | high | cluster-wide |
message.max.bytes | Kafka允许的最大记录批量大小。如果它增加了并且消费者版本大于0.10.2,消费者获取的大小也必须增加,以便他们能获取到这么大量的数据。 在最新的消息格式版本中,记录始终按批次分组以提高效率。之前的版本中,未压缩的记录不会被记录到批次中,并且仅限制这种情况下的单个记录 可以用主题级别的max.message.bytes配置来设置到每一个主题 |
int | 1000012 | [0,...] | high | cluster-wide |
min.insync.replicas | 当生产者将acks值设置为"all"(或"-1"),min.insync.replicas指定为 确认被认为写入成功的最小副本数。如果无法满足此最小值,生产者将会抛出一个异常(NotEnoughReplicas或者NotEnoughReplicasAfterAppend)。在一起使用时,min.insync.replicas和acks允许强制执行更大的持久性保证。典型的情况是创建一个复制因子为3的主题,将min.insync.replicas设置为2,并使用“all”来生成acks。如果大部分的副本没有收到写入,这将确保生产者会引发一个异常。 | int | 1 | [1,...] | high | cluster-wide |
num.io.threads | 服务器用于请求的线程数,包括磁盘IO | int | 8 | [1,...] | high | cluster-wide |
num.network.threads | 服务器用于从网络接受请求并向网络发送响应的线程数 | int | 3 | [1,...] | high | cluster-wide |
num.recovery.threads.per.data.dir | 每个数据目录的线程数,用于启动时的日志恢复和关闭时的刷新 | int | 1 | [1,...] | high | cluster-wide |
num.replica.alter.log.dirs.threads | 可以在日志目录之间移动副本的线程数,可能包括磁盘IO | int | null | high | read-only | |
num.replica.fetchers | 用于从源代理复制消息的提取程序线程数。增加这个值能够增加跟随broker的并行IO级别 | int | 1 | high | cluster-wide | |
offset.metadata.max.bytes | 与偏移提交关联的数据条目的最大大小 | int | 4096 | high | read-only | |
offsets.commit.required.acks | 提交之前可以接受的acks。默认值(-1)通常不会被覆盖 | short | -1 | high | read-only | |
offsets.commit.timeout.ms | 偏移提交将延迟,知道偏移主题的所有副本都受到提交或者达到此超时时间。类似于生产者请求超时。 | int | 5000 | [1,...] | high | read-only |
offsets.load.buffer.size | 将偏移量加载到缓存中时从偏移端读取的批量大小(软限制,如果记录太大则覆盖) | int | 5242880 | [1,...] | high | read-only |
offsets.retention.check.interval.ms | 检查旧偏移量的频率 | long | 600000 | [1,...] | high | read-only |
offsets.retention.minutes | 在消费者组失去所有消费者(即变为空白)之后,其偏移量建辉被保留期间保留,然后被丢弃。对于独立消费者(使用手动分配)偏移量将在提交时间加上此保留时间后过期 | int | 10080 | [1,...] | high | read-only |
offsets.topic.compression.codec | 偏移主题的压缩编码器-压缩可用于实现“原子”提交 | int | 0 | high | read-only | |
offsets.topic.num.partitions | 便宜提交主题的分区数(部署后不能更改) | int | 50 | [1,...] | high | read-only |
offsets.topic.replication.factor | 偏移主题的重复因子(设高一点确保可用性)内部主题创建会失败,直到集群大小和这个重复因子需要的相等。 | short | 3 | [1,...] | high | read-only |
offsets.topic.segment.bytes | The offsets topic segment bytes should be kept relatively small in order to facilitate faster log compaction and cache loads | int | 104857600 | [1,...] | high | read-only |
port | DEPRECATED: only used when listeners is not set. Use listeners instead. the port to listen and accept connections on |
int | 9092 | high | read-only | |
queued.max.requests | The number of queued requests allowed for data-plane, before blocking the network threads | int | 500 | [1,...] | high | read-only |
quota.consumer.default | DEPRECATED: Used only when dynamic default quotas are not configured for |
long | 9223372036854775807 | [1,...] | high | read-only |
quota.producer.default | DEPRECATED: Used only when dynamic default quotas are not configured for |
long | 9223372036854775807 | [1,...] | high | read-only |
replica.fetch.min.bytes | Minimum bytes expected for each fetch response. If not enough bytes, wait up to replicaMaxWaitTimeMs | int | 1 | high | read-only | |
replica.fetch.wait.max.ms | max wait time for each fetcher request issued by follower replicas. This value should always be less than the replica.lag.time.max.ms at all times to prevent frequent shrinking of ISR for low throughput topics | int | 500 | high | read-only | |
replica.high.watermark.checkpoint.interval.ms | The frequency with which the high watermark is saved out to disk | long | 5000 | high | read-only | |
replica.lag.time.max.ms | If a follower hasn't sent any fetch requests or hasn't consumed up to the leaders log end offset for at least this time, the leader will remove the follower from isr | long | 10000 | high | read-only | |
replica.socket.receive.buffer.bytes | The socket receive buffer for network requests | int | 65536 | high | read-only | |
replica.socket.timeout.ms | The socket timeout for network requests. Its value should be at least replica.fetch.wait.max.ms | int | 30000 | high | read-only | |
request.timeout.ms | The configuration controls the maximum amount of time the client will wait for the response of a request. If the response is not received before the timeout elapses the client will resend the request if necessary or fail the request if retries are exhausted. | int | 30000 | high | read-only | |
socket.receive.buffer.bytes | The SO_RCVBUF buffer of the socket sever sockets. If the value is -1, the OS default will be used. | int | 102400 | high | read-only | |
socket.request.max.bytes | The maximum number of bytes in a socket request | int | 104857600 | [1,...] | high | read-only |
socket.send.buffer.bytes | The SO_SNDBUF buffer of the socket sever sockets. If the value is -1, the OS default will be used. | int | 102400 | high | read-only | |
transaction.max.timeout.ms | The maximum allowed timeout for transactions. If a client’s requested transaction time exceed this, then the broker will return an error in InitProducerIdRequest. This prevents a client from too large of a timeout, which can stall consumers reading from topics included in the transaction. | int | 900000 | [1,...] | high | read-only |
transaction.state.log.load.buffer.size | Batch size for reading from the transaction log segments when loading producer ids and transactions into the cache (soft-limit, overridden if records are too large). | int | 5242880 | [1,...] | high | read-only |
transaction.state.log.min.isr | Overridden min.insync.replicas config for the transaction topic. | int | 2 | [1,...] | high | read-only |
transaction.state.log.num.partitions | The number of partitions for the transaction topic (should not change after deployment). | int | 50 | [1,...] | high | read-only |
transaction.state.log.replication.factor | The replication factor for the transaction topic (set higher to ensure availability). Internal topic creation will fail until the cluster size meets this replication factor requirement. | short | 3 | [1,...] | high | read-only |
transaction.state.log.segment.bytes | The transaction topic segment bytes should be kept relatively small in order to facilitate faster log compaction and cache loads | int | 104857600 | [1,...] | high | read-only |
transactional.id.expiration.ms | The maximum amount of time in ms that the transaction coordinator will wait before proactively expire a producer's transactional id without receiving any transaction status updates from it. | int | 604800000 | [1,...] | high | read-only |
unclean.leader.election.enable | Indicates whether to enable replicas not in the ISR set to be elected as leader as a last resort, even though doing so may result in data loss | boolean | false | high | cluster-wide | |
zookeeper.connection.timeout.ms | The max time that the client waits to establish a connection to zookeeper. If not set, the value in zookeeper.session.timeout.ms is used | int | null | high | read-only | |
zookeeper.max.in.flight.requests | The maximum number of unacknowledged requests the client will send to Zookeeper before blocking. | int | 10 | [1,...] | high | read-only |
zookeeper.session.timeout.ms | Zookeeper session timeout | int | 6000 | high | read-only | |
zookeeper.set.acl | Set client to use secure ACLs | boolean | false | high | read-only | |
broker.id.generation.enable | Enable automatic broker id generation on the server. When enabled the value configured for reserved.broker.max.id should be reviewed. | boolean | true | medium | read-only | |
broker.rack | Rack of the broker. This will be used in rack aware replication assignment for fault tolerance. Examples: RACK1 , us-east-1d |
string | null | medium | read-only | |
connections.max.idle.ms | Idle connections timeout: the server socket processor threads close the connections that idle more than this | long | 600000 | medium | read-only | |
connections.max.reauth.ms | When explicitly set to a positive number (the default is 0, not a positive number), a session lifetime that will not exceed the configured value will be communicated to v2.2.0 or later clients when they authenticate. The broker will disconnect any such connection that is not re-authenticated within the session lifetime and that is then subsequently used for any purpose other than re-authentication. Configuration names can optionally be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.oauthbearer.connections.max.reauth.ms=3600000 | long | 0 | medium | read-only | |
controlled.shutdown.enable | Enable controlled shutdown of the server | boolean | true | medium | read-only | |
controlled.shutdown.max.retries | Controlled shutdown can fail for multiple reasons. This determines the number of retries when such failure happens | int | 3 | medium | read-only | |
controlled.shutdown.retry.backoff.ms | Before each retry, the system needs time to recover from the state that caused the previous failure (Controller fail over, replica lag etc). This config determines the amount of time to wait before retrying. | long | 5000 | medium | read-only | |
controller.socket.timeout.ms | The socket timeout for controller-to-broker channels | int | 30000 | medium | read-only | |
default.replication.factor | default replication factors for automatically created topics | int | 1 | medium | read-only | |
delegation.token.expiry.time.ms | The token validity time in miliseconds before the token needs to be renewed. Default value 1 day. | long | 86400000 | [1,...] | medium | read-only |
delegation.token.master.key | Master/secret key to generate and verify delegation tokens. Same key must be configured across all the brokers. If the key is not set or set to empty string, brokers will disable the delegation token support. | password | null | medium | read-only | |
delegation.token.max.lifetime.ms | The token has a maximum lifetime beyond which it cannot be renewed anymore. Default value 7 days. | long | 604800000 | [1,...] | medium | read-only |
delete.records.purgatory.purge.interval.requests | The purge interval (in number of requests) of the delete records request purgatory | int | 1 | medium | read-only | |
fetch.purgatory.purge.interval.requests | The purge interval (in number of requests) of the fetch request purgatory | int | 1000 | medium | read-only | |
group.initial.rebalance.delay.ms | The amount of time the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins. | int | 3000 | medium | read-only | |
group.max.session.timeout.ms | The maximum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures. | int | 300000 | medium | read-only | |
group.max.size | The maximum number of consumers that a single consumer group can accommodate. | int | 2147483647 | [1,...] | medium | read-only |
group.min.session.timeout.ms | The minimum allowed session timeout for registered consumers. Shorter timeouts result in quicker failure detection at the cost of more frequent consumer heartbeating, which can overwhelm broker resources. | int | 6000 | medium | read-only | |
inter.broker.listener.name | Name of listener used for communication between brokers. If this is unset, the listener name is defined by security.inter.broker.protocol. It is an error to set this and security.inter.broker.protocol properties at the same time. | string | null | medium | read-only | |
inter.broker.protocol.version | Specify which version of the inter-broker protocol will be used. This is typically bumped after all brokers were upgraded to a new version. Example of some valid values are: 0.8.0, 0.8.1, 0.8.1.1, 0.8.2, 0.8.2.0, 0.8.2.1, 0.9.0.0, 0.9.0.1 Check ApiVersion for the full list. | string | 2.2-IV1 | [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0, 2.0-IV0, 2.0-IV1, 2.1-IV0, 2.1-IV1, 2.1-IV2, 2.2-IV0, 2.2-IV1] | medium | read-only |
log.cleaner.backoff.ms | The amount of time to sleep when there are no logs to clean | long | 15000 | [0,...] | medium | cluster-wide |
log.cleaner.dedupe.buffer.size | The total memory used for log deduplication across all cleaner threads | long | 134217728 | medium | cluster-wide | |
log.cleaner.delete.retention.ms | How long are delete records retained? | long | 86400000 | medium | cluster-wide | |
log.cleaner.enable | Enable the log cleaner process to run on the server. Should be enabled if using any topics with a cleanup.policy=compact including the internal offsets topic. If disabled those topics will not be compacted and continually grow in size. | boolean | true | medium | read-only | |
log.cleaner.io.buffer.load.factor | Log cleaner dedupe buffer load factor. The percentage full the dedupe buffer can become. A higher value will allow more log to be cleaned at once but will lead to more hash collisions | double | 0.9 | medium | cluster-wide | |
log.cleaner.io.buffer.size | The total memory used for log cleaner I/O buffers across all cleaner threads | int | 524288 | [0,...] | medium | cluster-wide |
log.cleaner.io.max.bytes.per.second | The log cleaner will be throttled so that the sum of its read and write i/o will be less than this value on average | double | 1.7976931348623157E308 | medium | cluster-wide | |
log.cleaner.min.cleanable.ratio | The minimum ratio of dirty log to total log for a log to eligible for cleaning | double | 0.5 | medium | cluster-wide | |
log.cleaner.min.compaction.lag.ms | The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted. | long | 0 | medium | cluster-wide | |
log.cleaner.threads | The number of background threads to use for log cleaning | int | 1 | [0,...] | medium | cluster-wide |
log.cleanup.policy | The default cleanup policy for segments beyond the retention window. A comma separated list of valid policies. Valid policies are: "delete" and "compact" | list | delete | [compact, delete] | medium | cluster-wide |
log.index.interval.bytes | The interval with which we add an entry to the offset index | int | 4096 | [0,...] | medium | cluster-wide |
log.index.size.max.bytes | The maximum size in bytes of the offset index | int | 10485760 | [4,...] | medium | cluster-wide |
log.message.format.version | Specify the message format version the broker will use to append messages to the logs. The value should be a valid ApiVersion. Some examples are: 0.8.2, 0.9.0.0, 0.10.0, check ApiVersion for more details. By setting a particular message format version, the user is certifying that all the existing messages on disk are smaller or equal than the specified version. Setting this value incorrectly will cause consumers with older versions to break as they will receive messages with a format that they don't understand. | string | 2.2-IV1 | [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0, 2.0-IV0, 2.0-IV1, 2.1-IV0, 2.1-IV1, 2.1-IV2, 2.2-IV0, 2.2-IV1] | medium | read-only |
log.message.timestamp.difference.max.ms | The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message. If log.message.timestamp.type=CreateTime, a message will be rejected if the difference in timestamp exceeds this threshold. This configuration is ignored if log.message.timestamp.type=LogAppendTime.The maximum timestamp difference allowed should be no greater than log.retention.ms to avoid unnecessarily frequent log rolling. | long | 9223372036854775807 | medium | cluster-wide | |
log.message.timestamp.type | Define whether the timestamp in the message is message create time or log append time. The value should be either CreateTime or LogAppendTime |
string | CreateTime | [CreateTime, LogAppendTime] | medium | cluster-wide |
log.preallocate | Should pre allocate file when create new segment? If you are using Kafka on Windows, you probably need to set it to true. | boolean | false | medium | cluster-wide | |
log.retention.check.interval.ms | The frequency in milliseconds that the log cleaner checks whether any log is eligible for deletion | long | 300000 | [1,...] | medium | read-only |
max.connections.per.ip | The maximum number of connections we allow from each ip address. This can be set to 0 if there are overrides configured using max.connections.per.ip.overrides property | int | 2147483647 | [0,...] | medium | cluster-wide |
max.connections.per.ip.overrides | A comma-separated list of per-ip or hostname overrides to the default maximum number of connections. An example value is "hostName:100,127.0.0.1:200" | string | "" | medium | cluster-wide | |
max.incremental.fetch.session.cache.slots | The maximum number of incremental fetch sessions that we will maintain. | int | 1000 | [0,...] | medium | read-only |
num.partitions | The default number of log partitions per topic | int | 1 | [1,...] | medium | read-only |
password.encoder.old.secret | The old secret that was used for encoding dynamically configured passwords. This is required only when the secret is updated. If specified, all dynamically encoded passwords are decoded using this old secret and re-encoded using password.encoder.secret when broker starts up. | password | null | medium | read-only | |
password.encoder.secret | The secret used for encoding dynamically configured passwords for this broker. | password | null | medium | read-only | |
principal.builder.class | The fully qualified name of a class that implements the KafkaPrincipalBuilder interface, which is used to build the KafkaPrincipal object used during authorization. This config also supports the deprecated PrincipalBuilder interface which was previously used for client authentication over SSL. If no principal builder is defined, the default behavior depends on the security protocol in use. For SSL authentication, the principal will be derived using the rules defined by ssl.principal.mapping.rules applied on the distinguished name from the client certificate if one is provided; otherwise, if client authentication is not required, the principal name will be ANONYMOUS. For SASL authentication, the principal will be derived using the rules defined by sasl.kerberos.principal.to.local.rules if GSSAPI is in use, and the SASL authentication ID for other mechanisms. For PLAINTEXT, the principal will be ANONYMOUS. |
class | null | medium | per-broker | |
producer.purgatory.purge.interval.requests | The purge interval (in number of requests) of the producer request purgatory | int | 1000 | medium | read-only | |
queued.max.request.bytes | The number of queued bytes allowed before no more requests are read | long | -1 | medium | read-only | |
replica.fetch.backoff.ms | The amount of time to sleep when fetch partition error occurs. | int | 1000 | [0,...] | medium | read-only |
replica.fetch.max.bytes | The number of bytes of messages to attempt to fetch for each partition. This is not an absolute maximum, if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that progress can be made. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). |
int | 1048576 | [0,...] | medium | read-only |
replica.fetch.response.max.bytes | Maximum bytes expected for the entire fetch response. Records are fetched in batches, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that progress can be made. As such, this is not an absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes (broker config) or max.message.bytes (topic config). |
int | 10485760 | [0,...] | medium | read-only |
reserved.broker.max.id | Max number that can be used for a broker.id | int | 1000 | [0,...] | medium | read-only |
sasl.client.callback.handler.class | The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface. | class | null | medium | read-only | |
sasl.enabled.mechanisms | The list of SASL mechanisms enabled in the Kafka server. The list may contain any mechanism for which a security provider is available. Only GSSAPI is enabled by default. | list | GSSAPI | medium | per-broker | |
sasl.jaas.config | JAAS login context parameters for SASL connections in the format used by JAAS configuration files. JAAS configuration file format is described here. The format for the value is: 'loginModuleClass controlFlag (optionName=optionValue)*; '. For brokers, the config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required; |
password | null | medium | per-broker | |
sasl.kerberos.kinit.cmd | Kerberos kinit command path. | string | /usr/bin/kinit | medium | per-broker | |
sasl.kerberos.min.time.before.relogin | Login thread sleep time between refresh attempts. | long | 60000 | medium | per-broker | |
sasl.kerberos.principal.to.local.rules | A list of rules for mapping from principal names to short names (typically operating system usernames). The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, principal names of the form {username}/{hostname}@{REALM} are mapped to {username}. For more details on the format please see security authorization and acls. Note that this configuration is ignored if an extension of KafkaPrincipalBuilder is provided by the principal.builder.class configuration. |
list | DEFAULT | medium | per-broker | |
sasl.kerberos.service.name | The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config. | string | null | medium | per-broker | |
sasl.kerberos.ticket.renew.jitter | Percentage of random jitter added to the renewal time. | double | 0.05 | medium | per-broker | |
sasl.kerberos.ticket.renew.window.factor | Login thread will sleep until the specified window factor of time from last refresh to ticket's expiry has been reached, at which time it will try to renew the ticket. | double | 0.8 | medium | per-broker | |
sasl.login.callback.handler.class | The fully qualified name of a SASL login callback handler class that implements the AuthenticateCallbackHandler interface. For brokers, login callback handler config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler | class | null | medium | read-only | |
sasl.login.class | The fully qualified name of a class that implements the Login interface. For brokers, login config must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin | class | null | medium | read-only | |
sasl.login.refresh.buffer.seconds | The amount of buffer time before credential expiration to maintain when refreshing a credential, in seconds. If a refresh would otherwise occur closer to expiration than the number of buffer seconds then the refresh will be moved up to maintain as much of the buffer time as possible. Legal values are between 0 and 3600 (1 hour); a default value of 300 (5 minutes) is used if no value is specified. This value and sasl.login.refresh.min.period.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | short | 300 | medium | per-broker | |
sasl.login.refresh.min.period.seconds | The desired minimum time for the login refresh thread to wait before refreshing a credential, in seconds. Legal values are between 0 and 900 (15 minutes); a default value of 60 (1 minute) is used if no value is specified. This value and sasl.login.refresh.buffer.seconds are both ignored if their sum exceeds the remaining lifetime of a credential. Currently applies only to OAUTHBEARER. | short | 60 | medium | per-broker | |
sasl.login.refresh.window.factor | Login refresh thread will sleep until the specified window factor relative to the credential's lifetime has been reached, at which time it will try to refresh the credential. Legal values are between 0.5 (50%) and 1.0 (100%) inclusive; a default value of 0.8 (80%) is used if no value is specified. Currently applies only to OAUTHBEARER. | double | 0.8 | medium | per-broker | |
sasl.login.refresh.window.jitter | The maximum amount of random jitter relative to the credential's lifetime that is added to the login refresh thread's sleep time. Legal values are between 0 and 0.25 (25%) inclusive; a default value of 0.05 (5%) is used if no value is specified. Currently applies only to OAUTHBEARER. | double | 0.05 | medium | per-broker | |
sasl.mechanism.inter.broker.protocol | SASL mechanism used for inter-broker communication. Default is GSSAPI. | string | GSSAPI | medium | per-broker | |
sasl.server.callback.handler.class | The fully qualified name of a SASL server callback handler class that implements the AuthenticateCallbackHandler interface. Server callback handlers must be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.plain.sasl.server.callback.handler.class=com.example.CustomPlainCallbackHandler. | class | null | medium | read-only | |
security.inter.broker.protocol | Security protocol used to communicate between brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL. It is an error to set this and inter.broker.listener.name properties at the same time. | string | PLAINTEXT | medium | read-only | |
ssl.cipher.suites | A list of cipher suites. This is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. By default all the available cipher suites are supported. | list | "" | medium | per-broker | |
ssl.client.auth | Configures kafka broker to request client authentication. The following settings are common: * ssl.client.auth=required If set to required client authentication is required. * ssl.client.auth=requested This means client authentication is optional. unlike requested , if this option is set client can choose not to provide authentication information about itself * ssl.client.auth=none This means client authentication is not needed. |
string | none | [required, requested, none] | medium | per-broker |
ssl.enabled.protocols | The list of protocols enabled for SSL connections. | list | TLSv1.2,TLSv1.1,TLSv1 | medium | per-broker | |
ssl.key.password | The password of the private key in the key store file. This is optional for client. | password | null | medium | per-broker | |
ssl.keymanager.algorithm | The algorithm used by key manager factory for SSL connections. Default value is the key manager factory algorithm configured for the Java Virtual Machine. | string | SunX509 | medium | per-broker | |
ssl.keystore.location | The location of the key store file. This is optional for client and can be used for two-way authentication for client. | string | null | medium | per-broker | |
ssl.keystore.password | The store password for the key store file. This is optional for client and only needed if ssl.keystore.location is configured. | password | null | medium | per-broker | |
ssl.keystore.type | The file format of the key store file. This is optional for client. | string | JKS | medium | per-broker | |
ssl.protocol | The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities. | string | TLS | medium | per-broker | |
ssl.provider | The name of the security provider used for SSL connections. Default value is the default security provider of the JVM. | string | null | medium | per-broker | |
ssl.trustmanager.algorithm | The algorithm used by trust manager factory for SSL connections. Default value is the trust manager factory algorithm configured for the Java Virtual Machine. | string | PKIX | medium | per-broker | |
ssl.truststore.location | The location of the trust store file. | string | null | medium | per-broker | |
ssl.truststore.password | The password for the trust store file. If a password is not set access to the truststore is still available, but integrity checking is disabled. | password | null | medium | per-broker | |
ssl.truststore.type | The file format of the trust store file. | string | JKS | medium | per-broker | |
alter.config.policy.class.name | The alter configs policy class that should be used for validation. The class should implement the org.apache.kafka.server.policy.AlterConfigPolicy interface. |
class | null | low | read-only | |
alter.log.dirs.replication.quota.window.num | The number of samples to retain in memory for alter log dirs replication quotas | int | 11 | [1,...] | low | read-only |
alter.log.dirs.replication.quota.window.size.seconds | The time span of each sample for alter log dirs replication quotas | int | 1 | [1,...] | low | read-only |
authorizer.class.name | The authorizer class that should be used for authorization | string | "" | low | read-only | |
client.quota.callback.class | The fully qualified name of a class that implements the ClientQuotaCallback interface, which is used to determine quota limits applied to client requests. By default, |
class | null | low | read-only | |
connection.failed.authentication.delay.ms | Connection close delay on failed authentication: this is the time (in milliseconds) by which connection close will be delayed on authentication failure. This must be configured to be less than connections.max.idle.ms to prevent connection timeout. | int | 100 | [0,...] | low | read-only |
create.topic.policy.class.name | The create topic policy class that should be used for validation. The class should implement the org.apache.kafka.server.policy.CreateTopicPolicy interface. |
class | null | low | read-only | |
delegation.token.expiry.check.interval.ms | Scan interval to remove expired delegation tokens. | long | 3600000 | [1,...] | low | read-only |
kafka.metrics.polling.interval.secs | The metrics polling interval (in seconds) which can be used in kafka.metrics.reporters implementations. | int | 10 | [1,...] | low | read-only |
kafka.metrics.reporters | A list of classes to use as Yammer metrics custom reporters. The reporters should implement kafka.metrics.KafkaMetricsReporter trait. If a client wants to expose JMX operations on a custom reporter, the custom reporter needs to additionally implement an MBean trait that extends kafka.metrics.KafkaMetricsReporterMBean trait so that the registered MBean is compliant with the standard MBean convention. |
list | "" | low | read-only | |
listener.security.protocol.map | Map between listener names and security protocols. This must be defined for the same security protocol to be usable in more than one port or IP. For example, internal and external traffic can be separated even if SSL is required for both. Concretely, the user could define listeners with names INTERNAL and EXTERNAL and this property as: INTERNAL:SSL,EXTERNAL:SSL . As shown, key and value are separated by a colon and map entries are separated by commas. Each listener name should only appear once in the map. Different security (SSL and SASL) settings can be configured for each listener by adding a normalised prefix (the listener name is lowercased) to the config name. For example, to set a different keystore for the INTERNAL listener, a config with name listener.name.internal.ssl.keystore.location would be set. If the config for the listener name is not set, the config will fallback to the generic config (i.e. ssl.keystore.location ). |
string | PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL | low | per-broker | |
log.message.downconversion.enable | This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests. When set to false , broker will not perform down-conversion for consumers expecting an older message format. The broker responds with UNSUPPORTED_VERSION error for consume requests from such older clients. This configurationdoes not apply to any message format conversion that might be required for replication to followers. |
boolean | true | low | cluster-wide | |
metric.reporters | A list of classes to use as metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows plugging in classes that will be notified of new metric creation. The JmxReporter is always included to register JMX statistics. |
list | "" | low | cluster-wide | |
metrics.num.samples | The number of samples maintained to compute metrics. | int | 2 | [1,...] | low | read-only |
metrics.recording.level | The highest recording level for metrics. | string | INFO | low | read-only | |
metrics.sample.window.ms | The window of time a metrics sample is computed over. | long | 30000 | [1,...] | low | read-only |
password.encoder.cipher.algorithm | The Cipher algorithm used for encoding dynamically configured passwords. | string | AES/CBC/PKCS5Padding | low | read-only | |
password.encoder.iterations | The iteration count used for encoding dynamically configured passwords. | int | 4096 | [1024,...] | low | read-only |
password.encoder.key.length | The key length used for encoding dynamically configured passwords. | int | 128 | [8,...] | low | read-only |
password.encoder.keyfactory.algorithm | The SecretKeyFactory algorithm used for encoding dynamically configured passwords. Default is PBKDF2WithHmacSHA512 if available and PBKDF2WithHmacSHA1 otherwise. | string | null | low | read-only | |
quota.window.num | The number of samples to retain in memory for client quotas | int | 11 | [1,...] | low | read-only |
quota.window.size.seconds | The time span of each sample for client quotas | int | 1 | [1,...] | low | read-only |
replication.quota.window.num | The number of samples to retain in memory for replication quotas | int | 11 | [1,...] | low | read-only |
replication.quota.window.size.seconds | The time span of each sample for replication quotas | int | 1 | [1,...] | low | read-only |
ssl.endpoint.identification.algorithm | The endpoint identification algorithm to validate server hostname using server certificate. | string | https | low | per-broker | |
ssl.principal.mapping.rules | A list of rules for mapping from distinguished name from the client certificate to short name. The rules are evaluated in order and the first rule that matches a principal name is used to map it to a short name. Any later rules in the list are ignored. By default, distinguished name of the X.500 certificate will be the principal. For more details on the format please see security authorization and acls. Note that this configuration is ignored if an extension of KafkaPrincipalBuilder is provided by the principal.builder.class configuration. |
list | DEFAULT | low | read-only | |
ssl.secure.random.implementation | The SecureRandom PRNG implementation to use for SSL cryptography operations. | string | null | low | per-broker | |
transaction.abort.timed.out.transaction.cleanup.interval.ms | The interval at which to rollback transactions that have timed out | int | 60000 | [1,...] | low | read-only |
transaction.remove.expired.transaction.cleanup.interval.ms | The interval at which to remove transactions that have expired due to transactional.id.expiration.ms passing`` |
int | 3600000 | [1,...] | low | read-only |
zookeeper.sync.time.ms | How far a ZK follower can be behind a ZK leader | int | 2000 | low | read-only |
1.1 Updating Broker Configs
从Kafka1.1开始,一些broker的配置能在不重启broker的情况下更新。见配置表中的“Dynamic Update Mode”一列,描述了每个broker配置的更新方式。
- read-only: 需要broker重启来更新;
- per-broker: 每个broker都可以动态更新
- cluster-wide: 可以作为集群范围内的动态更新,也可能作为测试的per-broker值。
选择为broker id 0 选择当前的broker配置(例如,清空日志的线程数):
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --add-config log.cleaner.threads=2
为broker id 0描述当前动态broker配置:
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --describe
为broker id 0 删除配置并重置为静态配置或者默认值(例如,日志清理的线程):
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --delete-config log.cleaner.threads
某些配置可以配置为集群范围的默认值,以在整个集群中保持一致的值,急群众的所有brokers都将处理集群更新。例如,要更新所有的brokers上的日志清理线程。
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --alter --add-config log.cleaner.threads=2`
描述当前配置的动态集群范围的默认配置:
bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --describe
所有可在集群级别配置的配置可以在per-broker级别配置(例如,用于测试)。如果在不同级别定义配置值,则用如下优先顺序:
* Dynamic per-broker config stored in ZooKeeper
* Dynamic cluster-wide default config stored in ZooKeeper
* Static broker config from `server.properties`
* Kafka default, see [broker configs](http://kafka.apache.org/documentation/#brokerconfigs)