8.4. 升级 Kafka
将 Cluster Operator 升级到 1.8 后,下一步是将所有 Kafka 代理升级到最新支持的 Kafka 版本。
Kafka 升级由 Cluster Operator 通过对 Kafka 代理的滚动更新来执行。
Cluster Operator 根据 Kafka 集群配置启动滚动更新。
如果 Kafka.spec.kafka.config 包含… | Cluster Operator 启动s… |
|---|---|
|
|
单个滚动更新.更新后, |
|
| 两次滚动更新. |
|
没有 | 两次滚动更新. |
作为 Kafka 升级的一部分,Cluster Operator 会启动 ZooKeeper 的滚动更新。
- 即使 ZooKeeper 版本未更改,也会出现一次滚动更新。
- 如果 Kafka 的新版本需要新的 ZooKeeper 版本,则会出现额外的滚动更新。
8.4.1. Kafka 版本 复制链接链接已复制到粘贴板!
Kafka 的日志消息格式版本和 Inter-broker 协议版本分别指定附加到消息的日志格式版本以及集群中使用的 Kafka 协议版本。为确保使用正确的版本,升级过程包括对现有 Kafka 代理进行配置更改,以及对客户端应用程序(使用者和生产者)的代码更改。
下表显示了 Kafka 版本之间的区别:
| Kafka 版本 | Interbroker 协议版本 | 日志消息格式版本 | zookeeper 版本 |
|---|---|---|---|
| 2.7.0 | 2.7 | 2.7 | 3.5.8 |
| 2.7.1 | 2.7 | 2.7 | 3.5.9 |
| 2.8.0 | 2.8 | 2.8 | 3.5.9 |
Broker 协议版本
在 Kafka 中,用于代理间通信的网络协议称为 代理间协议。每个版本的 Kafka 都有兼容版本的 Inter-broker 协议。协议的次要版本通常会增加以匹配 Kafka 的次要版本,如上表所示。
kroker 协议版本在 Kafka 资源中广泛设置集群。要更改它,请编辑 Kafka 属性。
.spec.kafka.config 中的 inter.broker.protocol. version
日志消息格式版本
当生产者向 Kafka 代理发送消息时,该消息将使用特定格式进行编码。Kafka 版本的格式可能会在 Kafka 发行版本间有所变化,因此信息会指定它们编码的格式版本。您可以配置 Kafka 代理,在代理将消息附加到日志前将信息从较新的格式转换为给定的旧格式版本。
在 Kafka 中,设置消息格式版本的方法有两种:
-
message.format.version属性在主题上设置。 -
log.message.format.version属性在 Kafka 代理上设置。
主题的 message.format.version 默认值由 Kafka 代理上设置的 log.message.format.version 定义。您可以通过修改主题配置来手动设置主题的 message.format.version。
本节中的升级任务假定消息格式版本由 log.message.format.version 定义。