7.6. 部署 Kafka MirrorMaker


Kafka MirrorMaker 在两个或多个 Kafka 集群之间复制数据,并在数据中心之间复制数据。此过程称为镜像(mirror),以避免与 Kafka 分区复制概念混淆。MirrorMaker 使用来自源集群的消息,并将这些消息重新发布到目标集群。

集群间的数据复制支持以下场景:

  • 在系统失败时恢复数据
  • 从多个源集群整合数据以进行集中分析
  • 对特定集群的数据访问限制
  • 在特定位置置备数据以提高延迟

7.6.1. 将 Kafka MirrorMaker 部署到 OpenShift 集群

此流程演示了如何使用 Cluster Operator 将 Kafka MirrorMaker 集群部署到 OpenShift 集群。

部署使用 YAML 文件来提供规格,根据部署的 MirrorMaker 版本创建 KafkaMirrorMakerKafkaMirrorMaker2 资源。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 实例来替换默认值

流程

  1. 将 Kafka MirrorMaker 部署到 OpenShift 集群:

    对于 MirrorMaker:

    oc apply -f examples/mirror-maker/kafka-mirror-maker.yaml
    Copy to Clipboard Toggle word wrap

    对于 MirrorMaker 2:

    oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yaml
    Copy to Clipboard Toggle word wrap
  2. 检查部署的状态:

    oc get pods -n <my_cluster_operator_namespace>
    Copy to Clipboard Toggle word wrap

    输出显示部署名称和就绪

    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 Toggle word wrap

    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 挂载为卷。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat