kafka配置文件

参数

描述

默认

broker.id

broker server 的唯一标识,必须唯一, 如果不设置,或者broker.id<0 则会自动计算broker.id; 相关可以看broker.id.generation.enablereserved.broker.max.id 的配置。

-1

reserved.broker.max.id

broker.id能够配置的最大值,同时 reserved.broker.max.id+1也是自动创建broker.id的最小值。

1000

broker.id.generation.enable

允许 server 自动创建broker.idbroker.id< 0 并且当前配置是 true,则自动计算broker.id,计算逻辑是 {reserved.broker.max.id} +/brokers/seqid.dataVersion , 其中的/brokers/seqid.dataVersion保证了全局自增

true

log.dir

log 数据存放的目录

/tmp/kafka-logs

log.dirs

Log 数据存放的目录,比如/tmp/kafka-logs. 这个可以用逗号隔开设置多个目录,主要是用来挂载到多个磁盘上的
例如:
/tmp/kafka0,/tmp/kafka1 。如果没有设置,则使用 log.dir的配置

null

zookeeper.connect

hostname:port形式指定 ZooKeeper 连接字符串
也可以用逗号形式指定多个 Zookeeper; 例如:
hostname1:port1,hostname2:port2,hostname3:port3
。如果你的 kafka 数据放在 Zookeeper 的某个路径下,也可以指定对应的路径,例如指定 kafka 数据存放到 Zookeeper 全局命名空间的 /szzkafka 下。那么你可以指定
hostname:port/szzkafka

advertised.listeners

对外发布的监听器列表,这个配置会存放在 Zookeeper 中,其他 Broker/客户端可以通过元数据拿到这个监听器列表,从而可以对该 Broker 进行访问。如果这个为空,则默认用 listeners 的配置数据. 简单理解:你可能有多个监听器列表,但是你只想告诉其他客户端你只有某一个/多个监听器列表,其他客户端只能通过其发布的监听器列表该 Broker 进行访问

null

listeners

监听器列表,这个配置的监听器将被用于监听网络请求。简单理解就是你建立监听一个通道,别人能够通过这个通道跟你沟通。

null

auto.create.topics.enable

是否能够自动创建 Topic。当生产者向一个未知 Topic 发送消息,或者消费者从未知 Topic 的时候会自动创建 Topic。创建的时候是按照num.partitionsdefault.replication.factor 的配置进行

true

auto.leader.rebalance.enable

是否开始自动 Leader 再均衡的功能,具体看扩展讲解的Leader 均衡机制

true

leader.imbalance.check.interval.seconds

Controller 触发 Leader 再均衡的频率,默认 300S 一次。具体看扩展讲解的Leader 均衡机制

300

leader.imbalance.per.broker.percentage

标识每个 Broker 失去平衡的比率,如果超过改比率,则执行重新选举 Broker 的 leader;默认比例是 10%; 具体看扩展讲解的Leader 均衡机制

10

background.threads

用于各种后台处理任务的线程数,例如过期消息文件的删除等

10

compression.type

消息的压缩类型, Kafka 支持的类型有('gzip'、'snappy'、'lz4'、'zstd'), 当然还可以设置uncompressed 表示不启用压缩, 这里 默认是 producer 表示继承使用 producer端的压缩类型。具体请看 压缩类型讲解

producer

control.plane.listener.name

Controller 与 Broker 之间的通信监听器名称, 默认为空,则 Controller 的请求与 Broker 请求都是使用同一个监听器,但是一般 Controller 的请求需要优先级更高一点,则需要单独给 Controller 配置网络请求模块,那么 Controller 的请求就不会被其他请求给影响

null

delete.topic.enable

是否允许删除 Topic。

true

log.flush.interval.messages

在消息刷新到磁盘之前在日志分区上累积的消息数

Long.MaxValue

log.flush.scheduler.interval.ms

定时检查是否有任何日志需要刷新到磁盘的频率(毫秒单位),该值通常搭配log.flush.interval.ms

Long.MaxValue

log.flush.interval.ms

任何 Topic 中的消息在刷新到磁盘之前保留在内存中的最长时间(以毫秒为单位)。如果未设置,则使用 log.flush.scheduler.interval.ms 中的值, 但是需要注意的是,如果没有设置log.flush.scheduler.interval.ms 那么这个值也是不会生效的。因为都没有去定时检查

null

log.flush.start.offset.checkpoint.interval.ms

有个名称为"kafka-log-start-offset-checkpoint"的定时任务去更新日志起始偏移量日志文件,这个配置就是更新的频率,被更新的文件是每个log.dirs中目录下的log-start-offset-checkpoint

60000

log.retention.bytes

日志文件的最大保留大小。分区级别的

-1

log.retention.hours

日志保存的最大时间(单位小时),默认 7 天。优先级 log.retention.ms > log.retention.minutes>log.retention.hours

168

log.retention.minutes

日志保存的最大时间(单位分钟), 优先级 log.retention.ms > log.retention.minutes>log.retention.hours

null

log.retention.ms

日志保存的最大时间(单位毫秒),优先级 log.retention.ms > log.retention.minutes>log.retention.hours.

null

log.roll.hours

创建新日志段之前的最长时间(以小时为单位),默认 7 天, 意思是如果 7 天没有创建新的 Segment,则强制创建新的 Segment 用于存储 Log 数据,优先级 次于 log.roll.ms 属性; 日志段的切分请看 日志段切分条件详解

168

log.roll.ms

log.roll.hours,只是单位是毫秒,优先级大于log.roll.hours ,详情请看下面日志段切分条件详解

null

log.segment.bytes

单个日志段最大值,超过这个值就创建新的日志段,详情请看下面 日志段切分条件详解

1073741824(1G)

log.segment.delete.delay.ms

执行删除操作,Log 文件夹会先被标记为-delete后缀,这个配置就是设置被标记为-delete之后延迟多长时间去真正的从磁盘中删除该文件

60000

message.max.bytes

Kafka 允许的最大记录批量大小(如果启用压缩,则在压缩之后),如果增加此值并且存在早于 0.10.2 的消费者,则消费者的获取大小也必须增加,以便他们可以获取如此大的记录批次。在最新的消息格式版本中,为了提高效率,记录总是被分组。在以前的消息格式版本中,未压缩的记录不会分组到批处理中,并且此限制仅适用于这种情况下的单个记录。这可以使用主题级别max.message.bytes配置为每个主题设置。

1048588(约 1M)

min.insync.replicas

和生产者的配置acks=all配套使用, 表示最小有多少个副本数据同步成功,它的判断条件是 min.insync.replicas<= 当前副本ISR的数量 才可以,否则会抛出异常,更详细的请看下面 min.insync.replicas 详解

1

num.io.threads

服务器用于处理请求的线程数,可能包括磁盘 I/O

8

num.network.threads

服务器用于从网络接收请求并向网络发送响应的线程数

3

num.recovery.threads.per.data.dir

每个数据目录(数据目录即指的是上述 log.dirs 配置的目录路径)用于日志恢复启动和关闭时的线程数量,注意,这个参数指的是每个日志目录的线程数,比如如果该参数设置为 8,而 log.dirs 设置为了三个路径(多个路径由","分隔),则总共会启动 24 个线程来处理

1

num.replica.alter.log.dirs.threads

可以在日志目录之间移动(跨目录迁移)副本的线程数,其中可能包括磁盘 I/O

null

num.replica.fetchers

每个 follower 从 leader 拉取消息进行同步数据时候的拉取线程数,数字大,可以提提高 follower 的 I/O 并发度,单位时间内 leader 持有更多的请求,同时 leader 的负载也会增大

1

offset.metadata.max.bytes

与偏移提交相关联的元数据的最大数据量

4096(4kb)

offsets.commit.required.acks

偏移量相关数据的 ack 设置,0、1、-1 为可选项,默认为-1,不建议你去修改此值

-1

offsets.commit.timeout.ms

偏移量提交将被延迟,直到偏移量主题的所有副本都收到提交或达到此超时。这类似于生产者请求超时

5000

offsets.load.buffer.size

将偏移量加载到缓存中时从偏移量段读取的批量大小(软限制,如果记录太大则覆盖)

5242880

offsets.retention.check.interval.ms

检查陈旧偏移的频率

600000(10 分钟)

offsets.retention.minutes

在消费者组失去其所有消费者(即变空)后,其偏移量将在此保留期内保留,然后再被丢弃。对于独立消费者(使用手动分配),偏移量将在上次提交时间加上此保留期后过期

10080(7 天)

offsets.topic.compression.codec

偏移 Topic __consumer_offsets 的压缩编解码器 - 压缩可用于实现“原子”提交,默认是 0; 对应的压缩 k-v 映射关系为{ 0:NONE、1:GZIP、2:SNAPPY、3:LZ4、4: ZSTD}

0

offsets.topic.num.partitions

偏移 Topic __consumer_offsets 的分区数(部署后不应更改)

50

offsets.topic.replication.factor

偏移 Topic __consumer_offsets 的副本数量(设置得更高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。详细请看下面 __consumer_offsets 详解

3

offsets.topic.segment.bytes

__consumer_offsets主题每个 Segment 的字节应该保持相对较小,以促进更快的日志压缩和缓存加载

104857600(100M)

queued.max.requests

在阻塞网络线程之前允许数据平面的排队请求数

500

replica.fetch.min.bytes

每个 fetch 请求响应所需的最小字节数。如果没有足够的字节,则等待 replicaMaxWaitTimeMs

1

replica.fetch.wait.max.ms

Follower 副本发出的每个 fetcher 请求的最大等待时间。该值应始终小于replica.lag.time.max.ms 以防止频繁收缩低吞吐量主题的 ISR

500

replica.high.watermark.checkpoint.interval.ms

每个 replica 将最高水位进行 flush 的时间间隔

5000

replica.lag.time.max.ms

如果一个 follower 在这个时间内没有发送 fetch 请求,leader 将从 ISR 重移除这个 follow

30000

replica.socket.receive.buffer.bytes

同步时向 leader 发送网络请求时的 socket receive buffer

65536

replica.socket.timeout.ms

副本同步时候网络请求的超时时间,这个值要大于replica.fetch.wait.max.ms

30000

request.timeout.ms

这个配置控制着客户端等待请求响应的最长时间。如果在超时之前没有收到响应,客户端将在必要时重新发送请求,或者如果重试用尽,则请求失败

30000

socket.receive.buffer.bytes

套接字服务器套接字的 SO_RCVBUF 缓冲区。如果值为 -1,则将使用操作系统默认值。

102400(100kb)

socket.request.max.bytes

套接字请求中的最大字节数

104857600(100M)

socket.send.buffer.bytes

套接字服务器套接字的 SO_SNDBUF 缓冲区。如果值为 -1,则将使用操作系统默认值

102400

transaction.max.timeout.ms

事务的最大允许超时时间。如果客户端请求的事务时间超过此时间,则代理将在 InitProducerIdRequest 中返回错误。这可以防止客户端超时过大,这可能会阻止消费者从事务中包含的主题中读取。

900000

transaction.state.log.load.buffer.size

将生产者 ID 和事务加载到缓存中时从事务日段读取的批量大小(软限制,如果记录太大则覆盖)

5242880

transaction.state.log.min.isr

min.insync.replicas一样,但是事务主题 __transaction_state有自己的配置,他会覆盖min.insync.replicas的配置

2

transaction.state.log.num.partitions

事务主题 __transaction_state的分区数量配置(部署后不应更改)

50

transaction.state.log.replication.factor

事务主题的副本数量(设置得更高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。

3

transaction.state.log.segment.bytes

事务主题 __transaction_state 的 Segment 段字节应该保持相对较小,以促进更快的日志压缩和缓存加载

104857600(100M)

transactional.id.expiration.ms

事务协调器在其事务 id 到期之前等待而不接收当前事务的任何事务状态更新的时间(以毫秒为单位)。此设置还会影响生产者 ID 到期 - 在使用给定生产者 ID 的最后一次写入之后,一旦过了此时间,生产者 ID 就会过期。请注意,如果由于主题的保留设置而删除了生产者 ID 的最后一次写入,生产者 ID 可能会更快过期

604800000(7 天)

unclean.leader.election.enable

如果开启了这个,当 ISR 列表中没有数据的时候,那么将会从不在 ISR 的副本中选择为 Leader,当然这样子可能会导致数据丢失

false

zookeeper.connection.timeout.ms

客户端等待与 zookeeper 建立连接的最长时间。如果未设置,则使用 zookeeper.session.timeout.ms 中的值

null

zookeeper.max.in.flight.requests

客户端在阻塞之前将发送给 Zookeeper 的最大未确认请求数。

10

zookeeper.session.timeout.ms

Zookeeper 会话超时

18000

zookeeper.set.acl

将客户端设置为使用安全 ACL

false

broker.rack

broker 的机架配置信息,在进行副本分配的时候会判断是否有机架信息,选择不同的分配策略,以实现容错。

null

connection.max.idle.ms

空闲连接超时:服务器套接字处理器线程关闭空闲超过此时间的连接

600000

connection.max.reauth.ms

当明确设置为正数(默认为 0,不是正数)时,不会超过配置值的会话生存期将在 v2.2.0 或更高版本的客户端进行身份验证时进行通信。代理将断开在会话生命周期内未重新验证的任何此类连接,然后将其用于除重新验证之外的任何目的。配置名称可以选择以小写的侦听器前缀和 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.oauthbearer.connections.max.reauth.ms=3600000

0

controlled.shutdown.enable

当该值为 true, 然后当 Broker 关闭的时候, 会向 Controller 发一起一个ControlledShutdownRequest请求, Controller 收到这个请求会针对性的做一些善后事件。比如说 执行 Leader 重选举 等等之类的 。如果改值为 false,则不会有善后请求事件

true

controlled.shutdown.max.retries

Broker 关闭的时候会通知 Controller 执行一个受控关闭的操作,这个操作可能由于多种原因而失败。这决定了发生此类故障时的重试次

3

controlled.shutdown.retry.backoff.ms

在每次重试之前,系统需要时间从导致上一次故障(控制器故障转移、副本滞后等)的状态中恢复。此配置确定重试前等待的时间。

5000

controller.socket.timeout.ms

控制器 Controller 到 broker 通道的套接字超时时间

30000

default.replication.factor

创建主题的默认副本因子

1

delegation.token.expiry.time.ms

令牌需要更新之前的令牌有效期(以毫秒为单位)。默认值 1 天。

86400000

delegation.token.master.key

生成和验证委托令牌的主/秘密密钥。必须在所有代理上配置相同的密钥。如果密钥未设置或设置为空字符串,broker 将禁用委托令牌支持。

null

delegation.token.max.lifetime.ms

令牌有一个最长生命周期,超过这个生命周期就不能再更新了。默认值 7 天。

604800000

delete.records.purgatory.purge.interval.requests

删除记录请求炼狱的清除间隔(以请求数计)

1

fetch.max.bytes

Fetch 请求返回的最大字节数。必须至少为 1024。

57671680(55M)

fetch.purgatory.purge.interval.requests

提取请求炼狱的清除间隔(以请求数计)

1000

group.initial.rebalance.delay.ms

在执行第一次重新平衡之前,组协调器将等待更多消费者加入新组的时间。更长的延迟意味着可能更少的重新平衡,但会增加处理开始之前的时间。

3000

group.max.session.timeout.ms

注册消费者的最大允许会话超时。更长的超时时间让消费者有更多的时间在心跳之间处理消息,但代价是检测故障的时间更长。

1800000

group.max.size

单个消费组可以容纳的最大消费者数。

2147483647

group.min.session.timeout.ms

注册上的消费者的最小允许会话超时。更短的超时导致更快的故障检测,代价是更频繁的消费者心跳,这可能会淹没代理资源。

6000

inter.broker.listener.name

用于代理之间通信的侦听器名称。如果未设置,则侦听器名称由 security.inter.broker.protocol 定义。同时设置 这个 和 security.inter.broker.protocol 属性是错误的。

null

inter.broker.protocol.version

指定将使用哪个版本的代理间协议。在所有代理升级到新版本后,这通常会受到影响。可选的所有版本: [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、2.3-IV0、2.3-IV1、2.4-IV0、2.4-IV1、2.5-IV0]

根据 kafka 版本会有不同的默认值,例如 2.5-IV0

log.cleaner.backoff.ms

没有要清理的日志时的睡眠时间

15000

log.cleaner.dedupe.buffer.size

134217728(128M)

log.cleaner.delete.retention.ms

86400000(24 小时)

log.cleaner.enable

是否开启日志情侣进程, 特殊是如果使用带有 cleanup.policy=compact 的任何主题,包括内部偏移主题,则应启用。如果禁用,这些主题将不会被压缩并不断增长

true

log.cleaner.io.buffer.load.factor

0.9

log.cleaner.io.buffer.size

所有清理线程中用于日志清理 I/O 缓冲区的总内存

524288

log.cleaner.io.max.bytes.per.second

日志清理器将受到限制,以便其读写 I/O 的总和平均小于此值

1.7976931348623157E308

log.cleaner.max.compaction.lag.ms

消息在日志中不符合压缩条件的最长时间。仅适用于正在压缩的日志。

9223372036854775807(Long.MaxValue)

log.cleaner.min.cleanable.ratio

对于符合清理条件的日志,脏日志与总日志的最小比率。如果还指定了 log.cleaner.max.compaction.lag.mslog.cleaner.min.compaction.lag.ms 配置,则日志压缩器会在以下任一情况下认为该日志符合压缩条件:(i)已达到脏比率阈值并且日志至少在 log.cleaner.min.compaction.lag.ms 持续时间内有脏(未压缩)记录,或者(ii)如果日志最多有脏(未压缩)记录log.cleaner.max.compaction.lag.ms 周期

0.5

log.cleaner.min.compaction.lag.ms

消息在日志中保持未压缩的最短时间。仅适用于正在压缩的日志。

0

log.cleaner.threads

用于日志清理的后台线程数

1

log.cleanup.policy

日志清理策略, delete 表示删除过期日志,还有一个 compact 选项表示压缩日志。

delete

log.index.interval.bytes

每隔多少个字节的消息量写入就条件一条索引。

4096

log.index.size.max.bytes

索引文件最大值

10485760(10M)

log.message.format.version

消息格式的版本; [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、2.3-IV0、2.3-IV1、2.4-IV0、2.4-IV1、2.5-IV0]

log.message.timestamp.difference.max.ms

代理接收消息时的时间戳与消息中指定的时间戳之间允许的最大差异。如果 log.message.timestamp.type=CreateTime,则如果时间戳差异超过此阈值,则消息将被拒绝。如果 log.message.timestamp.type=LogAppendTime 则忽略此配置。允许的最大时间戳差异不应大于log.retention.ms以避免不必要的频繁日志滚动

9223372036854775807(Logn.MaxValue)

log.message.timestamp.type

可定义消息中的时间戳是消息创建时间还是日志附加时间。该值应该是 CreateTime 或 LogAppendTime

CreateTime

log.preallocate

创建新段时应该预先分配文件吗?如果您在 Windows 上使用 Kafka,则可能需要将其设置为 true。

false

log.retention.check.interval.ms

日志清理器检查任何日志是否符合删除条件的频率(以毫秒为单位)

300000(5 分钟)

max.connections

我们在任何时候允许的最大连接数。除了使用 max.connections.per.ip 配置的任何 per-ip 限制之外,还应用此限制。侦听器级别的限制也可以通过在配置名称前加上侦听器前缀来配置,例如,listener.name.internal.max.connections。应根据代理容量配置代理范围限制,而应根据应用程序要求配置侦听器限制。如果达到侦听器或代理限制,则新连接将被阻止。即使达到代理范围的限制,也允许代理间侦听器上的连接。在这种情况下,另一个侦听器上最近最少使用的连接将被关闭。

2147483647(Integer.MaxValue)

max.connections.per.ip

我们允许来自每个 IP 地址的最大连接数。如果使用 max.connections.per.ip.overrides 属性配置了覆盖,则可以将其设置为 0。如果达到限制,来自 IP 地址的新连接将被丢弃。

2147483647(Integer.MaxValue)

max.connections.per.ip.overrides

以逗号分隔的 per-ip 或主机名列表覆盖默认的最大连接数。示例值为“hostName:100,127.0.0.1:200”

“”

max.incremental.fetch.session.cache.slots

维护的最大增量 fetch 会话数。

1000

num.partitions

创建 topic 时候的默认分区数

1

password.encoder.old.secret

用于对动态配置的密码进行编码的旧秘密。只有在更新密码时才需要这样做。如果指定,则当代理启动时,所有动态编码的密码将使用此旧密码解码,并使用 password.encoder.secret 重新编码。(就是你要换密码总得先用老的密码解密再用新密码进行加密呢)

null

password.encoder.secret

动态配置编码的秘钥

null

principal.builder.class

实现 KafkaPrincipalBuilder 接口的类的完全限定名称,用于构建授权期间使用的 KafkaPrincipal 对象。此配置还支持已弃用的 PrincipalBuilder 接口,该接口以前用于通过 SSL 进行客户端身份验证。如果未定义主体构建器,则默认行为取决于使用的安全协议。对于 SSL 身份验证,ssl.principal.mapping.rules 如果提供了客户端证书,将使用应用在客户端证书的专有名称上定义的规则派生主体;否则,如果不需要客户端身份验证,则主体名称将为 ANONYMOUS。对于 SASL 身份验证,将使用定义的规则派生主体 sasl.kerberos.principal.to.local.rules 如果正在使用 GSSAPI,以及其他机制的 SASL 身份验证 ID。对于 PLAINTEXT,委托人将是匿名的

null

producer.purgatory.purge.interval.requests

1000

queued.max.request.bytes

在不再读取请求之前允许的排队字节数

-1

replica.fetch.backoff.ms

当发生 fetch 分区的时候 休眠的时间长度

1000

replica.fetch.max.bytes

尝试为每个分区获取的消息字节数。这不是绝对最大值,如果 fetch 的第一个非空分区中的第一个记录批次大于此值,则仍然会返回该记录批次以确保可以取得进展。代理接受的最大记录批量大小是通过 message.max.bytes(broker config) 或 max.message.bytes(topic config) 定义的。

1048576

replica.fetch.response.max.bytes

整个 Fetch 响应预期的最大字节数。记录是分批获取的,如果获取的第一个非空分区中的第一个记录批次大于该值,则仍然会返回该记录批次以确保可以取得进展。因此,这不是绝对最大值。代理接受的最大记录批量大小是通过 message.max.bytes(broker config) 或 max.message.bytes(topic config) 定义的。

10485760

replica.selector.class

实现 ReplicaSelector 的完全限定类名。broker 使用它来查找首选只读副本。默认情况下,我们使用返回 leader 的实现方式。

null

sasl.client.callback.handler.class

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称

sasl.enabled.mechanisms

Kafka 服务器中启用的 SASL 机制列表。该列表可能包含安全提供者可用的任何机制。默认情况下仅启用 GSSAPI。

GSSAPI

sasl.jaas.config

SASL 连接的 JAAS 登录上下文参数,采用 JAAS 配置文件使用的格式。此处描述了 JAAS 配置文件格式。该值的格式为:’ loginModuleClass controlFlag (optionName=optionValue)*;'。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule 需要;

null

sasl.kerberos.kinit.cmd

Kerberos kinit 命令路径。

/usr/bin/kinit

sasl.kerberos.min.time.before.relogin

刷新尝试之间的登录线程休眠时间。

60000

sasl.kerberos.principal.to.local.rules

从主体名称到短名称(通常是操作系统用户名)的映射规则列表。规则按顺序评估,与主体名称匹配的第一个规则用于将其映射到短名称。列表中任何后面的规则都将被忽略。默认情况下,{username}/{hostname}@{REALM} 形式的主体名称映射到 {username}。有关格式的更多详细信息,请参阅安全授权和 acls。请注意,如果 principal.builder.class 配置提供了 KafkaPrincipalBuilder 的扩展,则此配置将被忽略。

null

sasl.kerberos.service.name

Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。

null

sasl.kerberos.ticket.renew.jitter

添加到更新时间的随机抖动百分比。

0.05

sasl.kerberos.ticket.renew.window.factor

登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。

0.8

sasl.login.callback.handler.class

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler

null

sasl.login.class

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin

null

sasl.login.refresh.buffer.seconds

刷新凭证时在凭证到期之前保持的缓冲时间,以秒为单位。如果刷新将在比缓冲秒数更接近到期时发生,则刷新将向上移动以保持尽可能多的缓冲时间。合法值介于 0 到 3600(1 小时)之间;如果未指定值,则使用默认值 300(5 分钟)。如果此值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都将被忽略。目前仅适用于 OAUTHBEARER。

300

sasl.login.refresh.min.period.seconds

在刷新凭据之前登录刷新线程所需的最短等待时间,以秒为单位。合法值介于 0 到 900(15 分钟)之间;如果未指定值,则使用默认值 60(1 分钟)。如果此值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都将被忽略。目前仅适用于 OAUTHBEARER。

60

sasl.login.refresh.window.factor

登录刷新线程将休眠,直到达到与凭证生命周期相关的指定窗口因子,此时它将尝试刷新凭证。合法值介于 0.5 (50%) 和 1.0 (100%) 之间;如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

0.8

sasl.login.refresh.window.jitter

添加到登录刷新线程的睡眠时间的相对于凭证生命周期的最大随机抖动量。合法值介于 0 和 0.25 (25%) 之间;如果未指定值,则使用默认值 0.05 (5%)。目前仅适用于 OAUTHBEARER

0.05

sasl.mechanism.inter.broker.protocol

SASL 机制用于代理间通信。默认为 GSSAPI。

GSSAPI

sasl.server.callback.handler.class

实现 AuthenticateCallbackHandler 接口的 SASL 服务器回调处理程序类的完全限定名称。服务器回调处理程序必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.plain.sasl.server.callback.handler.class=com.example.CustomPlainCallbackH

null

security.inter.broker.protocol

用于代理之间通信的安全协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。不能同时设置 这个和 inter.broker.listener.name 属性。

PLAINTEXT

ssl.cipher.suites

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于协商使用 TLS 或 SSL 网络协议的网络连接的安全设置。默认情况下,支持所有可用的密码套件。

ssl.client.auth

配置 kafka 代理以请求客户端身份验证。以下设置是常见的:ssl.client.auth=required 如果设置为 required 则需要客户端身份验证。ssl.client.auth=requested 这意味着客户端身份验证是可选的。与请求不同,如果设置了此选项,客户端可以选择不提供有关自身的身份验证信息 ssl.client.auth=none 这意味着不需要客户端身份验证。

none

ssl.enabled.protocols

为 SSL 连接启用的协议列表。

TLSv1.2

ssl.key.password

密钥库文件中私钥的密码。这是客户端可选的。

ssl.keymanager.algorithm

密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。

SunX509

ssl.keystore.location

密钥存储文件的位置。这对客户端是可选的,可用于客户端的双向身份验证。

null

ssl.keystore.password

密钥存储文件的存储密码。这对客户端是可选的,只有在配置了 ssl.keystore.location 时才需要。

null

ssl.keystore.type

密钥库文件的文件格式。这是客户端可选的。

JKS

ssl.protocol

用于生成 SSLContext 的 SSL 协议。默认设置为 TLSv1.2,适用于大多数情况。最近的 JVM 中允许的值为 TLSv1.2 和 TLSv1.3。旧的 JVM 可能支持 TLS、TLSv1.1、SSL、SSLv2 和 SSLv3,但由于已知的安全漏洞,不鼓励使用它们。

TLSv1.2

ssl.provider

用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。

null

ssl.trustmanager.algorithm

信任管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。

PKIX

ssl.truststore.location

信任存储文件的位置。

null

ssl.truststore.password

信任存储文件的密码。如果未设置密码,则仍可访问信任库,但禁用完整性检查。

null

ssl.truststore.type

ssl.truststore.type

JKS

zookeeper.clientCnxnSocket

通常 org.apache.zookeeper.ClientCnxnSocketNetty 在使用 TLS 连接到 ZooKeeper 时设置为。覆盖通过同名 zookeeper.clientCnxnSocket 系统属性设置的任何显式值。

zookeeper.ssl.client.enable

设置客户端在连接到 ZooKeeper 时使用 TLS。显式值会覆盖通过 zookeeper.client.secure 系统属性设置的任何值(注意不同的名称)。如果两者都没有设置,则默认为 false;当为真时,zookeeper.clientCnxnSocket 必须设置(通常为 org.apache.zookeeper.ClientCnxnSocketNetty);要设置的其他值可能包括 zookeeper.ssl.cipher.suites、zookeeper.ssl.crl.enable、zookeeper.ssl.enabled.protocols、zookeeper.ssl.endpoint.identification.algorithm、zookeeper.ssl.keystore.location、zookeeper.ssl.keystore.password、zookeeper.ssl.keystore.type、zookeeper.ssl.ocsp.enable、zookeeper.ssl.protocol、zookeeper.ssl.truststore.location、zookeeper.ssl.truststore.password、zookeeper.ssl.truststore.typell

false

zookeeper.ssl.keystore.location

使用客户端证书与 ZooKeeper 的 TLS 连接时的密钥库位置。覆盖通过 zookeeper.ssl.keyStore.location 系统属性设置的任何显式值(注意驼峰式命名法)。

null

zookeeper.ssl.keystore.password

使用客户端证书与 ZooKeeper 的 TLS 连接时的密钥库密码。覆盖通过 zookeeper.ssl.keyStore.password 系统属性设置的任何显式值(注意驼峰式命名法)。注意 ZooKeeper 不支持与 keystore 密码不同的 key 密码,所以一定要设置 keystore 中的 key 密码与 keystore 密码一致;否则与 Zookeeper 的连接尝试将失败

null

zookeeper.ssl.keystore.type

使用客户端证书与 ZooKeeper 的 TLS 连接时的密钥库类型。覆盖通过 zookeeper.ssl.keyStore.type 系统属性设置的任何显式值(注意驼峰式命名法)。默认值 null 表示将根据密钥库的文件扩展名自动检测类型。

zookeeper.ssl.truststore.location

使用 TLS 连接到 ZooKeeper 时的信任库位置。覆盖通过 zookeeper.ssl.trustStore.location 系统属性设置的任何显式值(注意驼峰式命名法)。

null

zookeeper.ssl.truststore.password

使用 TLS 连接到 ZooKeeper 时的 Truststore 密码。覆盖通过 zookeeper.ssl.trustStore.password 系统属性设置的任何显式值(注意驼峰式命名法)。

null

zookeeper.ssl.truststore.type

使用 TLS 连接到 ZooKeeper 时的 Truststore 类型。覆盖通过 zookeeper.ssl.trustStore.type 系统属性设置的任何显式值(注意驼峰式命名法)。默认值 null 表示将根据信任库的文件扩展名自动检测类型。

null

alter.config.policy.class.name

应该用于验证的更改配置策略类。类应该实现 org.apache.kafka.server.policy.AlterConfigPolicy 接口。

null

alter.log.dirs.replication.quota.window.num

更改日志目录复制配额而在内存中保留的样本数

11

alter.log.dirs.replication.quota.window.size.seconds

更改日志目录复制配额的每个示例的时间跨度

1

listener.security.protocol.map

侦听器名称和安全协议之间的映射。必须为同一安全协议定义这一点,才能在多个端口或 IP 中使用。例如,即使内部和外部流量都需要 SSL,也可以将两者分开。具体来说,用户可以定义名称为 INTERNAL 和 EXTERNAL 的侦听器,并且此属性为:INTERNAL:SSL,EXTERNAL:SSL。如图所示,键和值用冒号分隔,映射条目用逗号分隔。每个侦听器名称在地图中只应出现一次。通过向配置名称添加规范化前缀(侦听器名称小写),可以为每个侦听器配置不同的安全性(SSL 和 SASL)设置。例如,要为 INTERNAL 侦听器设置不同的密钥库,名称为 listener.name.internal.ssl.keystore.location 将被设置。如果未设置侦听器名称的配置,则配置将回退到通用配置(即 ssl.keystore.location)

PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

log.message.downconversion.enable

此配置控制是否启用消息格式的下转换以满足消费请求。当设置为 时 false,broker 将不会为需要旧消息格式的消费者执行向下转换。代理响应 UNSUPPORTED_VERSION 来自此类较旧客户端的消费请求的错误。此配置不适用于复制到追随者可能需要的任何消息格式转换。

true

password.encoder.cipher.algorithm

用于对动态配置的密码进行编码的密码算法。

AES/CBC/PKCS5Padding

password.encoder.iterations

用于编码动态配置密码的迭代计数。

4096

password.encoder.key.length

用于对动态配置的密码进行编码的密钥长度。

128

password.encoder.keyfactory.algorithm

用于对动态配置的密码进行编码的 SecretKeyFactory 算法。如果可用,默认为 PBKDF2WithHmacSHA512,否则为 PBKDF2WithHmacSHA1

null

security.providers

一个可配置的创建者类列表,每个类返回一个实现安全算法的提供者。这些类应该实现 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

null

ssl.endpoint.identification.algorithm

使用服务器证书验证服务器主机名的端点识别算法。

https

ssl.principal.mapping.rules

用于从客户端证书的专有名称映射到短名称的规则列表。规则按顺序评估,与主体名称匹配的第一个规则用于将其映射到短名称。列表中任何后面的规则都将被忽略。默认情况下,X.500 证书的专有名称将是主体。有关格式的更多详细信息,请参阅安全授权和 acls。请注意,如果 principal.builder.class 配置提供了 KafkaPrincipalBuilder 的扩展,则此配置将被忽略。

DEFAULT

ssl.secure.random.implementation

用于 SSL 加密操作的 SecureRandom PRNG 实现。

null

transaction.abort.timed.out.transaction.cleanup.interval.ms

回滚超时事务的时间间隔

10000

transaction.remove.expired.transaction.cleanup.interval.ms

删除由于 transactional.id.expiration.ms 传递而过期的事务的时间间隔

3600000

zookeeper.ssl.cipher.suites

指定要在 ZooKeeper TLS 协商 (csv) 中使用的已启用密码套件。覆盖通过 zookeeper.ssl.ciphersuites 系统属性设置的任何显式值(注意单个词“密码套件”)。的默认值 null 意味着启用的密码套件列表由正在使用的 Java 运行时确定

null

zookeeper.ssl.crl.enable

ZooKeeper TLS 协议中是否开启证书吊销列表。覆盖通过 zookeeper.ssl.crl 系统属性设置的任何显式值(注意较短的名称)

false

zookeeper.ssl.enabled.protocols

在 ZooKeeper TLS 协商 (csv) 中指定启用的协议。覆盖通过 zookeeper.ssl.enabledProtocols 系统属性设置的任何显式值(注意驼峰式命名法)。的默认值 null 意味着启用的协议将是 zookeeper.ssl.protocol 配置属性的值

null

zookeeper.ssl.endpoint.identification.algorithm

指定是否在 ZooKeeper TLS 协商过程中启用主机名验证,其中(不区分大小写)“https”表示启用 ZooKeeper 主机名验证,显式空白值表示禁用(仅建议出于测试目的禁用)。显式值会覆盖通过 zookeeper.ssl.hostnameVerification 系统属性设置的任何“true”或“false”值(注意不同的名称和值;true 表示 https,false 表示空白)

HTTPS

zookeeper.ssl.ocsp.enable

ZooKeeper TLS 协议中是否开启在线证书状态协议。覆盖通过 zookeeper.ssl.ocsp 系统属性设置的任何显式值(注意较短的名称)

false

zookeeper.ssl.protocol

指定要在 ZooKeeper TLS 协商中使用的协议。显式值会覆盖通过同名 zookeeper.ssl.protocol 系统属性设置的任何值

null

zookeeper.sync.time.ms

ZK 追随者可以落后于 ZK 领导者多远

2000


kafka配置文件
https://www.hechunyu.com/archives/1698219096025
作者
chunyu
发布于
2023年06月25日
许可协议