18.2. 更新 Kafka 版本
当使用 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 版本之间的区别:
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.version
和 log.message.format.version
的配置。
如果 Kafka.spec.kafka.config 包含… | Cluster Operator 启动… |
---|---|
|
单个滚动更新。更新后,必须手动更新 |
| 两个滚动更新。 |
没有 | 两个滚动更新。 |
从 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 版本,则会进行额外的滚动更新。