当前位置: 首页 > news >正文

kafka动态配置详解

目录

  • Broker配置
    • Broker静态配置
    • Broker动态配置
    • Broker动态配置列表
    • Broker动态配置操作
        • cluster-wide 范围值查看
        • cluster-wide 范围值 修改
        • per-broker 范围值 查看
        • per-broker 范围值 修改
        • per-broker 范围值 删除
        • cluster-wide 范围值 删除
    • 高概率调整配置
  • 主题Topic配置
    • 主题Topic动态配置列表
    • 查看
    • 配置
  • 动态配置存储
    • zookeeper模式
    • kraft 模式

kafka-configs.sh 是 Kafka 提供的一个命令行工具,用于管理 Kafka broker、主题 (topic)、消费者组 (consumer group) 等资源的配置。

Broker配置

Broker静态配置

通常情况下,我们会指定config路径下的server.properties 文件的来启动 Broker。
如果要设置 Broker 端的任何参数,我们必须在这个文件中显式地增加一行对应的配置,之后启动 Broker 进程,令参数生效。我们常见的做法是,一次性设置好所有参数之后,再启动 Broker。当后面需要变更任何参数时,我们必须重启 Broker。
在真正的生产环境中,随意重启Broker是不被允许的。所以需要有动态调整Broker参数的方法。

Broker动态配置

参考kafka配置说明,Dynamic Update Mode 列。该列有 3 类值,分别是 read-only、per-broker 和 cluster-wide。

  • read-only。被标记为 read-only 的参数和原来的参数行为一样,只有重启 Broker,才能令修改生效。
  • per-broker。被标记为 per-broker 的参数属于动态参数,修改它之后,只会在对应的 Broker 上生效。
  • cluster-wide。被标记为 cluster-wide 的参数也属于动态参数,修改它之后,会在整个集群范围内生效,也就是说,对所有 Broker 都生效。你也可以为具体的 Broker 修改 cluster-wide 参数。

原文地址

Broker动态配置列表

来自于./bin/kafka-configs.sh --help

                                      For entity-type 'brokers':             advertised.listeners                  background.threads                    compression.type                      follower.replication.throttled.rate   leader.replication.throttled.rate     listener.security.protocol.map        listeners                             log.cleaner.backoff.ms                log.cleaner.dedupe.buffer.size        log.cleaner.delete.retention.ms       log.cleaner.io.buffer.load.factor     log.cleaner.io.buffer.size            log.cleaner.io.max.bytes.per.second   log.cleaner.max.compaction.lag.ms     log.cleaner.min.cleanable.ratio       log.cleaner.min.compaction.lag.ms     log.cleaner.threads                   log.cleanup.policy                    log.flush.interval.messages           log.flush.interval.ms                 log.index.interval.bytes              log.index.size.max.bytes              log.local.retention.bytes             log.local.retention.ms                log.message.downconversion.enable     log.message.timestamp.after.max.ms    log.message.timestamp.before.max.ms   log.message.timestamp.difference.max.ms                                   log.message.timestamp.type            log.preallocate                       log.retention.bytes                   log.retention.ms                      log.roll.jitter.ms                    log.roll.ms                           log.segment.bytes                     log.segment.delete.delay.ms           max.connection.creation.rate          max.connections                       max.connections.per.ip                max.connections.per.ip.overrides      message.max.bytes                     metric.reporters                      min.insync.replicas                   num.io.threads                        num.network.threads                   num.recovery.threads.per.data.dir     num.replica.fetchers                  principal.builder.class               producer.id.expiration.ms             remote.log.index.file.cache.total.    size.bytes                           replica.alter.log.dirs.io.max.bytes.  per.second                           sasl.enabled.mechanisms               sasl.jaas.config                      sasl.kerberos.kinit.cmd               sasl.kerberos.min.time.before.relogin sasl.kerberos.principal.to.local.rulessasl.kerberos.service.name            sasl.kerberos.ticket.renew.jitter     sasl.kerberos.ticket.renew.window.    factor                               sasl.login.refresh.buffer.seconds     sasl.login.refresh.min.period.seconds sasl.login.refresh.window.factor      sasl.login.refresh.window.jitter      sasl.mechanism.inter.broker.protocol  ssl.cipher.suites                     ssl.client.auth                       ssl.enabled.protocols                 ssl.endpoint.identification.algorithm ssl.engine.factory.class              ssl.key.password                      ssl.keymanager.algorithm              ssl.keystore.certificate.chain        ssl.keystore.key                      ssl.keystore.location                 ssl.keystore.password                 ssl.keystore.type                     ssl.protocol                          ssl.provider                          ssl.secure.random.implementation      ssl.trustmanager.algorithm            ssl.truststore.certificates           ssl.truststore.location               ssl.truststore.password               ssl.truststore.type                   transaction.partition.verification.   enable                               unclean.leader.election.enable        

Broker动态配置操作

如果要设置 cluster-wide 范围的动态参数,需要显式指定 entity-default

cluster-wide 范围值查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default   --describe
cluster-wide 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --add-config unclean.leader.election.enable=true

在这里插入图片描述
从输出来看,我们成功地在全局层面上设置该参数值为 true。注意 sensitive=false 的字眼,它表明我们要调整的参数不是敏感数据。如果我们调整的是类似于密码这样的参数时,该字段就会为 true,表示这属于敏感数据。

