20.4. 手动启动 Kafka 和 ZooKeeper 集群的滚动更新
AMQ Streams 支持使用资源上的注解来通过 Cluster Operator 手动触发 Kafka 和 ZooKeeper 集群的滚动更新。滚动更新使用新的资源重启 pod。
在特殊 pod 或一组 pod 上手动执行滚动更新,通常只需要在特殊情况下进行滚动更新。但是,如果您通过 Cluster Operator 执行滚动更新,而不是直接删除 pod,请确保以下内容:
- 手动删除 pod 不会与 Cluster Operator 操作冲突,如同时删除其他 pod。
- Cluster Operator 逻辑处理 Kafka 配置规格,如同步副本数。
20.4.1. 使用 pod 管理注解执行滚动更新 复制链接链接已复制到粘贴板!
此流程描述了如何触发 Kafka 集群或 ZooKeeper 集群的滚动更新。
要触发更新,您需要向用来管理集群中运行的 pod 的资源添加注解。您可以注解 StatefulSet
或 StrimziPodSet
资源(如果您启用了 UseStrimziPodSets
功能门)。
先决条件
要执行手动滚动更新,您需要运行一个正在运行的 Cluster Operator 和 Kafka 集群。
流程
查找控制您要手动更新的 Kafka 或 ZooKeeper pod 的资源名称。
例如,如果您的 Kafka 集群命名为 my-cluster,则对应的名称为 my-cluster-kafka 和 my-cluster-zookeeper。
使用
oc annotate
在 OpenShift 中注解适当的资源。注解 StatefulSet
oc annotate statefulset <cluster_name>-kafka strimzi.io/manual-rolling-update=true oc annotate statefulset <cluster_name>-zookeeper strimzi.io/manual-rolling-update=true
oc annotate statefulset <cluster_name>-kafka strimzi.io/manual-rolling-update=true oc annotate statefulset <cluster_name>-zookeeper strimzi.io/manual-rolling-update=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Annotating a StrimziPodSet
oc annotate strimzipodset <cluster_name>-kafka strimzi.io/manual-rolling-update=true oc annotate strimzipodset <cluster_name>-zookeeper strimzi.io/manual-rolling-update=true
oc annotate strimzipodset <cluster_name>-kafka strimzi.io/manual-rolling-update=true oc annotate strimzipodset <cluster_name>-zookeeper strimzi.io/manual-rolling-update=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待下一个协调发生(默认为两分钟)。触发注解资源中的所有 pod 的滚动更新,只要协调过程检测到注解。当所有 pod 的滚动更新完成后,注解会从资源中删除。
20.4.2. 使用 pod 注解执行滚动更新 复制链接链接已复制到粘贴板!
此流程描述了如何使用 OpenShift Pod
注解手动触发现有 Kafka 集群或 ZooKeeper 集群的滚动更新。当注解多个 pod 时,连续滚动更新会在同一协调运行中执行。
先决条件
要执行手动滚动更新,您需要运行一个正在运行的 Cluster Operator 和 Kafka 集群。
无论使用了什么主题复制因素,您可以在 Kafka 集群上执行滚动更新。但是,对于 Kafka 在更新过程中保持操作,您需要执行以下操作:
- 使用您要更新的节点运行的高可用性 Kafka 集群部署。
复制的主题以实现高可用性。
主题配置指定至少 3 个复制因素,最小同步副本的数量为复制因素的数量减 1。
为高可用性复制 Kafka 主题
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
找到您要手动更新的 Kafka 或 ZooKeeper
Pod
的名称。例如,如果您的 Kafka 集群命名为 my-cluster,则对应的
Pod
名称为 my-cluster-kafka-index 和 my-cluster-zookeeper-index。索引 从零开始,结束于副本总数。在 OpenShift 中注解
Pod
资源。使用
oc annotate
:oc annotate pod cluster-name-kafka-index strimzi.io/manual-rolling-update=true oc annotate pod cluster-name-zookeeper-index strimzi.io/manual-rolling-update=true
oc annotate pod cluster-name-kafka-index strimzi.io/manual-rolling-update=true oc annotate pod cluster-name-zookeeper-index strimzi.io/manual-rolling-update=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
等待下一个协调发生(默认为两分钟)。当在协调过程检测到注解时,就会触发被注解的
Pod
的滚动更新。完成 Pod 的滚动更新后,注解将从Pod
中删除。