20.3. 滚动更新的维护时间窗
通过维护时间窗口,您可以调度 Kafka 和 ZooKeeper 集群的某些滚动更新,以便在方便的时间启动。
20.3.1. 维护时间窗概述
在大多数情况下,Cluster Operator 只更新您的 Kafka 或 ZooKeeper 集群,以响应对应的 Kafka
资源。这可让您计划何时对 Kafka
资源应用更改,以最大程度降低对 Kafka 客户端应用程序的影响。
但是,对 Kafka 和 ZooKeeper 集群的一些更新可能会出现任何与 Kafka
资源对应的更改。例如,如果其管理的 CA (证书颁发机构)证书接近到期,Cluster Operator 需要执行滚动重启。
虽然 pod 的滚动重启应该不会影响服务的可用性 (假设正确的代理和主题配置),但它可能会影响 Kafka 客户端应用程序的性能。维护时间窗允许您调度 Kafka 和 ZooKeeper 集群的此类 spontaneous 滚动更新,以便在方便的时间启动。如果没有为集群配置维护时间窗,则此类更新可能会在不方便的时间进行,比如在可预测的高负载期间。
20.3.2. 维护时间窗定义
您可以通过在 Kafka.spec.maintenanceTimeWindows
属性中输入字符串数组来配置维护时间窗。每个字符串都有一个 cron 表达式 解释为 UTC (协调通用时间),用于实际目的与 Greenwich Mean Time 相同。
以下示例配置了一个维护时间窗,其从午夜开始,并以 01:59am (UTC)结束,在 Sundays、Mondays、Mondays、rednesdays 和 Thursdays 上结束:
# ... maintenanceTimeWindows: - "* * 0-1 ? * SUN,MON,TUE,WED,THU *" # ...
在实践中,维护窗口应当与 Kafka
资源的 Kafka.spec.clusterCa.renewalDays
和 Kafka.spec.clientsCa.renewalDays
属性一起设置,以确保在配置的维护时间窗口中完成必要的 CA 证书续订。
AMQ Streams 不根据给定的窗口完全调度维护操作。相反,对于每个协调,它会检查维护窗口当前是否是"打开"。这意味着,在一个给定时间窗内开始维护操作会延迟到 Cluster Operator 协调间隔。因此,维护时间窗必须至少是这个时间。
20.3.3. 配置维护时间窗
您可以为支持的进程触发的滚动更新配置维护时间窗。
先决条件
- 一个 OpenShift 集群。
- Cluster Operator 正在运行。
流程
在
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 * * ?"
创建或更新资源:
oc apply -f <kafka_configuration_file>