sta*_*ter 8 backup restore apache-kafka apache-zookeeper
我正在运行一个简单的3节点kafka和5个节点zookeeper来运行kafka,我想知道哪个是备份我的好方法kafka,同样适合我zookeeper.
目前我只是将我的数据目录导出到s3存储桶......
谢谢.
krz*_*chu 10
Zalando最近发表了很好的文章,如何备份Kafka和Zookeeper.通常,Kafka备份有两条路径:
首选备份解决方案取决于您的使用案例.例如,对于流应用程序,第一种解决方案可能会减少您的痛苦,而当使用Kafka进行事件采购时,第二种解决方案可能更为理想.
关于Zookeeper,Kafka保留有关主题(持久存储)以及经纪人发现和领导者选举(短暂)的信息.Zalando决定使用Burry,它简单地遍历Zookeeper树结构,将其转储到文件结构,然后将其压缩并推送到云存储.它遇到了一个小问题,但很可能它不会影响Kafka持久数据的备份(TODO验证).Zalando在那里描述,在恢复时,最好首先创建Zookeeper集群,然后将新的Kafka集群连接到它(使用新的唯一代理ID),然后恢复Burry的备份.Burry不会覆盖现有节点,也不会提供有关旧代理的短暂信息,以及备份中存储的内容.
注意:尽管他们提到参展商的使用情况,但在备份Burry时并不需要备份.
Apache Kafka 已经使您的数据保持分布式并提供强大的一致复制功能。
首先从架构设计的角度来看,我们需要了解备份对我们意味着什么?
是为了在数据中心故障中幸存下来吗?
正如您在评论中所说,想象一下整个数据中心宕机的情况,这意味着该数据中心中运行的所有内容都消失了,而不仅仅是 kafka。要处理此类故障,您需要设计到不同数据中心的实时复制策略,您可以为此使用kafka-mirror maker。您需要在不同的数据中心(不一定具有相同的硬件资源)设置一个 kafka 集群,然后将您当前的数据中心 Kafka 配置为镜像到另一个数据中心。
在数据中心范围内发生故障的情况下,您的所有服务都将从该备用数据中心运行,并且它们将使用您的镜像 Kafka 作为主要 kafka。
然后,一旦另一个数据中心回来,您可以以相反的方式设置镜像,然后您就可以来到旧的(已损坏的)数据中心。
Kafka connect 有几个开箱即用的连接器,用于从 kafka 传输数据并保证一致性。因此,也许您可以选择 AWS S3 作为您的备份存储,而以下连接器可以为您做到这一点。
Pinterest 拥有将数据传输到 AWS S3、Google 和 Mircosoft 云存储的secor 服务。我相信您还可以为所有大型云提供商找到一些专用连接器。在将 Kafka 数据备份到高度可用的云存储时需要考虑的事情很少。
kafka 对每个主题都有一个数据保留策略,因此旧数据将被 Kafka 本身从 Kafka 服务器中删除,但它仍将保留在您的 AWS S3 存储桶中,因此如果您直接将其复制回来以防发生恢复事件,那么您将在 Kafka 代理上看到更多数据,并且将整个数据恢复到现有运行的 Kafka 集群中也不是一个好主意,因为那样您将开始处理旧数据。所以在这个过程中要有选择性和小心
对于zookeeper,您也可以将数据复制到AWS S3,但由于临时节点,您在恢复时需要小心。我找到了几个可以提供帮助的链接:
https://jobs.zalando.com/tech/blog/backing-up-kafka-zookeeper/ https://www.elastic.co/blog/zookeeper-backup-a-treatise https://medium.com/@ Pinterest_Engineering/zookeeper-resilience-at-pinterest-adfd8acf2a6b
最后,“预防胜于治疗”。因此,如果您在 AWS 等云提供商设置中运行,那么您可以通过将故障提前记住来部署集群设置。下面的链接有一些信息。
https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-kafka-on-aws/
| 归档时间: |
|
| 查看次数: |
9325 次 |
| 最近记录: |