一、现有灾备技术调研

灾备是指为了防止业务系统和业务数据因各种灾难事件(自然灾害、软硬件故障、网络攻击、病毒入侵、操作失误等)的影响,导致数据丢失、业务系统服务终止,而利用技术、管理手段以及相关软硬件资源,在本地或异地进行备份,以确保机构关键数据、关键系统和关键业务能够在灾难发生后,快速利用备份,恢复正常运行,实现业务服务的可持续性。灾备不等于数据备份,灾备不仅考虑数据安全,而且考虑业务应用安全。一般包括:容灾、备份、恢复、归档、高可用等。

1. 数据备份

1.1. 传统备份

备份主要是对数据提供多副本冗余,当数据发生误操作、病毒感染和丢失等逻辑错误后,可以用备份副本进行恢复,保证数据少丢失的数据备份技术。

img

1.2. CDP

CDP(Continuous Data Protection连续数据保护)是一套方法,它可以捕获或跟踪数据的变化,并将其在生产数据之外独立存放,以确保数据可以恢复到过去的任意时间点。持续数据保护系统可以基于块、文件或应用实现,可以为恢复对象提供足够细的恢复粒度,实现几乎无限多的恢复时间点。

img

1.3. CDM

组织依赖于具有存储分层的穷举拷贝、缺陷快照和专用拷贝管理工具来对拷贝创建和维护过程进行管理。IDC 和 Gartner 将这一产品类别称之为“拷贝数据管理”(Copy Data Management, CDM)。但当前的 CDM 方法基本上都面临着存储激增、性能/可扩展性和 SLA 问题,并且其拷贝频率地限制。CDM 技(Copy Data Management )可以说是应云和数据副本管理而生的,业务对 CDM 技术的基本诉求主要体现在:不论是什么类型的数据,数据库、文件系统、虚拟机等等,都实现永远增量备份。

img

2. 复制技术

2.1. 同步复制

同步复制可以做到主/备中心磁盘阵列同步地进行数据更新,应用系统的I/O写入主磁盘阵列后(写入Cache中),主磁盘阵列将利用自身的机制(如EMC的SRDF/S)同时将写I/O写入后备磁盘阵列,后备磁盘阵列确认后,主中心磁盘阵列才返回应用的写操作完成信息。

采用同步方式,使得后备磁盘阵列中的数据总是与生产系统数据同步,因此当生产数据中心发生灾难事件时,不会造成数据丢失。为避免对生产系统性能的影响,同步方式通常在近距离范围内。

2.2. 异步复制

异步复制是在应用系统的I/O写入主磁盘阵列后(写入Cache中),主磁盘阵列立即返回给主机应用系统“写完成”信息,主机应用可以继续进行读、写I/O操作。同时,主中心磁盘阵列将利用自身的机制(如EMC的SRDF/A)将写I/O写入后备磁盘阵列,实现数据保护。

采用异步方式应用程序不必等待远程更新的完成,因此远程数据备份的性能的影响通常较小,并且备份磁盘的距离和生产磁盘间的距离理论上没有限制(可以通过IP连接来实现数据的异步复制)。

3. 高可用性系统

3.1. 冗余硬件

硬件容错方法之一是硬件冗余,在物理级可通过元件的重复而获得(如相同元件的串、并联,四倍元件等)。

另一硬件容错的方法叫待命储备冗余。该系统中共有M+1个模块,其中只有一块处于工作状态,其余M块都处于待命接替状态。一旦工作模块出了故障,立刻切换到一个待命模块,当换上的储备模块发生故障时,又切换到另一储备模块,直到资源枯竭,显然,这种系统必须具有检错和切换的装置。

混合冗余系统是堆积冗余和待命储备冗余的结合应用。当堆积冗余中有一个模块发生故障时,立刻将其切除,并代之以无故障待命模块。这种方法可达到较高的可靠性。

上述三种容错基本结构统称K出自N结构。该结构中共有N个相同的模块,其中至少有K个是正常的,系统才能正常运行。这种结构能容忍分别出现在N-K个模块中的N-K个独立的故障,或称其容忍能力是t=N-K。

