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

*

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

rbd export-diff

*

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

rbd import-diff

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

工程师们可以将差异数据文件 copy 到 Cluster B 上,然后通过命令 rbd import-diff 导入。通过该操作,在 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 灾备方案对比》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

软件构架实践

软件构架实践

林·马斯 / 车立红 / 清华大学出版社 / 2012-6 / 49.00元

软件构架实践(第2版),ISBN:9787302080428,作者:(美)林·巴斯(Len Bass),(美)保罗·克莱门茨(Paul Clements),(美)瑞克·凯兹曼(Rick Kazman)著;车立红译;车立红译一起来看看 《软件构架实践》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具