搜索

18.2. 更新 Kafka 版本

download PDF

当使用 ZooKeeper 进行集群管理时,在 Kafka 资源的配置中需要更新 Kafka 版本(Kafka.spec.kafka.version)及其 inter-broker 协议版本(inter.broker.protocol.version)。Kafka 的每个版本都有了一个内部代理协议的兼容版本。inter-broker 协议用于代理间通信。协议的次要版本通常会增加以匹配 Kafka 的次要版本,如上表中所示。inter-broker 协议版本在 Kafka 资源中设置 cluster wide。要更改它,您可以编辑 Kafka.spec.kafka.config 中的 inter.broker.protocol.version 属性。

下表显示了 Kafka 版本之间的区别:

表 18.1. Kafka 版本的不同
Apache Kafka 版本流Kafka 版本inter-broker 协议版本日志消息格式版本ZooKeeper 版本

2.7

3.7.0

3.7

3.7

3.8.3

2.6

3.6.0

3.6

3.6

3.8.3

  • Kafka 3.7.0 支持在生产环境中使用。
  • Kafka 3.6.0 仅支持升级到 Apache Kafka 2.7 的 Streams 的目的。

日志消息格式版本

当制作者发送消息到 Kafka 代理时,消息会使用特定的格式进行编码。格式可能会在 Kafka 发行版本之间改变,因此消息指定它们编码的消息格式版本。

用于设置特定消息格式版本的属性如下:

  • 主题的 message.format.version 属性
  • Kafka 代理的 log.message.format.version 属性

从 Kafka 3.0.0,消息格式版本值被假定为与 inter.broker.protocol.version 匹配,且不需要设置。该值反映了使用的 Kafka 版本。

当升级到 Kafka 3.0.0 或更高版本时,您可以在更新 inter.broker.protocol.version 时删除这些设置。否则,您可以根据您要升级到的 Kafka 版本设置消息格式版本。

由在 Kafka 代理中设置的 log.message.format.version 定义的 message.format.version 的默认值。您可以通过修改主题配置来手动设置主题的 message.format.version

Kafka 版本的滚动更新更改

当 Kafka 版本被更新时,Cluster Operator 会启动对 Kafka 代理的滚动更新。进一步的滚动更新依赖于 inter.broker.protocol.versionlog.message.format.version 的配置。

如果 Kafka.spec.kafka.config 包含…​Cluster Operator 启动…​

inter.broker.protocol.versionlog.message.format.version

单个滚动更新。更新后,必须手动更新 inter.broker.protocol.version,后跟 log.message.format.version。更改每个将触发进一步的滚动更新。

inter.broker.protocol.versionlog.message.format.version

两个滚动更新。

没有 inter.broker.protocol.versionlog.message.format.version 的配置。

两个滚动更新。

重要

从 Kafka 3.0.0,当 inter.broker.protocol.version 设置为 3.0 或更高版本时,log.message.format.version 选项会被忽略,且不需要设置。代理的 log.message.format.version 属性和主题的 message.format.version 属性已弃用,并将在以后的 Kafka 发行版本中删除。

作为 Kafka 升级的一部分,Cluster Operator 为 ZooKeeper 启动滚动更新。

  • 即使 ZooKeeper 版本没有改变,也会进行单个滚动更新。
  • 如果 Kafka 的新版本需要新的 ZooKeeper 版本,则会进行额外的滚动更新。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.