Apache kafka Apache Kafka灾难恢复计划
我们有10个应用服务器和3个kafka群集来支持应用程序消息传递请求。 最近,我们遇到了一个情况,由于网络问题,kafka集群宕机,整个应用程序宕机数小时,因为所有数据都丢失了。 当我在寻找卡夫卡灾难恢复计划时,发现我们应该-Apache kafka Apache Kafka灾难恢复计划,apache-kafka,Apache Kafka,我们有10个应用服务器和3个kafka群集来支持应用程序消息传递请求。 最近,我们遇到了一个情况,由于网络问题,kafka集群宕机,整个应用程序宕机数小时,因为所有数据都丢失了。 当我在寻找卡夫卡灾难恢复计划时,发现我们应该- 转移到同一数据中心中的另一个群集 转移到附近数据中心的另一个群集 转移到另一个区域数据中心中的另一个群集 由于我们在拥有另一个数据中心方面存在一些限制,因此我们正在考虑一种方法- 所有应用服务器都在文件中写入数据 Filebeat读取文件并推送到kafka 如果卡夫卡终端
另外,如果数据位于不同的数据中心,这也会给您带来更多的信心。虽然我还没有出现过单DC冗余的情况,但我可以看出这对一些客户来说可能很有趣。所以这是一个假设的解决方案
我认为,将非卡夫卡基础设施作为备份解决方案是一个坏主意。您的程序员在编码时会哭,因为API依赖于大量与Kafka相关的元数据来接收来自主题和分区的适当消息。 应用程序将如何从主题1:分区:27中找到它处理的最后一条记录?由于制作人也使用卡夫卡API,未来的记录将走向何方
我将构建一个辅助Kafka集群,它比您的主集群更小,具有独立的代理、zookeeper和磁盘。使用mirror maker或replicator()将实际数据填充到此群集。您可以保持较低的保留时间来管理磁盘空间等,但这将使所有实时应用程序顺利运行 一旦主集群崩溃,应用程序需要使用该集群的代理进行常规处理 消费者应用程序需要在卡夫卡之外保存偏移量,以便能够从最后一个检查点简单地重新启动。Producer apps只需更改代理id。如果您想达到该级别,可以在代理或独立的微服务中编程此开关,以维护Kafka连接。您是否检查了MirrorMaker 2(Kafka 2.5+附带的功能)? 它支持具有2个或更多群集的单向、双向复制方案。
如果您从另一方接管,它甚至会将消费群偏移量转换为另一个Kafka群集。这里有相当好的详细信息,这就是我的观点,我们不能有多个数据中心,因此,我谈论的这个计划是针对单个数据中心的灾难恢复计划,您无法保护单个数据中心免于故障。对于“将数据写入文件”,您是否正在回复该文件?如果服务器中的硬盘在写入时出现故障怎么办?这是所有软件系统的硬道理。。。您需要多个冗余。我认为写入文件是可以的。现在,如果filebeat是一个可靠的卡夫卡制作人,那么就使用它。如果不是,则将您自己的解决方案写入流文件。如果计划复制整个群集进行故障转移,则该群集的大小应相同,而不是更小。