对有人维修的系统,一有故障就能排除,两模块就能起到多模块的作用,因此可以构成双模冗余系统。在部件级和整机级可实现双模结构。在整机级可采用双机交替工作、双机协同工作和修理不停机等工作方式。如重要业务处室的备用机,一些服务器的双网卡并行工作,双CPU,双电源等。

3.2. 虚拟化

虚拟化技术是通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率。

img

3.2.1. 虚拟化类型

l 全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

l 使用的方法: 使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。

l 半虚拟化:需要修改操作系统

l 直通:直接使用物理硬件资源(需要支持,还不完善)

3.2.2. 虚拟化优势

① 集中化管理(远程管理、维护)

② 提高硬件利用率(物理资源利用率低-例如峰值,虚拟化解决了“空闲”容量)

③ 动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)

④ 高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)

3.2.3. 虚拟化缺点

① 前期高额费用(初期的硬件支持)

② 降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化)

③ 更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)

④ 实施配置复杂、管理复杂(管理人员运维、排障困难)

⑤ 一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)

⑥ 安全性(虚拟化技术自身的安全隐患)

4. 容灾技术

4.1. 容灾站点

4.1.1. 热站点

灾难发生后,故障转移会在几分钟或几小时内发生。日常数据同步通常发生在主站点和热站点之间,导致数据丢失最少或没有丢失。可以获取异地数据备份磁带并将其传送到热站点以帮助恢复操作。应定期测试备份磁带,以检测数据损坏、恶意代码和环境破坏。热备份站点是最昂贵的灾难恢复方法。

4.1.2. 温站点

包含部分冗余的硬件和软件,具有电信、电话和公用设施连接以继续一些但不是所有的主站点操作。故障转移会在灾难发生后的数小时或数天内发生。每天或每周的数据同步通常发生在主站点和温站点之间,从而将数据丢失降至最低。必须获取异地数据备份磁带并将其交付到温站以恢复操作。温站是成本介于“冷”和“热”之间的选择。

4.1.3. 冷站点

订购、运送和安装硬件,并加载软件。基本的电信、电话和公用事业连接可能需要时间才能继续一些但不是所有的主要站点操作。灾难发生后,搬迁会在几周或更长时间内发生,具体取决于硬件到达时间。主站点和冷站点之间不会发生数据同步,可能会导致大量数据丢失。必须获取异地数据备份磁带并将其交付到冷站点以恢复操作。冷站点是最便宜的选择。

4.2. 容灾和灾备的区别

当系统发生故障时,容灾仍然能够正常地向网络系统提供数据和服务,以使系统不致停顿。而备份技术的目的与此并不相同,备份是“将在线数据转移成离线数据的过程”,其目的在于应付系统数据中的逻辑错误和历史数据保存,当系统数据崩溃时能够恢复数据。

备份数据是为了防止系统出现操作失误或系统故障导致数据丢失,而将全系统或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。

系统备份不可以替换容灾。上述描述了备份的目的只能满足数据丢失、数据破坏时的数据恢复,而不能提供实时的业务接管功能。容灾具备实时的业务接管功能,同时远程容灾系统具备应付各种灾难,特别是区域性与毁灭性灾难的能力,具备较为完善的数据保护与灾难恢复功能,保证灾难降临时数据的完整性及业务的连续性,并在最短时间内恢复业务系统的正常运行,将损失降到最小。

系统容灾不可以替换备份。容灾系统会完整地把生产系统的任何变化复制到容灾中心去,包括不想让它复制的工作,比如不小心把系统的业务数据删除了,同时容灾中心的业务数据也会被完整删除,如果是同步容灾,那容灾中心同时就删除了,反之是异步容灾,那容灾中心在数据异步复制的间隔内就会被删除,此时就需要从备份中心中取出最新备份数据,来恢复被错误删除的信息。因此容灾中心的建设不能替代备份中心的建设。

img

4.3. 容灾难点

4.3.1. 脑裂

数据中心脑裂简单说就是两个数据中心间的网络和存储链路同时发生中断,导致两个数据中心内的应用、数据库或者操作系统同时抢占和利用共享的资源,造成资源的数据不一致,产生重大影响。此类问题是在存储跨中心双活方案设计、实施阶段不可避免要遇到的问题。

