Apache kafka 具有高可用性的kafka多数据中心

Apache kafka 具有高可用性的kafka多数据中心,apache-kafka,Apache Kafka,我正在不同的DC上设置2个kafka v0.10.1.0群集,并计划使用mirror maker将其中一个作为源,另一个作为目标,我不确定的是,当我的源/主群集发生故障时,如何确保高可用性(源kafka群集发生故障的完整DC)我是否需要切换应用程序以向目标卡夫卡生成消息?当源卡夫卡返回时会发生什么?如何使其与可能丢失的邮件同步 感谢您阅读您的问题,我不认为MirrorMaker是适合您需要的工具 基本上,MirrorMaker只是一个消费者和生产者,将消息从一个集群复制到另一个集群。它不是一个将

我正在不同的DC上设置2个kafka v0.10.1.0群集,并计划使用mirror maker将其中一个作为源,另一个作为目标,我不确定的是,当我的源/主群集发生故障时,如何确保高可用性(源kafka群集发生故障的完整DC)我是否需要切换应用程序以向目标卡夫卡生成消息?当源卡夫卡返回时会发生什么?如何使其与可能丢失的邮件同步


感谢您阅读您的问题,我不认为MirrorMaker是适合您需要的工具

基本上,MirrorMaker只是一个消费者和生产者,将消息从一个集群复制到另一个集群。它不是一个将两个Kafka集群连接在一个活动配置中的工具,这听起来很像您正在寻找的

但要按顺序回答您的问题:

我是否需要切换应用程序以向 目标是卡夫卡

是的,当前没有故障切换功能,您需要在生成程序中实现逻辑,以便在出现x个失败消息或y分钟内没有发送消息等情况后尝试目标群集

卡夫卡回来后会发生什么

几乎没有什么是您自己不实现的:) MirrorMaker将再次开始将数据从源群集复制到目标群集,但由于您的生产者现在已切换到目标群集,因此源群集无法获取任何数据,因此他们将一直处于空闲状态。 您的生产者将继续生产到目标集群中,除非您实现了定期检查源是否重新联机并让他们重新切换

如何使其与可能丢失的邮件同步

当您的源集群重新联机时,假设我上面提到的所有事情都发生了,您就可以有效地切换集群,根据您是希望将源代码作为主集群写入,还是愿意在这种情况下转换角色,我可以想出两个选项:

  • 反转mirrormaker的方向并手动设置使用者组偏移,以便它在源群集停止的点拾取
  • 暂时停止生成新数据,将丢失的数据恢复到源集群,切换回您的生产者,然后重新启动所有程序
这两个选项都要求您手动找出源集群上缺少哪些数据,但我认为没有办法解决这个问题


底线是,对于MirrorMaker来说,这不是一件容易的事情,如果源代码宕机,您是否真的想将生产商切换到目标集群可能值得再考虑一次


您还可以看看Confluent's,它可能更适合您的需求,并且是他们公司产品的一部分。关于这方面的信息有点稀少,如果你对它感兴趣,请告诉我,我可以介绍给能告诉你更多信息的人(当然,也可以发邮件给Confluent,这样也能找到合适的人)。

Kafka 0.10.1可以为HA提供一些调整。如果您仍在寻找解决方案,请告诉我。我可以提供更多详细信息。关于在本场景中使用Replicator的更多信息,供将来遇到此答案的任何人使用: