第 21 章 使用 Cruise Control 修改主题复制因素
通过更新 Topic Operator 管理的 KafkaTopic
资源来更改主题的复制因素。您可以针对特定目的调整复制因素,例如:
- 为非关键主题或资源短缺设置较低的复制因素
- 设置更高的复制因素以提高数据持久性和容错
主题 Operator 使用 Cruise Control 进行必要的更改,因此必须使用 Apache Kafka 的 Streams 部署 Cruise Control。
主题 Operator 会监视并定期协调所有受管和取消暂停的 KafkaTopic
资源,并通过比较 Kafka 中的主题的复制因素来检测对 .spec.replicas
配置的更改。然后,一个或多个复制因素更新会被发送到 Cruise Control,以便在单个请求中处理。
进度反映在 KafkaTopic
资源的状态中。
先决条件
- 必须部署 Cluster Operator。
-
必须部署 Topic Operator,以通过
KafkaTopic
自定义资源管理主题。 - Cruise Control 使用 Kafka 部署。
流程
编辑
KafkaTopic
资源以更改replicas
值。在此过程中,我们将
my-topic
的replicas
值从 1 改为 3。Kafka 主题复制因素配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将更改应用到
KafkaTopic
配置,并等待 Topic Operator 更新主题。 检查
KafkaTopic
资源的状态,以确保请求成功:oc get kafkatopics my-topic -o yaml
oc get kafkatopics my-topic -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制因子更改的状态
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果请求在完成前失败,状态中会显示错误消息。如果请求进入失败状态,则会定期重试。
使用独立主题 Operator 更改主题复制因素
如果您使用独立主题 Operator 的目的是通过配置更改主题复制因素,您仍然需要在单向模式中使用主题 Operator 和 Cruise Control 部署。您还需要在独立主题 Operator 部署中包括以下环境变量,以便它可以与 Cruise Control 集成。
独立主题 Operator 部署配置示例
如果启用了 TLS 身份验证和授权,请按如下所示挂载所需的证书:
-
/etc/tls-sidecar/cluster-ca-certs/ca.crt
中的集群 CA (证书颁发机构)的公共证书 -
/etc/eto-cc-api/topic-operator.apiAdminName
和/etc/eto-cc-api/topic-operator.apiAdminPassword
中的基本授权凭证(用户名和密码)