4.3.2. 性能

双活系统在写入数据时,会写两次数据,尤其是通过复制功能写到远端存储的过程,传输链路的性能也会影响整体性能。通常存储还是跨两个不同数据中心,随着距离的增加,单个存储I/O处理处于比较高性能的模式。如果加上其他因素,如:并发、数据处理等,数据延迟会成倍增加。而存储双活的初衷是只是为了高可用性和提高总体并发、吞吐量,并不是为了降低读写响应时间。

4.3.3. 数据一致性

当跨中心的写入数据时,在复制过程中,数据传递是在缓存中进行的,这样做的好处是提升了性能,问题是当出现控制器节点异常宕机事件时,就会导致缓存内的数据不能写入存储中,从而造成数据的不一致。通常可以采用物理存储加存储虚拟化网关。

4.3.4. 数据同步

存储层面的复制技术基本以存储块进行的数据复制,如数据块发生了逻辑错误,那么存储是无法检测到的,它会继续将坏的数据块儿同步到灾备端,如果因此数据库发生宕机,那么灾备端的数据库也同样无法正常启动。所以需要有多层次的防范机制, 来保障数据的可靠性和安全性,需要以备份技术、数据库复制技术,连续性数据保护,建立了完善的数据保障体系。

5. 快照和克隆技术

5.1. 快照

根据SNIA的定义,快照是指对指定数据集合(卷)的一个完全可用复制,该复制是源数据在某一个时间点的静态映像。快照一般是源数据的一个“虚拟”副本,相比于镜像,快照仅保存了数据集合某一段时间内的状态,因此,快照占用的空间较小。快照最初诞生的目的是数据保护,但随着数据重要性的增加,快照也逐渐被应用于数据分析和应用测试等场景。一般情况下,快照在数据保护场景下的主要用途可分为3类。

l 数据恢复:当数据面临恶意攻击或人为误操作时,快照可将数据快速恢复到指定的版本。

l 数据备份:存储系统自身或备份归档软件周期性对业务数据生成快照,同时定期删除较早生成的快照。

l 数据分析:在不对业务产生影响的情况下,通过对快照的读写,实现数据测试、分析和挖掘的目的。

5.2. 克隆

克隆和快照是都是数据的复制。区别之处在于,快照仅为存储系统在某一个时间点的系统状态或数据映像,而克隆则是对存储系统的完全复制。因此,克隆可独立于原始系统,具有更高效的数据恢复能力。

img

5.3. 镜像

镜像技术是指对存储数据实现副本复制,原数据和副本数据具有一致性,并支持存储系统对源数据和副本数据的独立访问。镜像是针对系统内部数据保护的一个有效技术手段,一般镜像技术主要应用于解决单个LUN请求失效引起的整个业务中断与数据丢失的情况。目前,镜像技术主要包括两种方案,分别是存储自带镜像特性和借助存储网关实现镜像特性。

6. 归档

6.1. 归档介绍

在信息系统出现之前,归档的概念就已出现,主要指把公文、资料等分类保存起来,便于查询,例如档案馆对个人档案的归档保存。到了信息时代,数据的管理发展到以存放电子信息为主,数据归档将不经常访问的数据转移到低成本的存储库。

数据归档是企业为了满足企业业务需要、遵从法律法规长期存放有价值的数据,当需要的时候能快速查询和检索的行为。根据需求的不同,数据归档的架构和功能多样,其最基本的功能要求是索引和搜索,以确保文件仍然易于访问。

6.2. 考虑因素

l 数据安全存放,保证数据完整性。

l 数据易于查询,易于读取。

l 遵从法律法规,保证数据不泄露、不被篡改。

l 低成本存放。由于数据归档是为了保证企业审计和法规遵从,平时归档数据是不被使用的,而数据本身量非常大,低成本存放是必须要考虑的因素。因此,分级存储技术、离线存储、低成本存储(如磁带、蓝光、云存储归档技术)不断涌现。

img

7. 业界灾备系统建设

7.1. 灾备系统分析

