介绍
Kafka Mirror Maker,可以把kafka集群中的消息复制到另一个kafka集群,这在测试环境引流的时候,或者需要把多个不同kafka集群的消息合并在一个大集群的时候非常有用,kafka mirror maker的原理图如下:
入上图架构,kafka mirror在部署的时候,是部署在target集群这边的,而且需要指定consumer和producer的配置文件。
配置文件
source.consumer.configure:
bootstrap.servers=10.205.151.11:9092
zookeeper.connect=10.205.52.15:2181,10.205.52.16:2181,10.205.52.17:2181
zookeeper.connection.timeout.ms=1000000
group.id=prd-MirrorMaker-webjs
message.max.bytes=7000000
fetch.message.max.bytes=7500000
max.partition.fetch.bytes=7500000
replica.fetch.max.bytes=7500000
target.producer.configure:
bootstrap.servers=10.205.58.25:9092,10.205.58.26:9092,10.205.58.27:9092
message.max.bytes=7000000
fetch.message.max.bytes=7500000
max.partition.fetch.bytes=7500000
replica.fetch.max.bytes=7500000
启动
命令
kafka-run-class.sh kafka.tools.MirrorMaker \
--consumer.config ../config/source.consumer.configure \
--producer.config ../config/target.producer.configure \
--num.streams 4 \
--new.consumer \
--whitelist="app_loginsession"
参数
--consumer.config 指定针对source集群的consumer配置文件
--producer.config 指定针对target集群的producer配置文件
--whitelist 一个逗号分隔的,希望复制的topic列表
--blacklist 使用java正则匹配的topic列表,将会被拒绝复制
--num.streams 创建多少consumer流线程. --num.streams 4
--num.producers 指定创建多少producer实例. --num.producers 2
--queue.size 多少消息会被buffer,Default = 10000. --queue.size 2000
检查
命令
kafka-run-class.sh kafka.tools.ConsumerOffsetChecker \
--group KafkaMirror \
--zkconnect dc1-zk:2181 \
--topic test-topic
参数
--group mirror进程中consumer的group名称.
--zkconnect source kafka集群的zk地址.
--broker-info source kafka集群的broker信息.
--topic 逗号分隔的你想查看的topic列表,如果没有指定,则显示所有的topic.