9.2. 配置 MirrorMaker 2 连接器
将 MirrorMaker 2 连接器配置用于编配 Kafka 集群之间的数据同步的内部连接器。
MirrorMaker 2 由以下连接器组成:
MirrorSourceConnector
-
源连接器将主题从源集群复制到目标集群。它还复制 ACL,且是
MirrorCheckpointConnector
才能运行所必需的。 MirrorCheckpointConnector
- checkpoint 连接器会定期跟踪偏移。如果启用,它还在源和目标集群之间同步消费者组偏移。
MirrorHeartbeatConnector
- heartbeat 连接器会定期检查源和目标集群之间的连接。
下表描述了连接器属性以及您配置为使用它们的连接器。
属性 | sourceConnector | checkpointConnector | heartbeatConnector |
---|---|---|---|
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | |
| ✓ | ✓ | |
| ✓ | ✓ | |
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ |
9.2.1. 更改消费者组偏移主题的位置
MirrorMaker 2 使用内部主题跟踪消费者组的偏移。
offset-syncs
主题-
offset-syncs
主题映射复制主题元数据的源和目标偏移。 checkpoints
主题-
checkpoints
主题映射源和目标集群中每个消费者组中复制的主题分区的最后提交偏移量。
因为它们被 MirrorMaker 2 内部使用,所以您不会直接与这些主题交互。
MirrorCheckpointConnector
为偏移跟踪发出 检查点。checkpoints
主题的偏移通过配置以预先确定的间隔进行跟踪。这两个主题都允许从故障转移上的正确偏移位置完全恢复复制。
offset-syncs
主题的位置是 源集群
。您可以使用 offset-syncs.topic.location
连接器配置将其更改为 目标集群
。您需要对包含该主题的集群进行读/写访问。使用目标集群作为 offset-syncs
主题的位置,您也可以使用 MirrorMaker 2,即使您只有对源集群的读访问权限。
9.2.2. 同步消费者组偏移
__consumer_offsets
主题存储各个消费者组的提交偏移信息。偏移同步会定期将源集群的消费者组的使用者偏移转移到目标集群的使用者偏移量中。
偏移同步在主动/被动配置中特别有用。如果主动集群停机,消费者应用程序可以切换到被动(standby)集群,并从最后一个传输的偏移位置获取。
要使用主题偏移同步,请通过将 sync.group.offsets.enabled
添加到检查点连接器配置来启用同步,并将属性设置为 true
。默认情况下禁用同步。
在源连接器中使用 IdentityReplicationPolicy
时,还必须在检查点连接器配置中进行配置。这样可确保为正确的主题应用镜像的消费者偏移。
消费者偏移仅针对目标集群中未激活的消费者组同步。如果消费者组位于目标集群中,则无法执行同步,并返回 UNKNOWN_MEMBER_ID
错误。
如果启用,则会定期从源集群同步偏移。您可以通过在检查点连接器配置中添加 sync.group.offsets.interval.seconds
和 emit.checkpoints.interval.seconds
来更改频率。属性指定同步消费者组偏移的频率,以及为偏移跟踪发送检查点的频率。这两个属性的默认值为 60 秒。您还可以使用 refresh.groups.interval.seconds
属性更改检查新消费者组的频率,该属性默认为每 10 分钟执行。
由于同步基于时间,因此消费者到被动集群的任何切换都可能会导致一些消息重复。
如果您有使用 Java 编写的应用程序,您可以使用 RemoteClusterUtils.java
工具通过应用同步偏移。实用程序从 checkpoints
主题获取消费者组的远程偏移。
9.2.3. 决定使用 heartbeat 连接器的时间
heartbeat 连接器发出心跳来检查源和目标 Kafka 集群之间的连接。内部 心跳
主题从源集群复制,这意味着 heartbeat 连接器必须连接到源集群。heartbeat
主题位于目标集群上,它允许它执行以下操作:
- 识别它要从中镜像数据的所有源集群
- 验证镜像进程的存活度和延迟
这有助于确保进程不会因为任何原因而卡住或已停止。虽然 heartbeat 连接器是监控 Kafka 集群之间的镜像进程的有价值的工具,但并非总是需要使用它。例如,如果您的部署具有低网络延迟或少量主题,您可能需要使用日志消息或其他监控工具来监控镜像过程。如果您决定不使用 heartbeat 连接器,只需从 MirrorMaker 2 配置中省略它。
9.2.4. 对齐 MirrorMaker 2 连接器的配置
为确保 MirrorMaker 2 连接器正常工作,请确保在连接器之间保持一致某些配置设置。具体来说,请确保以下属性在所有适用的连接器中具有相同的值:
-
replication.policy.class
-
replication.policy.separator
-
offset-syncs.topic.location
-
topic.filter.class
例如,source、检查点和 heartbeat 连接器的 replication.policy.class
的值必须相同。不匹配或缺失的设置会导致数据复制或偏移同步出现问题,因此必须使用同一设置保持所有相关连接器配置。