业界在灾备系统的建设上一般按照以下方式:建设机房内的本地备份系统、建设异地的备份系统。该方式可以备份系统的价格满足备份和异地容灾功能,能够避免主生产中心由于地震、火灾或其他灾害造成的数据丢失。备份系统+异地容灾系统,这是一个较为理想化的容灾系统一体化解决方案,能够在很大程度上避免各种可能的错误。

腾讯云的备端在线两地三中心灾备方案网络设计如下:

img

7.2. 容灾系统设计

备端在线容灾系统设计。当生产服务器处于正常工作状态时,把生产服务器的监控代理软件连接至服务器。当监控代理检测到主存储数据变化后,将捕获变化的数据实时的复制到备用存储上,实现了实时的复制。

img

当生产服务器故障,或者存储故障导致生产系统无法正常提供业务支持时,本地容灾服务器可直接接替生产服务器工作保障业务系统的持续运行;当本地机房发生灾难时,异地机房的容灾服务器可直接接替生产服务器工作保障业务系统的持续运行。

img

当生产系统恢复工作后,代理软件会继续其生产服务器的复制工作,并且在这之前会通过回切工具保障主备系统数据一致。

img

异地容错的容灾系统设计。如果本地机房发生故障,将异地容灾服务器中备份的数据进行手动恢复,可以直接恢复到原生产服务器(也可恢复到新服务器)。备份存储系统保存了应用系统任意时刻的数据,恢复时可恢复到任意时间点,实现容错。

img

7.3. 具体实施面临的问题

7.3.1. 分类

异地多活方案可以根据数据同步的需求分为以下三类:

l 必须同步型,比如数据库,需要实时数据同步以保证数据的一致性和完整性。

l 无须同步型,比如缓存,作为临时存储,可以容忍一定程度的数据不一致性。

l 单活型,比如对于对全局原子性要求较高的业务,如金融交易,无法接受数据同步时延带来的“不一致”窗口。

核心问题主要是:

l 数据同步:确保数据在不同机房的一致性。

l 网络时延:影响数据同步的效率和实时性。

异地多活方案的切换方式主要有两种:

l 自动切换,在灾难发生时,系统能够自动识别问题并自动切换至可用机房。

l 手动切换,通过配置,可以在几分钟或几小时内手动切换至另一机房。

7.3.2. 异地多活面临的挑战

l 切换问题,当自动切换至备用机房后,需要确保灾难机房恢复时的回切操作不会对业务造成干扰,并且要保证数据同步的完整性。这需要一个高效的数据同步机制和智能的切换策略,以确保数据不会因为回切操作而出现丢失或不一致的情况。

l 跨机房流量问题,数据在机房间同步时会产生流量,尤其在跨地域同步时,这会带来额外的成本。流量成本需要控制,跨机房流量有限且成本较高。

l 用户分区问题,为了减少跨机房流量和提高性能,需要用户分区策略将用户数据分布在不同的机房。这样做的同时,需要确保在任何一个机房发生故障时,用户仍能访问到他们的数据,并且数据的完整性得到保障。

l 业务适用性问题,随着业务数量的增加,异地多活的开发和维护成本也会随之增加。而并不是所有的业务系统都需要或适合实施异地多活方案,特别是那些对数据一致性要求极高的业务,如处理“余额”和“库存”等。

l 冷备与热备问题,热备系统能够提供即时切换和较高的数据一致性,但成本较高。冷备机房存在切换风险,长期未使用可能导致切换时出现问题,但可以降低成本。

l 数据一致性问题,在数据同步过程中,可能会出现由于网络问题、软件缺陷或操作错误导致的异常写入,这可能会引起数据不一致的问题。解决方案包括守护进程同步、客户端双写以及用户分区。

l 读取问题,为了提供更好的用户体验,需要减少读取操作的延迟解决方案包括就近读取,即将用户的读请求重定向到距离用户最近的数据中心,来减少延迟。

7.3.3. 解决方案

l 守护进程同步,通过部署守护进程来监控数据变化,并实时同步到远程机房。

l 客户端双写,在客户端层面实现数据的双写操作,即每次写入操作同时向两个机房的数据库发送,以此来保证数据的同步。

l 用户分区,通过用户分区避免数据一致性问题,但牺牲了部分双活特性。