真实起两个独立的Kafka集群,用connect-mirror-maker.sh配置单向复制,验证MirrorMaker2真实的topic命名规则、内部状态topic,以及历史数据和实时数据的复制延迟。
配置 · mm2.properties clusters = A, B A.bootstrap.servers = localhost:19092 B.bootstrap.servers = localhost:19192 A->B.enabled = true A->B.topics = mm2-source-topic B->A.enabled = false
命令 · shell $ connect-mirror-maker.sh mm2.properties
$ kafka-topics.sh --bootstrap-server localhost:19192 --list A.checkpoints.internal A.heartbeats A.mm2-source-topic ← 真实新增,源集群名A被当作前缀 mm2-configs.A.internal mm2-offsets.A.internal mm2-status.A.internal 真实cluster B上A.mm2-source-topic的内容(共50条): ['clusterA-msg-0', 'clusterA-msg-1', 'clusterA-msg-2', 'clusterA-msg-3', 'clusterA-msg-4', ...]
MirrorMaker2真实用源集群别名.原topic名这个命名规则(A.mm2-source-topic),避免复制过来的topic跟目标集群本地同名topic真实发生冲突。真实自动创建的一堆mm2-*.internaltopic,是MM2自己用来记录复制进度、心跳、配置的内部状态,不是业务数据。
命令 · python p.produce("mm2-source-topic", value="live-msg-0" ~ "live-msg-9") # 真实往cluster A写10条
真实3秒后cluster B看到的新增内容: ['live-msg-0', 'live-msg-1', ..., 'live-msg-9']
每一步都是本文上面用真实两个独立Kafka集群跑出来的原始结果。