DRS 数据复制服务实战:用 OBS 跨区复制构建对象存储容灾
# DRS 数据复制服务实战:用 OBS 跨区复制构建对象存储容灾 对象存储 OBS 的桶级高可用通常靠多 AZ 冗余就能满足,但一旦故障域扩大到一个 Region,本地再高的冗余也无济于事。华为云 DRS(Data Replication Service,数据复制服务)提供了跨 Region 的桶级复制能力,配合 OBS 跨区域复制策略,可以低成本地给对象存储加一道异地容灾保险。本文记录一次 DRS 跨区复制配置的完整过程,以及几个容易踩的坑。 ## 为什么选择 DRS + OBS 复制 异地容灾的核心诉求是:主 Region 不可用时,副本 Region 的数据尽量完整、切换尽量快。常见方案有三类: 1. **客户端双写**:业务侧同时写两个 Region。优点是控制力强,缺点是侵入业务代码,一致性需要应用自己保证,改造成本高。 2. **OBS 原生跨区域复制**:OBS 本身支持桶间复制,对存量对象和新写入对象都能复制,配置最简单。 3. **DRS 数据复制**:DRS 提供异步/实时复制链路,支持跨 Region、跨账号,适合把 OBS 与 OBS、OBS 与云硬盘等异构源之间的数据搬移和持续同步统一管理。 对于"OBS → OBS"这种最常见的对象到对象场景,我的实践是:日常用 OBS 跨区域复制做增量实时同步,用 DRS 做初始存量迁移和周期性校验。两者分工,而不是二选一。 ## 环境准备 - 源桶:obs-src,位于华北-北京四,存储类别为标准存储。 - 目标桶:obs-dst,位于华东-上海一,开启版本控制(强烈建议,避免复制覆盖后无法回滚)。 - 两端账号同属一个 IAM 体系;若跨账号,需要在目标侧为 DRS 服务账号授予桶读写权限。 创建复制策略前,先确认源桶已开启版本控制——这一点下文会再强调,因为它是排查问题时的关键变量。 ## 配置步骤 ### 1. 存量迁移(DRS) 在 DRS 控制台创建迁移任务: - 源端类型:OBS,选择源桶与前置目录(本次全桶,前缀留空)。 - 目标端类型:OBS,选择目标桶。 - 任务类型:全量 + 增量。全量阶段 DRS 会按对象大小分片并发传输,本次约 12 万对象、300 GB,全量耗时约 4 小时。 - 增量阶段 DRS 基于对象更新时间做拉取,与后续 OBS 复制策略衔接。 ### 2. 增量同步(OBS 跨区域复制) 存量完成后,在源桶开启跨区域复制: - 复制目标:obs-dst(华东-上海一)。 - 复制范围:新增对象 + 历史版本;删除标记建议同步,保证两端列表一致。 - 加密与元数据:保留源对象加密方式,ACL 默认跟随桶策略。 开启后新写入的对象通常在分钟级出现在目标桶,延迟受对象大小和网络影响,小对象一般 1~3 分钟。 ### 3. 校验 用 OBS 的清单功能对两端各导出一份对象清单(对象 Key、ETag、大小、最后修改时间),离线 diff。重点核对: - 对象总数是否一致; - ETag 不一致的对象(分片上传对象 ETag 不是简单 MD5,需按分片规则解读,或改比对大小+修改时间); - 目标桶中多出/缺失的对象。 本次校验 12 万对象,diff 出 37 个大小不一致,均为写入过程中被并发覆盖的对象,重新触发复制后一致。 ## 踩坑记录 **坑一:目标桶未开版本控制导致覆盖。** 早期测试时目标桶未开版本控制,一次误操作的批量删除复制过去后,目标端对象直接消失且无法恢复。容灾桶必须开版本控制,并把 MFA 删除保护一并打开。 **坑二:复制策略对已存在对象默认不覆盖。** 跨区域复制的语义是"只复制新对象",如果目标桶已存在同 Key 对象,默认不覆盖。变更复制策略后想刷新存量,需要先清理目标端旧对象,或用 DRS 跑一次定向全量。 **坑三:跨账号场景的权限顺序。** 跨账号复制要同时满足:目标桶策略允许源账号写入 + 目标侧 RAM 角色信任源账号 + DRS 任务使用正确的凭据。三者缺一,任务会在鉴权阶段反复重试,日志里表现为持续的 403,很容易误判为网络问题。 **坑四:删除标记复制的"伪删除"。** 同步删除标记后,目标桶会保留已删除对象的版本,存储量会比源桶略高。需要配合生命周期规则对非当前版本做过期清理,否则副本桶成本会持续上涨。 ## 故障切换怎么做 容灾切换不是自动的,需要演练过的 runbook: 1. 确认主 Region OBS 不可用(控制台 + 客户端探测双重确认)。 2. 业务配置切到目标桶 Endpoint(建议用 CNAME + 配置中心,秒级生效)。 3. 目标桶开启版本控制下的"恢复"或直接将写流量指向副本;切回时同样走 DRS 反向链路把增量追平。 4. 切换后 24 小时内用清单 diff 做一次完整性复核。 建议每季度演练一次切换(哪怕只切只读流量),容灾体系的真正价值来自演练,而不是配置。 ## 小结 - OBS 跨区域复制负责"增量、实时、自动",DRS 负责"存量、批量、异构",组合使用比单用任一方案都稳。 - 版本控制、MFA 删除保护、生命周期清理是容灾桶的三件套,缺一个都可能在真实故障时放大损失。 - 复制是"最终一致",业务侧要接受分钟级的复制窗口;强一致需求仍应由多活架构解决。 以上配置基于华北-北京四到华东-上海一的实际操作整理,对象规模 12 万、约 300 GB,可作为类似规模容灾方案的参考。
- 点赞
- 收藏
- 关注作者
评论(0)