K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

栏目: 服务器 · 发布时间: 5年前

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

作者: 李航(滴滴基础平台技术专家)

编辑: 小君君(才云)

Ceph RBD 是 Ceph 的 RADOS 块设备。RBD 块存储是最稳定且最常用的存储类型,它类似磁盘可以被挂载。RBD 块设备具有快照、多副本、克隆和一致性等特点,数据以条带化的方式存储在 Ceph 集群的多个 OSD 中。本文的作者是滴滴基础平台技术专家李航,在这篇文章中,他将对 3 种 Ceph RBD 灾备方案展开介绍,并从它们的实现原理、操作命令、性能优缺等方面进行全面分析,为大家在生产中选择最佳灾备方案提供建议。

通过本文你将了解到:

  • 业内灾备方案

  • Snapshot

  • Ceph BackUp

  • RBD Mirroring

  • 方案对比

  • 总结

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

业内灾备方案

1. Snapshot  

1.1 介绍

Cluster A&B 是独立的 Ceph 集群,通过 RBD 的 Snapshot 机制,在 Cluster A 端,针对 image 定期通过 RBD 创建 image 的 snap,然后通过 rbd export-diffrbd import-diff 命令将 image 备份到 Cluster B 中。

1.2 原理

异步备份,基于 RBD 的 snapshot 机制。

1.3 命令和步骤

把 Cluster A 的 pool rbd 下面的 image testimage 异步备份到 Cluster B 的 pool rbd 下相同的 image 上:

  • 在 Cluster A/B 上创建 rbd/testimage;

rbd create -p rbd --size 10240 testimage

  • 在准备备份 image 前,暂停 Cluster A 端对 testimage 的 IO 操作,然后创建一个 Snapshot;

rbd snap create <snap-name>

  • 导出 Cluster A 端的 testimage 数据,不指定 from-snap;

rbd export-diff <image-name> <path>

  • copy 上一步中导出的文件到 Cluster B 中,并导入数据到 testimage 中。

rbd import-diff <path> <image-name>

后续需要周期性地暂停 Cluster A 端的 testimage 的 IO,然后创建 snapshot,通过 rbd export-diff <image-name> [--from-snap <snap-name>] <path> 命令导出 incremental diff。

工程师们可以将差异数据文件 copy 到 Cluster B 上,然后通过命令 rbd import-diff <path> <image-name> 导入。通过该操作,在 rbd export-diff 时,就可以使导出的数据在  take snapshot  之后出现。

1.4 优缺点

优点:

  • 当前 Ceph 版本就支持 RBD Snapshot 的功能;

  • 命令简介方便,通过定制执行脚本就能实现 RBD 块设备的跨区备份。

缺点:

  • 每次同步前都需要在源端 take Snapshot;

  • 持续的 Snapshots 可能导致 image 的读写性能下降;

  • 还要考虑后续删除不用的 Snapshots;

  • Snapshot 只能保证 IO 的一致性,并不能保证使用 RBD 块设备的系统一致性。

注:Snapshot 可以在每次操作时,暂停 image 的 IO,但是它需要利用 sync IO 数据来保证 RBD 块设备上的系统一致性,同时需要虚拟机支持 qemu-guest-agent。

1.5 参考文献

https://ceph.com/dev-notes/incremental-snapshots-with-rbd/
https://www.rapide.nl/blog/item/ceph_-_rbd_replication.html
http://wiki.libvirt.org/page/Qemu_guest_agent
http://www.zphj1987.com/2016/06/22/rbd
http://ju.outofmemory.cn/entry/243899

2. Ceph BackUp  

2.1 介绍

Teralytics 是一家国外的大数据公司,Ceph BackUp 是他们开源的 Ceph 备份工具。 这个软件基于 Python 实现,可以说作者的实现逻辑是很清晰的,并且提供了配置文件的方式,且容易上手(也可以集成到自己的平台中去)

软件包含以下功能:

  • 支持存储池和多 image 的只对;

  • 支持自定义备份目标路径;

  • 配置文件支持;

  • 支持备份窗口设置;

  • 支持压缩选项

  • 支持增量和全量备份的配置。

2.2 原理

异步备份,基于 RBD 的 Snapshot 机制。

2.3 命令和步骤

2.3.1 全量备份配置

上面的配置文件已写好,直接执行备份命令:

cephbackup
Starting backup for pool rbd
Full ceph backup
Images to backup:
 rbd/zp
Backup folder: /tmp/
Compression: True
Check mode: False
Taking full backup of images: zp
rbd image 'zp':
 size 40960 MB in 10240 objects
 order 22 (4096 kB objects)
 block_name_prefix: rbd_data.25496b8b4567
 format: 2
 features: layering
 flags: 
