kafka配置文件
参数 | 描述 | 默认 |
broker.id | broker server 的唯一标识,必须唯一, 如果不设置,或者broker.id<0 则会自动计算broker.id; 相关可以看broker.id.generation.enable和 reserved.broker.max.id 的配置。 | |
reserved.broker.max.id | broker.id能够配置的最大值,同时 reserved.broker.max.id+1也是自动创建broker.id的最小值。 | 1000 |
broker.id.generation.enable | 允许 server 自动创建broker.id。当broker.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. 这个可以用逗号隔开设置多个目录,主要是用来挂载到多个磁盘上的 | null |
zookeeper.connect | 以hostname:port形式指定 ZooKeeper 连接字符串 | |
advertised.listeners | 对外发布的监听器列表,这个配置会存放在 Zookeeper 中,其他 Broker/客户端可以通过元数据拿到这个监听器列表,从而可以对该 Broker 进行访问。如果这个为空,则默认用 listeners 的配置数据. 简单理解:你可能有多个监听器列表,但是你只想告诉其他客户端你只有某一个/多个监听器列表,其他客户端只能通过其发布的监听器列表该 Broker 进行访问 | null |
listeners | 监听器列表,这个配置的监听器将被用于监听网络请求。简单理解就是你建立监听一个通道,别人能够通过这个通道跟你沟通。 | null |
auto.create.topics.enable | 是否能够自动创建 Topic。当生产者向一个未知 Topic 发送消息,或者消费者从未知 Topic 的时候会自动创建 Topic。创建的时候是按照num.partitions和default.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。 | |
log.flush.interval.messages | ||
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 | |
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 |
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 个线程来处理 | |
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 |
偏移 Topic __consumer_offsets 的分区数(部署后不应更改) | 50 | |
offsets.topic.replication.factor | 偏移 Topic __consumer_offsets 的副本数量(设置得更高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。详细请看下面 __consumer_offsets 详解 | |
__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,则将使用操作系统默认值。 | |
socket.request.max.bytes | 套接字请求中的最大字节数 | 104857600(100M) |
socket.send.buffer.bytes | 套接字服务器套接字的 SO_SNDBUF 缓冲区。如果值为 -1,则将使用操作系统默认值 | 102400 |
transaction.max.timeout.ms | 事务的最大允许超时时间。如果客户端请求的事务时间超过此时间,则代理将在 InitProducerIdRequest 中返回错误。这可以防止客户端超时过大,这可能会阻止消费者从事务中包含的主题中读取。 | |
transaction.state.log.load.buffer.size | 5242880 | |
transaction.state.log.min.isr | 跟min.insync.replicas一样,但是事务主题 __transaction_state有自己的配置,他会覆盖min.insync.replicas的配置 | 2 |
transaction.state.log.num.partitions | 事务主题 __transaction_state的分区数量配置(部署后不应更改) | 50 |
事务主题的副本数量(设置得更高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。 | 3 | |
transaction.state.log.segment.bytes | 事务主题 __transaction_state 的 Segment 段字节应该保持相对较小,以促进更快的日志压缩和缓存加载 | 104857600(100M) |
事务协调器在其事务 id 到期之前等待而不接收当前事务的任何事务状态更新的时间(以毫秒为单位)。此设置还会影响生产者 ID 到期 - 在使用给定生产者 ID 的最后一次写入之后,一旦过了此时间,生产者 ID 就会过期。请注意,如果由于主题的保留设置而删除了生产者 ID 的最后一次写入,生产者 ID 可能会更快过期 | 604800000(7 天) | |
unclean.leader.election.enable | 如果开启了这个,当 ISR 列表中没有数据的时候,那么将会从不在 ISR 的副本中选择为 Leader,当然这样子可能会导致数据丢失 | |
客户端等待与 zookeeper 建立连接的最长时间。如果未设置,则使用 zookeeper.session.timeout.ms 中的值 | ||
zookeeper.max.in.flight.requests | ||
Zookeeper 会话超时 | 18000 | |
zookeeper.set.acl | 将客户端设置为使用安全 ACL | false |
broker.rack | broker 的机架配置信息,在进行副本分配的时候会判断是否有机架信息,选择不同的分配策略,以实现容错。 | |
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 |
当该值为 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 将禁用委托令牌支持。 | |
delegation.token.max.lifetime.ms | 令牌有一个最长生命周期,超过这个生命周期就不能再更新了。默认值 7 天。 | |
delete.records.purgatory.purge.interval.requests | 删除记录请求炼狱的清除间隔(以请求数计) | 1 |
fetch.max.bytes | ||
fetch.purgatory.purge.interval.requests | 提取请求炼狱的清除间隔(以请求数计) | |
group.initial.rebalance.delay.ms | 在执行第一次重新平衡之前,组协调器将等待更多消费者加入新组的时间。更长的延迟意味着可能更少的重新平衡,但会增加处理开始之前的时间。 | |
group.max.session.timeout.ms | 注册消费者的最大允许会话超时。更长的超时时间让消费者有更多的时间在心跳之间处理消息,但代价是检测故障的时间更长。 | 1800000 |
group.max.size | ||
注册上的消费者的最小允许会话超时。更短的超时导致更快的故障检测,代价是更频繁的消费者心跳,这可能会淹没代理资源。 | ||
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) | |
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.ms 或 log.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.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 |
实现 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 需要; | |
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,但由于已知的安全漏洞,不鼓励使用它们。 | |
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 的 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 | ||
使用 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 |