搜索

第 29 章 管理 Apache Kafka 的流

download PDF

为 Apache Kafka 管理流需要执行各种任务来保持 Kafka 集群和相关资源平稳运行。使用 oc 命令检查资源的状态,为滚动更新配置维护窗口,并利用 Apache Kafka Drain Cleaner 和 Kafka Static Quota 插件等工具来有效地管理部署。

29.1. 滚动更新的维护时间窗

通过维护时间窗口,您可以调度 Kafka 和 ZooKeeper 集群的某些滚动更新,以便在方便的时间启动。

29.1.1. 维护时间窗概述

在大多数情况下,Cluster Operator 只更新您的 Kafka 或 ZooKeeper 集群,以响应对应的 Kafka 资源更改。这可让您规划何时对 Kafka 资源应用更改,以最大程度降低对 Kafka 客户端应用程序的影响。

但是,如果您的 Kafka 和 ZooKeeper 集群的一些更新可能会在没有与 Kafka 资源对应的更改的情况下发生。例如,如果它管理的 CA (证书颁发机构)证书接近到期,Cluster Operator 将需要执行滚动重启。

虽然 pod 的滚动重启应该不会影响服务的可用性 (假设正确的代理和主题配置),但它可能会影响 Kafka 客户端应用程序的性能。通过维护时间窗,您可以调度 Kafka 和 ZooKeeper 集群的此类滚动更新,以便在方便的时间启动。如果没有为集群配置维护时间窗,则此类滚动更新可能会在不方便的时间内发生,如高负载的可预测期间。

29.1.2. 维护时间窗定义

您可以通过在 Kafka.spec.maintenanceTimeWindows 属性中输入字符串数组来配置维护时间窗。每个字符串都是以 UTC (协调世界时间)的 cron 表达式,它用于实际目的与 Greenwich Mean Time 相同。

以下示例配置了一个维护时间窗,它在午夜开始,并在 01:59am (UTC)结束,在 Sundays, Mondays, Tuesdays, Wednesdays, 和 Thursdays:

# ...
maintenanceTimeWindows:
  - "* * 0-1 ? * SUN,MON,TUE,WED,THU *"
# ...

在实践中,维护窗口应当与 Kafka 资源的 Kafka.spec.clusterCa.renewalDaysKafka.spec.clientsCa.renewalDays 属性一起设置,以确保在配置的维护时间窗口中完成必要的 CA 证书续订。

注意

Apache Kafka 的流不会根据给定的窗口完全调度维护操作。相反,对于每个协调,它会检查维护窗口当前是否为 "open"。这意味着,在一个给定时间窗内开始维护操作会延迟到 Cluster Operator 协调间隔。因此,维护时间窗必须至少为长。

29.1.3. 配置维护时间窗

您可以为由支持的进程触发的滚动更新配置维护时间窗。

先决条件

  • 一个 OpenShift 集群。
  • Cluster Operator 正在运行。

流程

  1. Kafka 资源中添加或编辑 maintenanceTimeWindows 属性。例如,允许在 0800 和 1059 之间维护 1400 到 1559,您可以设置 maintenanceTimeWindows,如下所示:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        # ...
      zookeeper:
        # ...
      maintenanceTimeWindows:
        - "* * 8-10 * * ?"
        - "* * 14-15 * * ?"
  2. 创建或更新资源:

    oc apply -f <kafka_configuration_file>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.