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 灾备方案对比

在看点一下

写留言


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

查看所有标签

猜你喜欢:

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

The Algorithmic Beauty of Plants

The Algorithmic Beauty of Plants

Przemyslaw Prusinkiewicz、Aristid Lindenmayer / Springer / 1996-4-18 / USD 99.00

Now available in an affordable softcover edition, this classic in Springer's acclaimed Virtual Laboratory series is the first comprehensive account of the computer simulation of plant development. 150......一起来看看 《The Algorithmic Beauty of Plants》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具