mirrormaker 2(mm2)是kafka官方推荐的跨集群同步方案,基于kafka connect框架,支持偏移映射、自动拓扑发现、acl同步和故障恢复;通过配置集群别名、bootstrap.servers、源→目标同步规则(如primary->backup.topics正则匹配)及启用sync.topic.acls.enabled等参数实现企业级数据复制。

用 MirrorMaker 2(MM2)配置 Kafka 跨集群同步是最主流、最稳定的方式。它不是简单地“转发消息”,而是具备偏移映射、自动拓扑发现、ACL 同步和故障恢复能力的企业级方案。
明确源集群与目标集群连接参数
MM2 通过配置文件定义集群别名和网络地址,不依赖 ZooKeeper(Kafka 2.8+ 已弃用 ZooKeeper 管理 consumer group):
- 在 connect-distributed.properties 或 MM2 配置中声明集群列表,例如:
clusters = primary, backup - 为每个集群指定 bootstrap.servers:
primary.bootstrap.servers = kafka-p1:9092,kafka-p2:9092backup.bootstrap.servers = kafka-b1:9092,kafka-b2:9092 - 确保源集群和目标集群的网络互通,且目标集群已创建好对应 topic(或开启
auto.create.topics.enable=true)
配置同步规则与主题范围
通过 “源→目标” 的映射语法控制哪些数据被复制:
- 启用同步:设置
primary->backup.enabled = true - 指定 topic 匹配规则:
primary->backup.topics = my-app-.*, events.*(支持正则)
或使用primary->backup.topic.exclude.regex排除内部 topic - 如需同步 topic ACL,开启:
sync.topic.acls.enabled = true(要求源/目标集群均启用 SASL/SSL 权限控制)
启动并验证 MirrorMaker 2 进程
MM2 以 Kafka Connect 插件形式运行,推荐使用分布式模式:
- 下载并安装
kafka-mirror-maker-2(随 Kafka 2.7+ 自带) - 启动命令示例:
bin/connect-distributed.sh config/mm2-config.properties - 检查运行状态:
访问http://mm2-host:8083/connectors查看 connector 列表
调用GET /connectors/mm2-primary->backup-connector/status确认 RUNNING - 验证数据:在目标集群执行
kafka-console-consumer.sh --bootstrap-server ... --topic my-app-events --from-beginning --max-messages 5
关键注意事项与调优点
避免常见同步异常,需关注以下细节:
- offset 映射依赖
mm2-offset-syncs.topic.replication.factor,建议设为 3(尤其跨机房场景) - 若目标集群 topic 分区数不同,MM2 默认按 key hash 分发;如需严格保序,应保持 source/target topic 分区数一致
- 生产环境建议开启 metrics 上报:
replication.policy.class=org.apache.kafka.connect.mirror.DefaultReplicationPolicy
配合 Prometheus + JMX 拉取KafkaMirrorMaker2MBean - 双向同步需为两个方向分别配置 connector,并避免 topic 名称冲突(可用
replication.policy.class=org.apache.kafka.connect.mirror.IdentityReplicationPolicy加前缀隔离)











