【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Kafka 多数据中心部署灾备三要素

  • 2018-12-10
  • 本文字数:2349 字

    阅读完需:约 8 分钟

Kafka多数据中心部署灾备三要素

AI 前线导读: 想象一下,灾难性破坏——比如灾难性硬件故障、软件故障、停电、拒绝服务攻击或其他一些事件——导致一个装有 Apache Kafka 集群的数据中心完全失效。不过,另一个数据中心的 Kafka 继续在运行中,它已经拥有原始数据中心的数据副本,这些数据是从具有相同名称的主题上复制过来的。客户端应用程序从故障集群切换到正在运行的集群,并根据在原始数据中心中停止的位置自动恢复在新数据中心的数据消费。企业最大限度地减少了灾难导致的停机时间和数据丢失,并继续运行它们的任务关键型应用程序。


更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)


说到底,灾难恢复计划的目的就是要让业务能够持续运​​行,因为数据中心停机和数据丢失可能导致企业收入遭到损失,甚至完全停止运营。为了最大限度地减少灾难导致的停机时间和数据丢失,企业应该要制定业务连续性计划和灾难恢复策略。


总的来说,你应该要采取三项措施来进行灾难规划:


  • 设计多数据中心解决方案;

  • 制定故障转移和故障恢复手册;

  • 测试!测试!测试!

1.设计多数据中心解决方案

单个数据中心的 Kafka 通过集群内数据复制提供消息持久性。在进行数据复制时,为生产者设置 acks = all 选项可以带来最强壮的可用保证,因为它可以确保集群中的其他代理在首领代理向生产者做出确认之前接收到数据。


单数据中心设计可以提供针对代理故障的保护。如果客户端应用程序正在通过某个代理连接到集群,并且这个代理发生了故障,则还会有另一个引导代理可以保证客户端连接到集群。但是,如果整个数据中心出现故障,那么单个 Kafka 集群就也很容易发生失效。


在设计多数据中心时,不是只在单个数据中心中部署 Kafka 集群,而是在两个或更多数据中心部署,它们在地理位置上是分散的。它们可以在自有数据中心或在 Confluent Cloud 中。Confluent Replicator 可在站点之间同步数据,当一个数据中心发生部分或全面故障时,应用程序可以转移到其他数据中心。


为了帮助你设计多数据中心解决方案,我们发布了白皮书“Disaster Recovery for Multi-Datacenter Apache Kafka Deployments”的更新版本。白皮书的最新版本介绍了多数据中心部署的设计和配置,包括多数据中心的设计、集中式 schema 管理和客户端应用程序的开发。


它还详细介绍了 Confluent Replicator 5.0 的新功能,包括:


  • 防止主题的循环复制:在双活(active-active)架构中双向运行 Replicator,它可以防止无限循环复制。否则的话,如果你不使用特殊主题命名模式,可能会导致无限循环复制,也就是将数据从 cluster-1 复制到 cluster-2,然后再将 cluster-2 中的相同数据复制回 cluster-1,然后再次从 cluster-1 复制到 cluster-2。

  • 时间戳保留:原始集群在生成消息时记录的时间戳被传到了目标集群,这让流式应用程序能够基于原始时间戳进行操作。

  • 消费者偏移量转换:已提交的偏移量被复制到目标集群,并对其进行转换,让偏移值对新集群来说是有意义的。这样消费者在切换到目标集群后可以自动恢复消费消息。


你的架构会因为你的业务需求的不同而有所不同,但你可以应用白皮书中提到的构建块来增强灾难恢复计划。


2.制定故障转移和故障恢复手册

当灾难发生时,你需要根据行动手册准备好采取特定的行动。如何将客户端应用程序转移到新数据中心?如何启用 Confluent Schema Registry 注册新 schema?你需要做些什么才能让消费者开始在新集群中恢复数据消费?最重要的是,在原始数据中心恢复后,你如何切换回去?


白皮书中介绍了基本的多数据中心原则,解释了在一个数据中心发生故障时应该怎么办,以及在原始数据中心恢复之后如何切换回去。你应该在你的实际部署当中应用这些原则。


如何进行手动或自动故障转移取决于恢复时间目标(RTO),它是指完成故障转移的时间点。理想情况下,灾难发生后应该尽快将停机时间降至最低。RTO 越是激进,你就越是需要自动化的工作流程,这取决服务发现机制和应用程序的故障转移逻辑。


恢复点目标(RPO)是指应用程序可以使用已知数据恢复到的灾难发生前的最近一个时间点。通常情况下,尽可能接近灾难发生前的时间,以尽量减少数据丢失。特别是如果你利用 Replicator 5.0 提供的功能,它将极大简化故障转移和故障恢复的工作流程,并改善这些恢复时间。

3.测试!测试!测试!

使用白皮书中提到的构建块来配置生产环境,然后模拟灾难。遵循整个工作流程:关闭集群,对应用程序进行故障转移,确保它们能够成功处理数据,然后进行故障恢复。


