7.6. 部署 Kafka MirrorMaker
Kafka MirrorMaker 在两个或多个 Kafka 集群之间复制数据,并在数据中心之间复制数据。此过程称为镜像(mirror),以避免与 Kafka 分区复制概念混淆。MirrorMaker 使用来自源集群的消息,并将这些消息重新发布到目标集群。
集群间的数据复制支持以下场景:
- 在系统失败时恢复数据
- 从多个源集群整合数据以进行集中分析
- 对特定集群的数据访问限制
- 在特定位置置备数据以提高延迟
7.6.1. 将 Kafka MirrorMaker 部署到 OpenShift 集群 复制链接链接已复制到粘贴板!
此流程演示了如何使用 Cluster Operator 将 Kafka MirrorMaker 集群部署到 OpenShift 集群。
部署使用 YAML 文件来提供规格,根据部署的 MirrorMaker 版本创建 KafkaMirrorMaker
或 KafkaMirrorMaker2
资源。MirrorMaker 2 基于 Kafka Connect,并使用其配置属性。
Kafka MirrorMaker 1 (称为文档中的 MirrorMaker )已在 Apache Kafka 3.0.0 中弃用,并将在 Apache Kafka 4.0.0 中删除。因此,用于部署 Kafka MirrorMaker 1 的 KafkaMirrorMaker
自定义资源也已在 Apache Kafka 的 Streams 中弃用。当使用 Apache Kafka 4.0.0 时,KafkaMirrorMaker
资源将从 Apache Kafka 的 Streams 中删除。作为替代方法,在 IdentityReplicationPolicy
中使用 KafkaMirrorMaker2
自定义资源。
Apache Kafka 的流提供了 示例配置文件。在此过程中,我们使用以下示例文件:
-
examples/mirror-maker/kafka-mirror-maker.yaml
-
examples/mirror-maker/kafka-mirror-maker-2.yaml
如果部署 MirrorMaker 2 集群以并行运行,使用相同的目标 Kafka 集群,每个实例都必须对内部 Kafka Connect 主题使用唯一的名称。为此,请配置每个 MirrorMaker 2 实例来替换默认值。
流程
将 Kafka MirrorMaker 部署到 OpenShift 集群:
对于 MirrorMaker:
oc apply -f examples/mirror-maker/kafka-mirror-maker.yaml
oc apply -f examples/mirror-maker/kafka-mirror-maker.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 MirrorMaker 2:
oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yaml
oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查部署的状态:
oc get pods -n <my_cluster_operator_namespace>
oc get pods -n <my_cluster_operator_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出显示部署名称和就绪
NAME READY STATUS RESTARTS my-mirror-maker-mirror-maker-<pod_id> 1/1 Running 1 my-mm2-cluster-mirrormaker2-<pod_id> 1/1 Running 1
NAME READY STATUS RESTARTS my-mirror-maker-mirror-maker-<pod_id> 1/1 Running 1 my-mm2-cluster-mirrormaker2-<pod_id> 1/1 Running 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-mirror-maker
是 Kafka MirrorMaker 集群的名称。my-mm2-cluster
是 Kafka MirrorMaker 2 集群的名称。标识创建的每个 pod 的 pod ID。
使用默认部署,您要安装单个 MirrorMaker 或 MirrorMaker 2 pod。
READY
显示就绪/预期的副本数。当STATUS
显示为Running
时,部署成功。
7.6.2. Kafka MirrorMaker 2 集群资源列表 复制链接链接已复制到粘贴板!
以下资源由 OpenShift 集群中的 Cluster Operator 创建:
- <mirrormaker2_cluster_name>-mirrormaker2
提供给以下 MirrorMaker 2 资源的名称:
- 创建 MirrorMaker 2 worker 节点 pod 的 StrimziPodSet。
- 无头服务,为 MirrorMaker 2 pod 提供稳定的 DNS 名称。
- MirrorMaker 2 pod 使用的服务帐户。
- 为 MirrorMaker 2 worker 节点配置的 Pod 中断预算。
- 网络策略管理对 MirrorMaker 2 REST API 的访问。
- <mirrormaker2_cluster_name>-mirrormaker2-<pod_id>
- 由 MirrorMaker 2 StrimziPodSet 创建的 Pod。
- <mirrormaker2_cluster_name>-mirrormaker2-api
- 公开用于管理 MirrorMaker 2 集群的 REST 接口的服务。
- <mirrormaker2_cluster_name>-mirrormaker2-config
- 包含 MirrorMaker 2 辅助配置的 ConfigMap,并由 MirrorMaker 2 Pod 挂载为卷。
- strimzi-<namespace-name>-<mirrormaker2_cluster_name>-mirrormaker2-init
- MirrorMaker 2 集群使用的集群角色绑定。
7.6.3. Kafka MirrorMaker 集群资源列表 复制链接链接已复制到粘贴板!
以下资源由 OpenShift 集群中的 Cluster Operator 创建:
- <mirrormaker_cluster_name>-mirror-maker
提供给以下 MirrorMaker 资源的名称:
- 负责创建 MirrorMaker Pod 的部署。
- MirrorMaker 节点使用的服务帐户。
- 为 MirrorMaker worker 节点配置的 Pod Disruption Budget。
- <mirrormaker_cluster_name>-mirror-maker-config
- 包含 MirrorMaker 的辅助配置的 ConfigMap,由 MirrorMaker Pod 挂载为卷。