作者:石文
时间:2018-12-17
背景:
Kafka多机房(多AZ)部署可以保证数据容灾和高稳定性。但是多机房部署如何解决数据一致性的问题?
目的:
Kafka集群多机房(多AZ部署)解决数据一致性的问题。
部署方案概况:
Kafka 的 MirrorMaker工具解决数据一致性的问题。基本原理是使用Kafka的客户端启动消费者和生产者,从源集群消费数据并将数据生产,写入目标的Kafka集群。
部署方案:
#1.新建镜像目标集群。
#2.新建配置文件(模拟消费者)sourceClusterConsumer.config,最简单的文件内容包括了<bootstrap.servers>和<group.id>
bootstrap.servers=10.160.100.2:9092,10.160.99.4:9092
group.id=MirrorGroupTest
#3.新建配置文件(模拟生产者)targetClusterProducer.config,最简单的文件内容包括了<bootstrap.servers>
bootstrap.servers=10.237.59.114:9092,10.237.59.178:9092
#4.执行如下命令进行数据同步
./kafka-run-class.sh kafka.tools.MirrorMaker --new.consumer --consumer.config sourceClusterConsumer.config --producer.config targetClusterProducer.config --whitelist="security_logstash" &
##参数介绍
##kafka.tools.MirrorMaker主类
##--new.consumer 代表启动一个新的消费者
##--consumer.config 消费者配置
##--producer.config 生产者配置
##--whitelist 要数据同步的topic列表,支持正则匹配
效果检查:
目标集群将不断的从源集群消费数据并写入到镜像集群中。
问题总结:
-
当源集群出现故障时(ZK挂了),如何保证数据一致性?
-
如何保证消费者可以两个集群消费的数据是不会重复的?
参考资料:
https://blog.csdn.net/zhanyuanlin/article/details/76695481