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 架构在 主动/主动 集群配置中支持双向复制,因此两个集群都处于活跃状态,同时提供相同的数据。每个目标目的地都需要一个 MirrorMaker 2.0 集群。
通过自动将集群名称加上主题名称的重命名来区分远程主题。如果要在不同的地理位置本地提供相同的数据,这将非常有用。
但是,如果要在主动/被动集群配置中备份或迁移数据,您可能需要保留主题的原始名称。如果是这样,您可以配置 MirrorMaker 2.0 以关闭自动重命名。
图 5.2. 双向复制
显示 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" # ...