5.4. Kafka MirrorMaker 配置


要设置 MirrorMaker,必须运行一个源和目标(目标) Kafka 集群。

您可以使用带有 MirrorMaker 2.0 的 AMQ Streams,虽然仍支持 MirrorMaker 的早期版本。

MirrorMaker 2.0

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

MirrorMaker 2.0 使用:

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

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

  • 主动/主动 配置中,两个集群都处于活动状态并同时提供相同的数据,如果您想在不同的地理位置在本地提供相同的数据,这很有用。
  • 主动/被动 配置中,来自主动/被动群集的数据复制到被动群集中,该群集仍处于备用状态,例如,在发生系统故障时进行数据恢复。

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

主题配置会根据 KafkaMirrorMaker2 自定义资源中定义的主题在源和目标集群间自动同步。将配置更改传播到远程主题,以便检测和创建新主题和分区。主题复制使用正则表达式模式来定义,以包含或排除主题。

以下 MirrorMaker 2.0 连接器和相关内部主题有助于管理集群间数据的传输和同步。

MirrorSourceConnector
MirrorSourceConnector 从源集群中创建远程主题。
MirrorCheckpointConnector
使用偏移 同步主题和 检查点 主题,为指定消费者组提供一个 MirrorCheckpointConnector 跟踪和映射偏移。偏移同步主题映射从记录元数据中复制主题分区的来源和目标偏移。检查点从每个源集群中发出,并通过检查点主题复制到目标集群中。checkpoint 主题映射源和目标集群中最后一个提交的偏移,用于每个消费者组中复制主题分区。
MirrorHeartbeatConnector
MirrorHeartbeatConnector 定期检查集群间的连通性。MirrorHeartbeatConnector 将每秒制作 心跳成一个在本地集群上创建的心跳 主题。如果您在远程和本地位置都有 MirrorMaker 2.0,MirrorHeartbeatConnector 在远程位置发送的心跳会被视为任何远程主题,被本地集群中的 MirrorSourceConnector 镜像。heartbeat 主题可让您轻松检查远程集群是否可用并连接群集。如果出现问题,心跳话题偏移位置和时间戳有助于恢复和诊断。

图 5.1. 在两个集群间复制

MirrorMaker 2.0 replication between a Kafka cluster in Region 1 and a Kafka cluster in Region 2
两个集群的双向复制

MirrorMaker 2.0 架构在 主动/主动 集群配置中支持双向复制,因此两个集群都处于活跃状态,同时提供相同的数据。每个目标目的地都需要一个 MirrorMaker 2.0 集群。

通过自动将集群名称加上主题名称的重命名来区分远程主题。如果要在不同的地理位置本地提供相同的数据,这将非常有用。

但是,如果要在主动/被动集群配置中备份或迁移数据,您可能需要保留主题的原始名称。如果是这样,您可以配置 MirrorMaker 2.0 以关闭自动重命名。

图 5.2. 双向复制

MirrorMaker 2.0 bidirectional architecture
显示 MirrorMaker 2.0 配置的 YAML 示例
  apiVersion: kafka.strimzi.io/v1beta2
  kind: KafkaMirrorMaker2
  metadata:
    name: my-mirror-maker2
    spec:
      version: 2.8.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"

MirrorMaker

较早版本的 MirorMaker 使用生产者和消费者在集群间复制数据。

MirrorMaker 使用:

  • 用于消耗源集群数据的消费者配置
  • 将数据输出到目标集群的制作者配置

使用者和制作者配置包括任何身份验证和加密设置。

include 字段定义从源到目标集群要镜像的主题。

Key Consumer 配置
消费者组标识符
MirrorMaker 消费者的使用者组 ID,以便使用的消息分配到一个消费者组。
消费者流数量
个值,用于确定一个消费者组中并行使用消息的消费者数量。
偏移提交间隔
设置耗用时间与提交消息之间的偏移提交间隔。
主要 Producer 配置
取消发送失败的选项
您可以定义是否忽略了消息发送失败,或者 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"
  # ...
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.