工作流程的每一个步骤都非常重要,主要是因为它可以确保多数据中心设计的稳健性,并可以满足你的特定业务需求。每个部署都略有不同,为了满足业务需求,客户端应用程序的开发方式也略有不同,因此你需要确保一切正常。进行灾难模拟的第二个原因是这样可以测试你的故障恢复手册,确保每个步骤都被记录在手册中。


为了帮助你进行测试,Confluent 在 GitHub 存储库中提供了一个 Docker 配置文件。免责声明:这仅用于测试——不要将此 Docker 配置文件用在生产环境中!


Docker 提供了一个双活多数据中心环境,利用了新的 Replicator 功能,例如通过起源标头来防止主题循环复制,以及时间戳保留和消费者偏移量转换。


要进行测试,请根据你的部署环境调整配置文件,并运行客户端应用程序。你还可以使用提供的示例客户端应用程序来查看它是如何在新数据中心中根据其在原始数据中心中停止的位置恢复数据消费的。然后,模拟故障转移和故障回复,测试手册并验证它的有效性。



总之,灾难恢复计划通常需要在多数据中心部署 Kafka 集群,并且数据中心在地理位置上是分散的。采取以下三个步骤为灾备做好准备:


  • 设计多数据中心解决方案;

  • 制定故障转移和故障恢复手册;

  • 测试!测试!测试!


英文原文:


https://www.confluent.io/blog/3-ways-prepare-disaster-recovery-multi-datacenter-apache-kafka-deployments


2018-12-10 17:362865
用户头像

发布了 322 篇内容, 共 134.3 次阅读, 收获喜欢 144 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

瞬间霸榜,收藏第一的“kafka学习笔记,java图片转视频

Java 程序员 后端

秋招必备!阿里产出的高并发+JVM套餐,mybatis总结

Java 程序员 后端

架构实战营模块2课后作业

断水风春

架构实战营

看完这篇,别人的开源项目结构应该能看懂了,kafka入门与实践百度云

Java 程序员 后端

linux中同时移动多种格式文件

入门小站

Linux

硬肝到秃头!Alibaba强推并发编程笔记我跪了,真的学到好多东西

Java 程序员 后端

文本随机打乱工具

入门小站

工具

确定要面试问我JVM吗?我打算聊一个小时的!(1),linux驱动架构

Java 程序员 后端

真香!前阿里P8甩我一份内部SpringCloud笔记手册,竟然在Github上点击破百万

Java 程序员 后端

碎片化时间学这些架构知识,月薪20K还不是轻轻松松(1),美团高级java面试题

Java 程序员 后端

看完这篇文章,你对Redis持久化的迷惑就全解开了,超全面

Java 程序员 后端

秒懂数组拷贝,感知新境界,java编程思维百度云

Java 程序员 后端

真666!阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

Java 程序员 后端

知乎万赞:Java程序员的悲哀竟然是,java编程思想百度云

Java 程序员 后端

知乎头条。纯干货:深度认识Sharding-JDBC,mybatis连接数据库原理

Java 程序员 后端

架构实战营- 模块二

瓜子葫芦侠

「架构实战营」

硬核!逛了5年的Github一口气把我收藏的JAVA开源项目分享给你

Java 程序员 后端

秀儿!用SSM框架实现了支付宝的支付功能,神操作啊,大型分布式系统架构图

Java 程序员 后端

看一遍就理解:动态规划详解,双非渣本Java四年磨一剑

Java 程序员 后端

看完这篇,面试再也不怕被问 Webpack 热更新,java原理及插件

Java 程序员 后端

看这篇就够了!RabbitMQ如何防止数据丢失,详细讲解,linux教程课后答案孟庆昌

Java 程序员 后端

硬核图解!断网了,还能ping通 127,高性能mysql笔记

Java 程序员 后端

确定要面试问我JVM吗?我打算聊一个小时的!,目前最全的《Java面试题及解析》

Java 程序员 后端

秒懂 Java 的三种代理模式,任小龙java笔记百度云

Java 程序员 后端

知乎:怎么评价程序员35岁了还在撸代码?,java实用教程第五版电子书答案

Java 程序员 后端

碎片化时间学这些架构知识,月薪20K还不是轻轻松松,教你解决线上频出MySQL死锁问题

Java 程序员 后端

神操:凭借“阿里Java脑图(1),神操作

Java 程序员 后端

神操:凭借“阿里Java脑图,mysql数据库教学视频教程

Java 程序员 后端

真香现场!全网首发Spring5秘籍手册+知识导图,记得把每一次面试当做经验积累

Java 程序员 后端

硬核解析,巧用案例学习jQuery框架三种事件绑定方式,最新阿里+头条+腾讯大厂Java笔试真题

Java 程序员 后端

硬核!阿里内部这份《Java面试核心知识手册,面经解析

Java 程序员 后端

Kafka多数据中心部署灾备三要素_数据库_Yeva Byzek_InfoQ精选文章