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 架构支持 主动/主动 集群配置中的双向复制。
每个集群使用 source 和 remote 主题的概念复制其他集群的数据。由于同一主题存储在每个集群中,所以远程主题由 MirrorMaker 2 重命名,以表示源集群。原始集群的名称前面是主题名称的前面。
图 7.2. 主题重命名
通过标记原始集群,主题不会复制到该集群。
在配置需要数据聚合的架构时,通过 远程主题 复制的概念非常有用。消费者可以订阅同一集群中的源和远程主题,而无需单独的聚合集群。
7.4.1.3. 单向复制(active/passive) 复制链接链接已复制到粘贴板!
MirrorMaker 2 架构支持 主动/被动 集群配置中的单向复制。
您可以使用 主动/被动集群 配置进行备份或将数据迁移到另一个集群。在这种情况下,您可能不希望自动重命名远程主题。
您可以通过将 IdentityReplicationPolicy
添加到源连接器配置来覆盖自动重命名。应用此配置后,主题会保留其原始名称。
显示 MirrorMaker 2 配置的 YAML 示例
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 被终止并重新创建。