Exporting image zp to /tmp/rbd/zp/zp_UTC20170119T092933.full
Compress mode activated
# rbd export rbd/zp /tmp/rbd/zp/zp_UTC20170119T092933.full
Exporting image: 100% complete...done.
# tar Scvfz /tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz /tmp/rbd/zp/zp_UTC20170119T092933.full
tar: Removing leading `/' from member names

如果压缩的比较松散,且文件较为稀疏,那么用户就需要等待很长时间;如果文件压缩的效果很好,那么 dd 生成的文件就可以压缩的很小。

检查备份生成的文件:

ll /tmp/rbd/zp/zp_UTC20170119T092933.full*
-rw-r--r-- 1 root root 42949672960 Jan 19 17:29 /tmp/rbd/zp/zp_UTC20170119T092933.full
-rw-r--r-- 1 root root 0 Jan 19 17:29 /tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz

2.3.2 全量备份的还原

rbd import /tmp/rbd/zp/zp_UTC20170119T092933.full zpbk

检查数据,没有问题!

2.3.3 增量备份配置

写下增量配置的文件,修改备份模式选项:

[rbd]
window size = 7
window unit = day
destination directory = /tmp/
images = zp
compress = yes
ceph config = /etc/ceph/ceph.conf
backup mode = incremental
check mode = no

进行多次增量备份后,显示如下:

[root@lab8106 ~]#ll /tmp/rbd/zpbk/
total 146452
-rw-r--r-- 1 root root 42949672960 Jan 19 18:04 zpbk@UTC20170119T100339.full
-rw-r--r-- 1 root root 66150 Jan 19 18:05 zpbk@UTC20170119T100546.diff_from_UTC20170119T100339
-rw-r--r-- 1 root root 68 Jan 19 18:05 zpbk@UTC20170119T100550.diff_from_UTC20170119T100546
-rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100606.diff_from_UTC20170119T100550
-rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100638.diff_from_UTC20170119T100606

2.3.4 增量备份的还原

分成多个步骤进行:

1、进行全量的恢复
# rbd import config@UTC20161130T170848.full dest_image
2、重新创建基础快照
# rbd snap create dest_image@UTC20161130T170848
3、还原增量的快照(多次执行)
# rbd import-diff config@UTC20161130T170929.diff_from_UTC20161130T170848 dest_image

本测试用例还原步骤如下:

rbd import zpbk@UTC20170119T100339.full zpnew
rbd snap create zpnew@UTC20170119T100339
rbd import-diff zpbk@UTC20170119T100546.diff_from_UTC20170119T100339 zpnew
rbd import-diff zpbk@UTC20170119T100550.diff_from_UTC20170119T100546 zpnew
rbd import-diff zpbk@UTC20170119T100606.diff_from_UTC20170119T100550 zpnew
rbd import-diff zpbk@UTC20170119T100638.diff_from_UTC20170119T100606 zpnew

检查数据,没有问题!

3. RBD Mirroring  

3.1 介绍

Ceph 新的 RBD-Mirror 功能支持配置两个 Ceph Cluster 之间的 RBD 同步。

3.2 原理

利用 Journal 日志进行异步备份,Ceph 自带  RBD-Mirror 功能

3.3 命令和步骤

详见:RBD-Mirror[1]

3.4 优缺点

优点:

  • Ceph 新的功能,不需要额外开发;

  • 同步的粒度比较小,为一个块设备的 transaction;

  • 保证了 Crash consistency;

  • 可配置 pool 的备份,也可单独指定 image 备份。

缺点:

  • 需要在线升级 Ceph 到 Jewel v10.2.2 以上;

  • Image Journal 日志性能影响较为严重。

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

总结

结合业内各大公司的灾备方案,以及社区相关的技术文档。 个人建议用快照的方式, 简单、便捷、风险较低、易实现。 并且国内云厂商也普遍利用快照的方式实现灾备方案,而后加上自己的策略进行包装。 RBD-Mirror 功能还是比较新,虽然官方文档也对一些措施进行了优化,但是效果不佳,期待他们下个版本的优化结果。

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

作者简介:

李航,滴滴基础平台技术专家,主要负责分布式 Ceph 系统,具有多年底层开发经验,先后在 58 同城、汽车之家、优酷土豆集团工作。在高性能 Nginx 开发和分布式缓存 redis cluster 有着丰富的经验。个人主要关注的技术领域:高性能 Nginx 开发、分布式缓存、分布式存储。

--

参考文献:

1.https: //www.jianshu.com/p/24e1412273ad? utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin

2.https: //ceph.com/dev-notes/incremental-snapshots-with-rbd/

3.https: //www.rapide.nl/blog/item/ceph_-_rbd_replication.html

4.http: //wiki.libvirt.org/page/Qemu_guest_agent

5.http: //www.zphj1987.com/2016/06/22/rbd

6.http:

//ju.outofmemory.cn/entry/243899

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

推荐阅读:

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

K8S 存储的那点事儿:3 种 Ceph RBD 灾备方案对比

在看点一下

写留言


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Web App Development

Learning Web App Development

Semmy Purewal / O'Reilly Media / 2014-3-3 / USD 29.99

Grasp the fundamentals of web application development by building a simple database-backed app from scratch, using HTML, JavaScript, and other open source tools. Through hands-on tutorials, this pract......一起来看看 《Learning Web App Development》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器