简介
腾讯云对象存储 COS 为客户提供了99.95%的可用性和99.999999999%的可靠性。然而,由于自然灾害、光纤故障等诸多不可控因素的存在,云上数据的可用性和可靠性均无法达到100%,同时,部分行业由于业务的特殊性,例如金融行业,需要保证业务高可用和高可靠性。
为了实现企业业务的连续性和稳定性,满足企业对高可用和高可靠性的需求,腾讯云对象存储提供了基于存储桶复制功能的数据容灾高可用方案。我们建议企业用云时,根据业务需要对云上数据进行容灾、备份,保障业务持续稳定运行。
本文主要介绍两个方面,首先介绍一种基于存储桶复制的云上业务主备切换的容灾方案,另一方面进一步介绍一种基于存储桶复制的高可用方案,通过存储桶复制、回源和 SCF、CDN 等多种产品和功能实现业务高可用。
基于存储桶复制的容灾备份方案
容灾需要满足三个要素:冗余(Redundance)、远距离(Remote)和数据全备份(Replication)。
冗余:即数据冗余,要求数据需要同时备份到另一个可用系统中。
远距离:指的是备份数据存储在相隔较远的另一个地域,因为灾害往往具有地理上的连续性,只有充分长的距离才能保障冗余数据的可用。
数据全备份:指的是备份数据零丢失。
COS 的存储桶复制功能可以实现增量数据的跨地域同步,用户上传的数据,根据其文件大小和地域距离远近,可以在几秒到几十分钟内拷贝到另一地域的存储桶中。基于存储桶复制,可以实现数据的异地冗余备份,从而实现业务容灾。有关存储桶复制的介绍,可参见 存储桶复制概述。开启存储桶复制需要先开启版本控制功能,有关版本控制的介绍可参见 版本控制概述。 在这一架构下,客户的存储桶 A 和存储桶 B 互为主备。假设企业客户的数据存储在存储桶 A 上,另一地域的存储桶 B 是备用存储桶。该企业为了保障业务连续性和稳定性,为存储桶 A 和存储桶 B 分别配置了存储桶复制规则。在存储桶复制规则生效的情况下,存储桶 A 的增量数据会自动复制到存储桶 B 中,存储桶 B 的增量数据同样会自动复制到存储桶 A 中。
注意
存储桶 A 中的增量数据复制到存储桶 B 后,虽然是存储桶 B 中的增量数据,但不会再被复制到存储桶 A 中。
正常情况下,企业的主读写请求链路均指向存储桶 A,所有增量数据将被自动增量同步复制到存储桶 B 中作为备份数据。客户侧可以在上传或者下载程序中加入网络质量检测的模块,在检测到主存储桶 A 宕机时,迅速将读写请求链路切换到备存储桶 B 中。
注意
网络质量检测可以基于腾讯云云函数 SCF 实现,通过对云函数代码进行修改,将拨测地址修改为主备存储桶的域名,同时根据业务需求将告警代码片段修改为其他业务所需的措施。
基于存储桶复制的高可用方案
上文介绍了一种基于存储桶复制的容灾备份方案,该方案能够利用云上已有产品和功能实现数据备份和容灾切换的工作。但真实业务运行状态可能复杂多样,上述的容灾备份方案未必能保障业务的高可用。因此,本小节提出一种基于存储桶复制的高可用方案,通过存储桶复制、回源和 SCF、CDN 等多种产品和功能实现业务高可用。
这一架构主要分为以下几个层次:
高可用层:集成网络检测和业务调度,根据链路的连通率等指标进行链路切换,用户可以根据 SCF 实现(可参照上一小节介绍),也可以根据业务需求在客户端自行实现。
存储层:一般情况下由 COS 不同地域的存储桶组成;用户也可以通过 设置回源策略,引入自有源站或者其他云厂商上的存储桶,进一步保障数据的一致性。 CDN 层:通过腾讯云 CDN 海量边缘节点提供就近访问的功能,可以避免用户直接访问源站数据,保证源站数据安全。
这一架构保障业务高可用的方式阐述如下:
1. 正常情况下,企业的主写请求链路均指向存储桶 A,所有增量数据将被自动同步复制到存储桶 B 中作为备份数据。
2. 当主存储桶 A 的链路不通时(例如拨测质量下降或者检测到上传失败),则客户端可以将写请求链路切换至主存储桶 B,此时所有增量数据同样将被自动同步复制到存储桶 A 中。
3. 客户还可以选择在自有源站或者其他云厂商上先备份一份冗余数据,同时给存储桶 B 配置回源策略。假设在极端情况下,主存储桶 A 和 B 链路都同时无法连通,那么在上传数据到存储桶 B 失败的情况下,存储桶 B 可以从源站拉取数据。
注意
全量冗余备份数据成本较高,客户也可以选择只冗余备份热数据(例如仅数小时内上传的文件),以减少数据存储成本。
如果您选择了源站作为高可用架构中的一部分,那么您在设计该架构时请注意评估源站带宽以及其限制可能带来的影响。
4. 从存储桶读取数据可以通过直接访问存储桶实现,也可以为存储桶 绑定 CDN 加速域名,通过腾讯云 CDN 边缘节点为客户提供就近访问的能力。如果您的业务数据涉及到内容分发场景,或者不希望您的用户直接访问到您的存储桶,我们推荐您搭配使用 腾讯云 CDN。 说明
如果您直接从存储桶中读取数据,那么需要客户端支持 follow HTTP 302。
腾讯云 CDN 提供近千个边缘节点,能够为用户提供邻近的访问节点,提高读取速率。您可以为 CDN 绑定多个源站互为主备,保障高可用,可参见 源站配置 进行配置。 如果您希望尽可能保障源站安全,设置源站私有读写并开启 CDN 回源鉴权,能够让您的用户能匿名访问缓存在 CDN 边缘节点上的数据,同时保障源站数据安全。
参考文档
以下文档可能为您实现容灾高可用架构提供帮助:
本页内容是否解决了您的问题?