Kafka MirrorMaker 搭建异地同步集群

Kafka MirrorMaker 搭建异地同步集群

由于业务需要,要求异地的两套kafka集群同步数据,于是使用乐kafka自带的MirrorMaker工具kafka版本(kafka_2.12-2.1.0),zookeeper版本(zookeeper-3.4.13)。

下面介绍的是本地测试部署的环境,

启动两套kafka-zookeeper 环境

第一套集群的zookeeper使用默认端口2181,kafka使用默认9092端口。默认配置可不做更改,只需将zookeeper 的config目录下zoo_sample.cfg复制为zoo.cfg即可启动。(启动时先启动zookeeper再启动kafka)

在这里插入图片描述
部署启动的具体配置步骤课可参考我的另一篇博客
https://blog.csdn.net/w4187402/article/details/84848201

第二套配置时需要修改kafka和zookeeper的启动端口和日志目录,避免和第一套集群冲突。

zoo.config文件中修改数据目录和启动端口
在这里插入图片描述
kafka的config文件夹中server.properties文件修改监听端口和zookeeper连接端口及日志目录
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

修改完成后启动第二套集群(启动命令在https://blog.csdn.net/w4187402/article/details/84848201中有介绍)。

正常启动后命令窗口是常驻的,如下四个窗口(本人已运行过生产者消费者所以会有日志变化)。
在这里插入图片描述

创建consumer配置文件(采用拉模型,网络中断下的一个消费者远比一个生产者安全的多)

第一套集群目录下创建文件
sourceClusterConsumer.config

bootstrap.servers=localhost:9092
group.id=test-mirror-consumer-group

第二套集群目录下创建文件
sourceClusterConsumer.config

bootstrap.servers=localhost:9093
group.id=test-mirror-consumer-group

创建producer配置文件

第一套集群目录下创建文件
targetClusterProducer.config

bootstrap.servers=localhost:9093

第二套集群目录下创建文件
targetClusterProducer.config

bootstrap.servers=localhost:9092

创建完成后的kafka0
在这里插入图片描述
创建完成后的kafka1
在这里插入图片描述

启动MirrorMaker进程

命令如下

.\kafka_2.12-2.1.0\bin\windows\kafka-run-class.bat kafka.tools.MirrorMaker --consumer.config sourceClusterConsumer.config --num.streams 1 --producer.config targetClusterProducer.config --whitelist=".*"

其中
.\kafka_2.12-2.1.0\bin\windows\kafka-run-class.bat 是启动脚本(kafka自带)
kafka.tools.MirrorMaker 是脚本中的main方法
–consumer.config 指定消费者配置文件
–num.streams 消费者线程数
–producer.config 指定生产者配置文件
–whitelist=".*" 白名单配置

由于我需要两台集群互相同步但是数据不能重复消费,所以两台集群生产者消费者的topic需要设置为不相同的两个名称。白名单的配置在这时就起作用了,如果白名单配置为 –whitelist=".*" 也就是全部同步。会导致一个生产者发送消息后,这条消息会在两个集群中来回传递,你会看到一个消费者接收到这条消息的几百个副本。
最终我的集群1启动脚本为

.\kafka_2.12-2.1.0\bin\windows\kafka-run-class.bat kafka.tools.MirrorMaker --consumer.config sourceClusterConsumer.config --num.streams 1 --producer.config targetClusterProducer.config --whitelist="video"

集群2启动脚本为

.\kafka_2.12-2.1.0\bin\windows\kafka-run-class.bat kafka.tools.MirrorMaker --consumer.config sourceClusterConsumer.config --num.streams 1 --producer.config targetClusterProducer.config --whitelist="video1"

启动后命令行如下
在这里插入图片描述
白名单可根据生产需要配置,多个以逗号隔开
用java启动两个消费者和两个生产者,发现可以拉拉取到对方集群的消息
在这里插入图片描述

配置测试大功告成。

猜你喜欢

转载自blog.csdn.net/w4187402/article/details/104839307