per-broker 范围值 查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --describe

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type brokers --entity-name 1 --describe
Dynamic configs for broker 1 are:

per-broker 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --alter --add-config unclean.leader.election.enable=false

在这里插入图片描述
这条命令的输出信息很多。我们关注两点即可。

  • 在 Broker 1 层面上,该参数被设置成了 false,这表明命令运行成功了。
  • 从倒数第二行可以看出,在全局层面上,该参数值依然是 true。这表明,我们之前设置的 cluster-wide 范围参数值依然有效。
per-broker 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers  --entity-name 1  --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

cluster-wide 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

高概率调整配置

  1. log.retention.ms。

修改日志留存时间应该算是一个比较高频的操作,毕竟,我们不可能完美地预估所有业务的消息留存时长。虽然该参数有对应的主题级别参数可以设置,但拥有在全局层面上动态变更的能力,依然是一个很好的功能亮点。

  1. num.io.threads 和 num.network.threads。

这是我们在前面提到的两组线程池。就我个人而言,我觉得这是动态 Broker 参数最实用的场景了。毕竟,在实际生产环境中,Broker 端请求处理能力经常要按需扩容。如果没有动态 Broker 参数,我们是无法做到这一点的。

  1. 与 SSL 相关的参数。

主要是 4 个参数(ssl.keystore.type、ssl.keystore.location、ssl.keystore.password 和 ssl.key.password)。允许动态实时调整它们之后,我们就能创建那些过期时间很短的 SSL 证书。每当我们调整时,Kafka 底层会重新配置 Socket 连接通道并更新 Keystore。新的连接会使用新的 Keystore,阶段性地调整这组参数,有利于增加安全性。

  1. num.replica.fetchers。

这也是我认为的最实用的动态 Broker 参数之一。Follower 副本拉取速度慢,在线上 Kafka 环境中一直是一个老大难的问题。针对这个问题,常见的做法是增加该参数值,确保有充足的线程可以执行 Follower 副本向 Leader 副本的拉取。现在有了动态参数,你不需要再重启 Broker,就能立即在 Follower 端生效,因此我说这是很实用的应用场景。

主题Topic配置

主题Topic动态配置列表

                                         For entity-type 'topics':            cleanup.policy                        compression.type                      delete.retention.ms                   file.delete.delay.ms                  flush.messages                        flush.ms                              follower.replication.throttled.       replicas                             index.interval.bytes                  leader.replication.throttled.replicas local.retention.bytes                 local.retention.ms                    max.compaction.lag.ms                 max.message.bytes                     message.downconversion.enable         message.format.version                message.timestamp.after.max.ms        message.timestamp.before.max.ms       message.timestamp.difference.max.ms   message.timestamp.type                min.cleanable.dirty.ratio             min.compaction.lag.ms                 min.insync.replicas                   preallocate                           remote.storage.enable                 retention.bytes                       retention.ms                          segment.bytes                         segment.index.bytes                   segment.jitter.ms                     segment.ms                            unclean.leader.election.enable

查看

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --describe

配置

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --alter --add-config retention.ms=43200000

配置后查看效果:
在这里插入图片描述

动态配置存储

zookeeper模式

zookeeper模式的kafka,动态配置保存在zookeeper中。

kraft 模式

基于kraft模式 的kafka 动态配置在 主题 __cluster_metadata 中存储

可以通过 ./bin/kafka-metadata-shell.sh --snapshot data/__cluster_metadata-0/00000000000000000000.log 命令查看
在这里插入图片描述

http://www.lryc.cn/news/597039.html

相关文章:

  • 基于Kafka实现动态监听topic功能
  • 变频器实习DAY12
  • (一)从零搭建unity3d机械臂仿真-unity3d导入urdf模型
  • Kafka——Kafka中的位移提交
  • git 修改最近一次 commit 信息
  • 【2025】使用vue构建一个漂亮的天气卡片
  • Dify实战,获取禅道需求,编写测试用例到禅道
  • [AI8051U入门第八步]硬件IIC驱动AHT10温湿度传感器
  • Web 服务器和Web 中间件
  • 主流软件开发方法综述:从敏捷到开源
  • 利用中间件实现任务去重与分发精细化:股吧舆情数据采集与分析实战
  • 如何高效合并音视频文件
  • 设计模式九:构建器模式 (Builder Pattern)
  • echarts【实战】饼状图点击高亮,其他区域变暗
  • flutter使用CupertinoPicker绘制一个传入数据源的省市区选择器
  • [Bug | Cursor] import error: No module named ‘data‘
  • C++刷题 - 7.23
  • 【C++】类和对象(中)构造函数、析构函数
  • nrm指南
  • 二级建造师学习笔记-2025
  • 2025 成都航空装备展供需发布:精准匹配,高效成交
  • 货车手机远程启动功能的详细使用步骤及注意事项
  • C#值类型属性的典型问题
  • 基于.Net Core开源的库存订单管理系统
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博点赞量Top6实现
  • 粗大误差智能滤除:基于格拉布斯准则与机器学习的数据清洗体系​
  • 深入理解 TCP 协议:Linux 网络传输的可靠基石
  • 【Node.js】使用ts-node运行ts文件时报错: TypeError: Unknown file extension “.ts“ for ts 文件
  • Node.js 倒计时图片服务部署与 Nginx 反向代理实战总结
  • The History of Computers