我们使用MirrorMaker2将一些主题从一个kerberized kafka集群复制到另一个kafka群集(严格单向(。我们不控制源kafka集群,我们只能描述和阅读要消费的特定主题。
MirrorMaker2在源集群中创建并维护一个主题(mm2-offset-syncs
(,以对正在复制的每个主题分区的集群到集群偏移映射进行编码,并在源集群内创建一个AdminClient
,以处理ACL/Config传播。因为MM2需要授权才能在源集群中创建和写入这些主题,或者通过AdminClient
执行操作,所以我试图理解为什么/如果我们在场景中需要这些机制。
我的问题是:
- 在严格单向的场景中,这个源集群偏移同步主题对Mirrormaker有什么用处
- 如果它确实是多余的,是否可以在没有权限创建/制作该主题的情况下禁用它或操作mm2
- 如果ACL和Config传播被禁用,那么假设
AdminClient
不用于其他任何事情是否安全
在MirrorMaker代码中,偏移同步主题在启动时很容易由MirrorSourceConnector
创建,然后由MirrorSourceTask
维护。MirrorSourceConnector
中的AdminClient也发生了同样的情况。
我没有找到关闭这些功能的方法,但老实说,我可能在思路上遗漏了一些东西。
Kafka 3.0中引入了一个选项,使MM2不在源集群中创建MM2偏移同步主题,并在目标集群中对其进行操作。
感谢KIP-716:https://cwiki.apache.org/confluence/display/KAFKA/KIP-716%3A+允许+配置+位置+的+偏移量同步+主题+与+MirrorMaker2
拉取请求:
- https://issues.apache.org/jira/browse/KAFKA-12379
- https://github.com/apache/kafka/pull/10221
Tim Berglund在Kafka 3.0版本中提到了KIP-716:https://www.youtube.com/watch?v=7SDwWFYnhGA&t=462s
因此,要使MM2在目标集群中对MM2偏移量同步主题进行操作,您应该:
- 设置选项src->dst.offset-syncs.topic.location=目标
- 在目标群集中手动创建mm2-offset-syncs.dst.内部主题
- 启动MM2
src和dst-是别名的示例,请将其替换为您的别名。
请记住:如果mm2-offset-syncs.dst.internal主题不是在目标集群中手动创建的,那么mm2仍然会尝试在源集群中创建此主题。
在单向复制过程的情况下,此主题是无用的,因为它一直是空的,但MM2无论如何都需要它。