搜索

25.6. 升级基于 KRaft 的 Kafka 集群和客户端应用程序

download PDF

将基于 KRaft 的 Apache Kafka 集群的流升级到较新的支持的 Kafka 版本和 KRaft 元数据版本。

您还应选择升级客户端的策略。在此流程的第 6 步中升级 Kafka 客户端。

注意

有关基于 KRaft 的升级支持的最新信息,请参阅 Apache Kafka 文档。

先决条件

  • Cluster Operator 已启动并在运行。
  • 在升级 Apache Kafka 集群的 Streams 前,请检查 Kafka 资源的属性 不包含 新的 Kafka 版本不支持的配置选项。

流程

  1. 更新 Kafka 集群配置:

    oc edit kafka <kafka_configuration_file>
  2. 如果配置,请检查当前 spec.kafka.metadataVersion 是否已设置为您要升级到的 Kafka 版本支持的版本。

    例如,如果从 Kafka 版本 3.6.0 升级到 3.7.0,则当前版本为 3.6-IV2:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.6-IV2
        version: 3.6.0
        # ...

    如果没有配置 metadataVersion,则 Apache Kafka 的 Streams 会在在下一步中更新到 Kafka 版本后自动更新到当前默认值。

    注意

    metadataVersion 的值必须是字符串,以防止它被解释为浮点数。

  3. 更改 Kafka.spec.kafka.version 以指定新的 Kafka 版本;将 metadataVersion 保留为 当前 Kafka 版本的默认值。

    注意

    更改 kafka.version 可确保升级集群中的所有代理,以使用新的代理二进制文件。在此过程中,一些代理使用旧的二进制文件,而其他代理已升级到新的二进制文件。将 metadataVersion 保持不变到当前设置中,可确保 Kafka 代理和控制器可以在升级过程中继续相互通信。

    例如,如果从 Kafka 3.6.0 升级到 3.7.0 :

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.6-IV2 1
        version: 3.7.0 2
        # ...
    1
    元数据版本没有改变
    2
    Kafka 版本已改为新版本。
  4. 如果在 Kafka 自定义资源的 Kafka.spec.kafka.image 中定义了 Kafka 集群 的镜像,请更新该镜像以指向新的 Kafka 版本的容器镜像。

    请参阅 Kafka 版本和镜像映射

  5. 保存并退出编辑器,然后等待滚动更新升级 Kafka 节点完成。

    通过观察 pod 状态转换来检查滚动更新的进度:

    oc get pods my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'

    滚动更新可确保每个 pod 都使用 Kafka 的新版本的代理二进制文件。

  6. 根据您选择的 策略来升级客户端,升级所有客户端应用程序以使用客户端二进制文件的新版本。

    如果需要,将 Kafka Connect 和 MirrorMaker 的 version 属性设置为 Kafka 的新版本:

    1. 对于 Kafka Connect,更新 KafkaConnect.spec.version
    2. 对于 MirrorMaker,更新 KafkaMirrorMaker.spec.version
    3. 对于 MirrorMaker 2,更新 KafkaMirrorMaker2.spec.version

      注意

      如果使用手动构建的自定义镜像,您必须重建这些镜像以确保它们与 Apache Kafka 基础镜像的最新流最新。例如,如果您从 基础 Kafka Connect 镜像创建了容器镜像,请更新 Dockerfile 以指向最新的基础镜像和构建配置。

  7. 验证升级的客户端应用程序是否与新的 Kafka 代理正常工作。
  8. 如果配置,将 Kafka 资源更新为使用新的 metadataVersion 版本。否则,请转到第 9 步。

    例如,如果升级到 Kafka 3.7.0 :

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3
        metadataVersion: 3.7-IV2
        version: 3.7.0
        # ...
    警告

    更改 metadataVersion 时请小心,因为可能无法降级。如果新 Kafka 版本的 metadataVersion 高于您要降级的 Kafka 版本,则无法降级 Kafka。但是,了解维护旧版本时对支持和兼容性的潜在影响。

  9. 等待 Cluster Operator 更新集群。

    您可以从 Kafka 资源的状态检查升级是否已成功完成

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.