对象存储手把手教二 —— Bucket 跨区域容灾和用户数据复制
作者:QingStor 攻城狮 曾胜茂
本次,我们继续为大家带来 “对象存储手把手教”系列的专题文章!本系列将介绍对象存储的实用功能,解决实际生产场景下的业务需求。同时,将会以 QingStor 对象存储为演示平台,介绍各类业务下的具体配置方法。关注我们,谨防错过!
上一期,我们为大家讲解了用户数据访问控制管理 ACL 的内容,不知大家吸收了几成呢?今天,我们将要讲解的内容是:Bucket 跨区域容灾和用户数据复制。那么现在,就让我们正式开始“对象存储手把手教”第 2 期的分享吧!
上期内容:对象存储手把手教 1 ——用户数据访问控制管理 ACL
在 QingStor 对象存储中,我们也拥有 Repliaction 功能。那什么是 Repliaction 呢?应该怎么使用该功能呢?接下来由我来给大家介绍 QingStor 对象存储中的 Repliaction 功能。
1.什么是 Repliaction?
在 QingStor 对象存储中,Repliaction 也称之为 Bucket 跨区域复制(Bucket Cross-Region Replication)。
Bucket 跨区域复制允许用户开启跨不同的 QingStor 对象存储区域(数据中心)的 Bucket 自动、异步的复制 Object。它将会把源 Bucket 中的 Object 的改动(新建、更新、删除等)同步到目标 Bucket。
2. 为什么需要这个功能?
跨区域复制功能能够很好的提供 Bucket 跨区容灾或满足用户数据复制的需求。可以说目标 Bucket 中的 Object 是源 Bucket 中 Object 的精确副本。它们具有相同的对象名、元数据以及数据实体,比如创建时间、所有者、用户自定义的元数据等。
所以当你有需要 Bucket 跨区容灾或满足数据复制的需求时,你会需要 Bucket 跨区域复制功能。
3. Replication 使用有什么限制?
QingStor 对象存储 Bucket 跨区域复制功能主要有以下限制:
① 配置跨区域复制规则的用户必须是源 Bucket 和目标 Bucket 的所有者。
② 开启跨区域复制的两个 Bucket(源和目标)必须位于不同的可用区。
③ 跨区域复制不会复制 Bucket 级别的子资源,比如 ACL、Policy、Lifecycle、Notification 等。
4. Replication 的使用场景
跨区域复制功能满足 Bucket 跨区域容灾或用户数据复制的需求。你可以通过配置跨区域复制规则实现以下场景需求。
合规性要求
虽然 QingStor 对象存储默认对每个 Object 在不同的物理机上存储多份副本,但合规性要求可能规定数据需要在更大的距离保存一份数据副本。跨区域复制允许你在不同的 QingStor 数据中心之间复制数据来满足这些要求。
最小化延迟
如果你的客户位于不同的地理位置, 那么你可以通过在更接近用户的地理位置的 QingStor 对象存储区域中维护对象副本来最小化访问延迟。
提高操作效率
如果你在两个不同的 QingStor 对象存储区域中的计算集群需要分析同一组对象, 那么你可以选择在这些区域中维护对象副本。
数据备份与容灾
大家对数据的安全性和可用性有更高的要求, 对所有写入的数据, 都希望在另一个数据中心显式地保留一份副本, 以备发生特大灾难, 如地震、海啸等导致一个 QingStor 对象存储数据中心损毁时,还能启用另一个 QingStor 对象存储数据中心的备份数据。
5. Replication 的基础原理
介绍完什么是 Bucket 跨区域复制、Bucket 跨区域复制有什么限制后。接下来我们来聊聊 Bucket 跨区域复制的基础原理。
当用户对 Object 有改动时,Object 改动的请求首先会到 nginx 上,nginx 会将请求转发到 qs_gateway,随后 qs_gateway 将 Object 的改动更新到存储集群,同时创建 Object 的索引到 qs_index,qs_index 根据复制规则生成 event 到本地的 kafka 上。然后 qs_dispatcher 会来消费本地生成的 event,异步执行复制操作,将请求发送到目标 Bucket 的 nginx 服务上,nginx 将请求转发到 qs_gateway 上。qs_gateway 将 Object 的改动更新到 qs_index 与存储集群中。这样就完成了一次跨区域复制的操作。
可能我说了一大段,不是很形象。那么结合下面的流程图,会让你更快的了解到 Replication 的基础原理。
6. 如何为 Bucket 设置 Replication
6.1 介绍复制规则各配置项含义
在使用跨区域复制之前,我们先来了解一下复制规则中的各配置项的含义。
源 Bucket、目标 Bucket
指定跨区域复制的源 Bucket 与目标 Bucket。
复制范围
提供两个方案,一是将源 Bucket 中的所有文件复制到目标 Bucket,也就是对应“所有对象”;二是将设置前缀为 “XXX” 的文件复制到目标 Bucket,也就是对应“指定前缀对象”。
存储级别
文件复制到目标 Bucket 中所使用的存储级别。
同步删除操作
在源 Bucket 删除文件时,目标 Bucket 文件也会被删除,默认为“否”。开启后请谨慎操作,防止将文件删除后无法恢复。
同步历史数据
开启后会将在跨区域复制功能开启前就存在的文件也复制到目标 Bucket 上,默认为“否”。
6.2 通过青云控制台设置
介绍完复制规则中配置项含义,接下来我们就通过青云控制台来感受一下 QingStor 对象存储 Bucket 跨区域复制功能。
首先,我们模拟一个场景。某保险公司需要存储公司的保险订单等数据,由于保险订单数据属于公司重要数据,所以该保险公司不仅需要满足合规性要求,还需要能够满足数据备份与异地容灾。清楚了客户的需求,接下来我们就通过 Bucket 的跨区域复制来满足此需求。
登录到公有云控制台(https://console.qingcloud.com/)。
在上海 1 区、广东 2 区、北京 3 区创建 Bucket。
假设以上海 1 区的 “test-sh1-replication” 为源 Bucket,进入 Bucket 跨区域复制设置界面。
用户希望利用广东 2 区的 Bucket “test-gd2-replication”,来满足数据备份与异地灾备,并且能够降低存储成本。那么用户可以将目标 Bucket 设置为广东 2 区的 Bucket “test-gd2-replication”,复制范围设置为所有对象,存储级别设置为低频存储,关闭同步删除,防止源 Bucket 误操作删除数据。
用户希望利用北京 3 区的 Bucket “test-pek3-replication”,来满足合规性要求。该 Bucket 中只存放以 “test” 为前缀的文件(假设以 “test” 为前缀的文件为保险订单,其余为其他文件),并保证该 Bucket 中文件与源 Bucket 中保险订单保持一致。那么用户可以将目标 Bucket 设置为北京 3 区的 Bucket “test-pek3-replication”,复制范围设置为指定前缀对象并设置对象前缀,然后开启同步删除操作。
复制规则设置好之后,来进行一下测试。首先是在源 Bucket 上传名为 “test1.txt” 的文件和一个文件名前缀不为 “test” 的文件。
根据复制规则,Bucket “test-gd2-replication” 上将存在所有文件,并转为了低频存储。
根据复制规则,Bucket “test-pek3-replication” 上将只存在前缀为 ”test“ 的文件。
然后在源 Bucket 上删除掉文件 “test1.txt”。
根据复制规则,Bucket “test-pek3-replication” 上的文件被同步删除。
根据复制规则,Bucket “test-gd2-replication” 上的文件存在。
通过上述操作,能够看到 Bucket “test-gd2-replication” 实现了数据备份与异地灾备需求,同时 Bucket “test-pek3-replication” 满足了合规性要求。由此能够看出满足了该保险公司的需求。
我们通过以上实践验证了 Bucket 跨区域复制功能。可以说操作便捷,相信你也已经很清楚的知道了怎么使用 Bucket 跨区域复制来满足需求了。
7. 结尾
通过阅读本篇文章,相信你已经知道了 QingStor 对象存储的 Repliaction 功能是什么、该功能的使用场景、实现原理以及如何设置使用该功能。如果你有 Bucket 跨区域容灾或用户数据复制的需求,那么 QingStor 对象存储将是你的不二之选。
更多文章:
版权声明: 本文为 InfoQ 作者【QingStor分布式存储】的原创文章。
原文链接:【http://xie.infoq.cn/article/52a001525ad17c0fa97b7df16】。文章转载请联系作者。
评论