7.4. Kafka MirrorMaker 配置


Kafka MirrorMaker 在两个或更多活跃 Kafka 集群之间复制数据,并在数据中心之间复制数据。要设置 MirrorMaker,源和目标(目标) Kafka 集群必须正在运行。

7.4.1. MirrorMaker 2 配置

MirrorMaker 2 使用来自源 Kafka 集群的信息,并将其写入目标 Kafka 集群。

MirrorMaker 2 使用:

  • 源集群配置使用来自源集群的数据
  • 将数据输出到目标集群的目标集群配置

MirrorMaker 2 基于 Kafka Connect 框架,连接器 管理集群之间的数据传输。

您可以配置 MirrorMaker 2 以定义 Kafka Connect 部署,包括源和目标集群的连接详情,然后运行一组 MirrorMaker 2 连接器来进行连接。

MirrorMaker 2 由以下连接器组成:

MirrorSourceConnector
源连接器将主题从源集群复制到目标集群。它还复制 ACL,且是 MirrorCheckpointConnector 才能运行所必需的。
MirrorCheckpointConnector
checkpoint 连接器定期跟踪偏移。如果启用,它还会在源和目标集群之间同步消费者组偏移。
MirrorHeartbeatConnector
heartbeat 连接器会定期检查源和目标集群之间的连接。
注意

如果您使用 User Operator 管理 ACL,则无法通过连接器进行 ACL 复制。

将数据从源集群镜像 (mirror)到目标集群的过程是异步的。每个 MirrorMaker 2 实例将数据从一个源集群镜像到一个目标集群。您可以使用多个 MirrorMaker 2 实例在任意数量的集群间镜像数据。

图 7.1. 在两个集群间复制

默认情况下,检查源集群中的新主题每 10 分钟进行。您可以通过在源连接器配置中添加 refresh.topics.interval.seconds 来更改频率。

7.4.1.1. 集群配置

您可以在 主动/被动或主动/主动 集群配置中 使用 MirrorMaker 2。

主动/主动集群配置
主动/主动配置有两个活跃集群来复制数据。应用程序可以使用任一集群。每个集群都可以提供相同的数据。这样,您可以在不同的地理位置提供相同的数据。因为消费者组在两个集群中都活跃,复制主题的使用者偏移不会重新同步到源集群。
主动/被动集群配置
主动/被动配置具有主动集群,将数据复制到被动集群。被动集群保持待机状态。在系统失败时,您可以使用被动集群进行数据恢复。

预期的结构是,生成者和消费者仅连接到活跃集群。每个目标目的地都需要一个 MirrorMaker 2 集群。

7.4.1.2. 双向复制(active/active)

MirrorMaker 2 架构支持 主动/主动 集群配置中的双向复制。

每个集群使用 sourceremote 主题的概念复制其他集群的数据。由于同一主题存储在每个集群中,所以远程主题由 MirrorMaker 2 重命名,以表示源集群。原始集群的名称前面是主题名称的前面。

图 7.2. 主题重命名

通过标记原始集群,主题不会复制到该集群。

在配置需要数据聚合的架构时,通过 远程主题 复制的概念非常有用。消费者可以订阅同一集群中的源和远程主题,而无需单独的聚合集群。

7.4.1.3. 单向复制(active/passive)

MirrorMaker 2 架构支持 主动/被动 集群配置中的单向复制。

您可以使用 主动/被动集群 配置进行备份或将数据迁移到另一个集群。在这种情况下,您可能不希望自动重命名远程主题。

您可以通过将 IdentityReplicationPolicy 添加到源连接器配置来覆盖自动重命名。应用此配置后,主题会保留其原始名称。

显示 MirrorMaker 2 配置的 YAML 示例
  apiVersion: kafka.strimzi.io/v1beta2
  kind: KafkaMirrorMaker2
  metadata:
    name: my-mirror-maker2
    spec:
      version: 3.4.0
      connectCluster: "my-cluster-target"
      clusters:
      - alias: "my-cluster-source"
        bootstrapServers: my-cluster-source-kafka-bootstrap:9092
      - alias: "my-cluster-target"
        bootstrapServers: my-cluster-target-kafka-bootstrap:9092
      mirrors:
      - sourceCluster: "my-cluster-source"
        targetCluster: "my-cluster-target"
        sourceConnector: {}
      topicsPattern: ".*"
      groupsPattern: "group1|group2|group3"
Copy to Clipboard Toggle word wrap

7.4.2. MirrorMaker 配置

Kafka MirrorMaker (也称为 MirrorMaker 1)使用制作者和消费者在集群间复制数据,如下所示:

  • 消费者使用来自源集群的数据
  • 生成者将数据输出到目标集群

消费者和制作者配置包括任何所需的身份验证和加密设置。include 属性定义要从源镜像到目标集群的主题。

注意

MirrorMaker 在 Kafka 3.0.0 中已弃用,并将在 Kafka 4.0.0 中删除。因此,用于部署 MirrorMaker 的 AMQ Streams KafkaMirrorMaker 自定义资源已弃用。当使用 Kafka 4.0.0 时,KafkaMirrorMaker 资源将从 AMQ Streams 中删除。

关键的消费者配置
消费者组标识符
MirrorMaker consumer 的使用者组 ID,以便消耗的消息被分配给消费者组。
消费者流的数量
一个值,用于决定消费者组中的消费者数量,以并行使用消息。
偏移提交间隔
一个偏移的提交间隔,用于设置消耗和提交消息之间的时间。
关键的生成者配置
发送失败的取消选项
您可以定义消息发送失败是否忽略或 mirrorMaker 被终止并重新创建。
显示 MirrorMaker 配置的 YAML 示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
metadata:
  name: my-mirror-maker
spec:
  # ...
  consumer:
    bootstrapServers: my-source-cluster-kafka-bootstrap:9092
    groupId: "my-group"
    numStreams: 2
    offsetCommitInterval: 120000
    # ...
  producer:
    # ...
    abortOnSendFailure: false
    # ...
  include: "my-topic|other-topic"
  # ...
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat