一、前言
随着云计算、大数据和移动互联网技术的迅猛发展,数据已成为企业核心资产。确保数据的安全性和可靠性成为企业关注的重点问题。对象存储技术以其高可用性、良好的扩展性和成本效益,逐渐成为企业数据存储的首选。然而,面对硬件故障、自然灾害等潜在风险,对象存储的数据安全面临挑战。
为此,对象存储多中心多活容灾技术得以发展,特别是异地多活容灾解决方案。它通过在不同地理位置搭建多个独立的数据中心,确保每个中心都能就近实时处理业务流量,一旦某个数据中心出现故障,其他中心能够立即接管,从而保障业务的无缝连续和数据完整。
二、对象存储的桶复制技术
1、增量异步复制
增量异步复制是多中心对象存储桶同步的一种方式,它按照预设的时间间隔执行数据同步操作。在此模式下,目标系统会根据自上一同步周期以来的所有数据变更进行更新。具体到数据传输,异步复制涉及从数据中心A的存储系统定期向数据中心B的存储系统发送数据。数据以对象或分片对象的形式,按照周期性扫描进行传输,这样做有助于减轻网络和存储资源的压力。然而,这种传输方式会在多数据中心间引入数据同步的时间差,即复制延迟,在遭遇故障的情况下,故障转移是指从主系统切换到辅助系统的过程。由于异步复制固有的延迟,故障转移可能会导致一定程度的数据无法同步,需要等故障恢复后,才能同步部分无法同步的数据。
增量异步复制方法如图1所示,业务数据通过数据中心A的网关访问存储桶,所有数据变更都会记录在缓存Change Log中,这成为增量数据同步的依据。后台网关按顺序处理Change Log,捕获数据的变化。利用对象元数据的mtime信息来判断对端数据是否需要更新,一旦满足复制条件,便执行跨站点数据复制。对于增量异步复制,其扫描周期可配置为5秒至60秒。跨站点网络的延迟对复制过程有一定影响,尤其是网络延迟较高时,可能会影响大量小对象的复制效率。
图1 增量异步复制流程
2、同步复制
同步复制确保数据更改实时反映在主存储系统上,并立即同步到辅助存储系统,以保持两个系统数据副本的实时更新。这种机制涉及从主存储系统到辅助存储系统的实时数据传输,通常以小数据块形式进行,以减少对网络和存储资源的影响。由于需要保证辅助系统数据的实时更新,复制延迟极低,通常仅为毫秒级别。
同步复制基于跨站点多中心存储桶的构建,每个数据中心存储两个数据副本,总共维护四个副本。在扩展存储池中,所有读写操作均通过主OSD进行。数据写入主OSD后,由主OSD负责将数据复制到其他副本。只有当所有副本写入完成后,写操作才被视为完成,从而确保数据的强一致性。在同步复制方案中,主OSD配置在主数据中心,以优化读取性能。为了实现同步复制,数据中心间的网络延迟(包括平台网络、访问网络和复制网络)需小于5毫秒,同时,跨站点网络的带宽至少应为业务带宽的四倍,当业务都是大文件时,由于不需要缓存池进行加速,跨站点带宽会降低一倍。
图2 同步复制
三、对象存储容灾技术
容灾是指当发生灾难导致数据损坏时,计算机信息系统可以提供一种恢复原始数据的解决方案,该方案能保证数据生成中心在遭遇不同灾难后,系统仍然能够尽最大限速保证业务连续性。按照距离分:本地容灾、异地容灾。
双活(Active-Active)架构指的是在存储集群中,所有节点均处于活跃状态,共同承担读写请求的请求,数据在节点间实时同步,保持一致性。双活架构的优点在于提升了读写性能,实现了负载均衡,并且在节点故障时,其他节点仍能提供服务。
1、同城多活模式
同城双活数据中心要求物理距离≤100KM,时延≤5ms,同城多中心数据同步采用同步复制策略,采用四副本的容错机制,并利用扩展池的多副本强一致写入特性来保障数据一致性,为了解决数据一致性和冲突问题,引入了仲裁服务。因此,同城多活模式对网络带宽、网络时延以及运维能力都提出了较高的要求。
图3 同城多活架构图
2、异地多活模式
在分布式对象存储系统中,通过采用多副本或纠删码模式,确保了数据的高可用性,有效抵御了磁盘故障或存储节点异常带来的影响。然而,面对地震、洪水等自然灾害,同一城市内的所有机房可能会遭受同时损害,导致服务中断。鉴于灾害的严重性,系统的恢复周期可能会大幅延长,这将对存储服务的连续运行造成严重影响。因此,构建异地容灾能力显得尤为关键,它能够在集群出现异常时迅速进行服务切换,从而保障业务的无缝连续和稳定性。
3、架构设计
异地多活架构中,各个数据中心分布在不同的物理位置,对于任何一个数据中心的存储桶,统一命名空间确保了在其他数据中心也有一份完整的数据副本。在正常运营状态下,业务数据的读取请求通过数据分发网络,就近从各个地域的存储网关获取数据。存储网关则从同地域的对象存储系统中读取数据,经过业务逻辑处理后再返回给内容分发网络,并最终展示给客户端。在此过程中,统一命名空间下的多个数据中心均处于可服务状态。一旦某个地域发生异常,数据分发网络可以迅速切换,将流量调度至其他正常运作的数据中心,从而确保服务的高可用性。
4、容灾备份方案
存储容灾规划的三大核心要素——冗余、距离和全量备份,共同构筑了一个坚不可摧的数据保护框架,保障了在各类灾难情境下数据和服务的持续可用性。
在选择异地容灾备份地点时,应确保与现有存储地点的距离超过300公里,并且最好不在同一江河流域、同一电网、同一地震带内。因此,同城双活架构下的同步复制策略并不适用于异地多活模式。由于异地灾备主备数据中心的物理距离较远且网络带宽较低,采用统一命名空间成为保持多个数据中心资源一致性的有效手段。
统一命名空间采用增量异步复制策略,由多个分布式数据中心集群构成。每个数据中心作为一个独立的命名空间,拥有独立的数据和元数据集群。通过统一命名空间功能,可以将所有集群整合起来进行统一管理,并定义同步策略以确立多数据中心间的复制关系,存储桶则根据不同的同步策略进行应用。
在统一命名空间中,任何集群内创建或修改的对象、用户和存储桶资源都将同步到其他所有站点,以保持配置的一致性。这包括用户名、用户基本信息、启用/禁用状态、权限策略、密钥信息、配额策略、QoS策略等用户配置,以及存储桶名、多版本配置、保护模式、权限策略、加密配置、压缩配置、跨域访问配置、配额策略、QoS策略、回收站策略等存储桶配置。基于统一命名空间的异步复制策略允许用户和桶资源在任意站点创建,并异步同步至统一命名空间下的其他数据中心。若同步失败,将记录日志,并在外部站点恢复后重新尝试同步。
图4 统一命名空间资源同步
5、读写方案
对象存储异地多活并不像其他数据库可以做到多写多读,其读写方案如下图5所示,异地三中心组成一个统一命名空间,其中数据中1心承担所有的写请求,同时和其他两个数据中心共同承担就近读请求,同时数据中心1开启了增量复制到其他两个集群的功能,写入数据或者修改时候的时候只写入数据中心1,利用桶复制技术将数据同步到统一命名空间的其他两个集群中,这样统一命名空间内的各个集群都有全量的数据。读取数据时候,可以根据业务所在地域就近获取对象数据,有效的降低读取数据的时延开销。
图5 读写架构
其中统一命名空间模式是增量异步复制,因此极大可能存在数据刚写到数据中心1中,业务就通过就近访问模式从数据中心2中读取数据,由于地域距离较远,增量异步复制策略导致数据还没来得及复制到数据中心2中,导致读取失败。这个时候就需要开启代理读模式。在配置代理读后,当数据中心2没有数据时,会触发代理读流程,网关服务会根据代理读配置跨站点获取数据,并返回业务请求。代理读流程会增加读取的时延,但整个过程对业务透明,业务无需进行适配。
6、容灾切换
如果数据集群1发生故障,导致无法写操作以及就近的读操作,DNS经过探活后发现集群1故障,主备模式切换到集群3,将集群3设置为统一写请求入口。同时把读请求分散到集群2与集群3上。为了保持统一写请求切换的时候,尽可能的快捷与方便,已经预先开启了三个集群的相互增量复制与代理读功能。异地三中心多活模式就降级成异地双中心多活模式。
如果数据集群1恢复,则首先同步因故障还没来得及同步的数据,其次恢复就近读请求,数据集群1降级成读请求集群,集群3升级成统一写请求与就近读取集群。
图6 数据中心1故障切换
如果是集群3发生故障,如图7所示,只影响就近的读操作,通过DNS探活后把流量切换到数据集群1和数据集群2,由于对象存储读写都有重试机制,DNS秒级别的探活与切换不会影响业务。如果集群恢复后,业务流量回切,流量在三中心之间均衡。
图7 数据中心3故障切换
四、总结
本文探讨了对象存储的多中心多活架构设计,旨在确保数据安全性和业务连续性。首先介绍了增量异步复制和同步复制两种数据同步方式,并分析了同城多活和异地多活两种容灾模式。其中,同城多活是基于同步复制,对网络质量和运维能力都有较高的要求。异地多活模式采用增量异步复制策略,通过不同地域的三个数据中心协同工作,实现数据的高可用性和异地容灾切换。以上是我们对对象存储多中心多活的方案设计,为构建可靠的对象存储系统提供了参考。