Skip to main content

腾讯云技术复盘「数据丢失事件」,为什么业务上云还要再做云备份?

众多惨痛的云事故告诉了我们一个几乎无法规避的现实,那就是云也会宕机,也会丢失数据….
【CSDN 编者按】近两日,因腾讯云损坏了北京一家创业公司的文件系统元数据,导致后者的业务经营、甚至融资进程,都受到影响而引发了业内关于云安全的探讨。
对此,在继公开声明之后,腾讯云官方于昨晚发文进行技术复盘,对“人为/运维失误”进行了细节还原,其表示:该故障缘起于因磁盘静默错误导致的单副本数据错误,再加上数据迁移过程中的两次不规范的操作,导致云盘的三副本安全机制失效,并最终导致客户数据完整性受损。
现在很多企业的数据,都选择上云。然而,即便是国内知名云服务商,也免不了掉链子。
作为用户,该如何尽量避免这种情况呢?而此事件一出我们便颇感疑惑,难道没有备份吗?许多人说,“这事儿对云服务是灾难,关键业务和数据的备份还是要自己做,这个成本是必须付的。”
鉴于此,深圳市木浪云数据有限公司联合创始人 & CEO、多备份在线备份云服务创始人陈元强,给 CSDN 投稿来为大家详细介绍云故障的背景、云的本质以及使用云的攻略,深度剖析为什么业务上云了还要再做云备份!
以下为正文:

 背景

我们先来回顾下几起大的云故障。
2017年3月,国内某著名云平台发生大规模的安全软件缺陷,导致大批用户云主机文件被异常删除,业务中断......
2017年4月,全球知名的云平台发生大规模存储故障,导致大量全球知名业务中断。
以上是云平台自身原因引起的灾难性故障......
其实还有外部因素导致的问题:
2017年5月,全球爆发的Wannacry勒索病毒,给网络带来了未有的挑战,云平台也不能完全幸免,
2018年1月,Intel 芯片设计缺陷,给整个IT架构带来灾难性影响,云平台性能和安全受到极大的挑战。
2018年8月,Wannacry病毒再次感染爆发,直接使得台湾的知名芯片制造企业三大生产线全线停产,直接损失超过3%,达到人民币17.4亿。
实际上,除了我们看到的公有云这些严重故障外,几乎每天都能听到,发生在企业内部的私有云,因为各种原因,包含软件缺陷、人员,电力异常等导致的业务中断、数据丢失。企业正常的生产受到极大的影响,损失无法估量。
这些内部、外部因素叠加在一起,实际上带来了几乎无法规避的现实: 云也会宕机,也会丢失数据….

云的本质

在IOE(IBM, Oracle,EMC)时代,IT专家们为了最大程度规避岗位风险,通过采用业界最知名,最大牌的服务器(小型机)、存储硬件操作系统、应用软件,同时引入最大牌的备份软件来组成自己的企业级数据中心方案。如下(示意图1):
示意图1
当然这种架构维护成本相当高,一般的企业难以招架,也只有少数的大企业或有实力的机构才有能力采用。
随着各行业竞争加剧,企业需要更高效、性价比更高的IT方案,提高效率,降低成本。这时候,云计算出现了。
什么是云计算:
简单点,就是把原先分散的资源集中放在一起,需要多少,就从资源池里面提供多少。
这里资源重点指的是计算能力、存储能力、以及网络连接能力,如下(示意图2)。
示意图2
比如:
10家企业,每家原来采购花费了100万,共计1000万,每家实际平均只用了30万的,共计300万,实际资源还剩余了700万没有用到。
用了云计算以后,云计算平台企业一次性投入1000万建设公共云平台,每家实际30万,可以服务33家企业。当然好处,不止于直接的成本降低,还有运维管理效率的提升。
当然了,这几年开放架构性能每年翻倍,价格还不断降低,这花掉的1000万大部分是买的比原来小型机时代更便宜的开放架构的硬件,实际上通过集群连接技术,计算和读写数据能力丝毫不亚于小型机的能力。
可以说云计算是非常理想的去IOE方案,但也仅仅是在资源的组合利用和调度方面,这是目前云计算核心解决的问题。云计算目前相对成熟的服务,就是计算和存储。
在数据可靠性存储方面,我们再剖析看看构成云的核心要素块存储、对象存储。通常,我们用云计算,文件之类的数据一般就是存储在块存储或对象存储之上。数据库之类的数据,一般上规模云平台,底层也是基于分布式存储架构。
这几种上层存储服务底层都是以分布式存储为主要提供形式。
基本的数据读写逻辑是:
数据以分块的方式,写入到多个存储节点的底层磁盘。写入什么样的数据,存储是不会感知到的。也就是说正确的数据,被破坏的数据同样会被写入到存储底层。同时,因为各种磁盘电气特性或系统各种复杂的内存一致性策略等,写入的时候,还会有是否真的写入,或者写正确到磁盘上的区别(当然这不仅是分布式系统一家的情况,传统的存储也会类似)。
分布式存储(云存储),能否解决的问题列表:
问题
能否解决数据存储安全性
数据被人为删除或改写
不能
数据被病毒勒索加密
不能
少数节点故障,能否找回数据
异常断电
有条件情况下,能保证数据正确
上层数据被删除
不能
上层软件缺陷导致数据丢失
不能
存储软件自身缺陷,数据丢失风险
不完全能,部分能解决
灾难,导致机房整体故障
不能
如果出现上面列表,本该解决的,却不能解决,那还会有其他因素综合影响。
正因为有以上问题,云平台提供方,通常会引入一些备份机制,如快照,灾备数据中心等技术。但很遗憾的是,一般的快照最多也只能解决平台体系内的问题。系统整体风险,还需要谋求独立于平台的第三方解决方案。灾备数据中心对于一般技术水平的企业还是难于驾驭。
这些平台底层的容灾设计机制,需要完全信任依赖于厂家的承诺实现。
企业上云,目前主要分成几类:
公有云
私有云
云主机服务
虚拟化
云数据库服务
超融合云平台
容器云服务
OpenStack私有云
云存储服务
容器云
其他服务

以上所有类型,底层都离不开分布式存储技术(云存储),都会遇到几乎核心的几类风险。
综上所述,云的本质在于解决资源的充分共享和调度,其安全性需要引入外部的各类服务来保证。对于如何正确上云,需要充分理解云这把利器和与生而来的风险。

 最佳实践

对于云来说,不同的方式,或保护等级,对于的实施成本大不一样,可能差距到10倍不等。
正确选用方案,需要了解实际的业务情况。
1)对于上公有云的情况
最低保护级别的部署
单数据中心,数据库主从配置+冷备份(异地云区域)+云主机快照是最低配置。
数据库主从解决单点问题,当主节点宕机,还有从节点接管服务。
数据库冷备份解决逻辑或人为因素导致的数据丢失等风险,通常应当部署在不同的地理区域。
以上两点保障核心数据得到了基本保障。
为什么对云主机还要启用快照?上面不就是一些程序或配置么?很简单,时间就是损失,恢复时间越长,企业承担的损失越大。通常,从你copy程序和修改配置,到部署、验证、需要的时间绝对是恢复快照的10倍以上。
当然,如果备份机制能独立于平台,那将是更好的方案。百度上搜索,会有不少云备份的方案可供选择。
对于可靠性要求高的应用
通常采用主数据中心与副数据中心结合的结构。这种结构,没有技术力量的团队,建议还是慎用,真正能跑起来,难度大。最大的挑战,需要解决多个数据中心数据一致性问题。对于这种方案,通常建议采用主从方案,同时工作的方案,会导致系统设计复杂度异常高。
数据中心通常采用支持多线BGP机房,解决南北互通,和不同运营商之间互通问题。
主从之间数据复制可以采用云平台自身提供的一些方案或者利用第三方的数据复制软件,完成核心数据在两个数据中心(区域)复制。
2)对于私有云部署:
部署私有云的企业,通常是有一定的IT维护管理力量,同时也是特别注重数据安全的。这种情况,通常有如下组合。
①私有云本地数据保护
对于通常的企业的IT数据中心,推荐采用私有云加上一套备份系统。
这里的私有云包含虚拟化数据中心、超融合数据中心、OpenStack等系列数据中心等。客观上存在分布式(云)存储不能规避的风险,需要最低搭配一套备份系统。请注意恢复时间对业务影响代价。如果一定要采用手动方式备份,请确保恢复时间是企业可以承受的代价。
根据重要程度,配置的备份系统有不同的指标要求。
业务类型
指标要求
在线服务
丢失数据尽可能少,恢复时间短,在分钟级
支撑系统
恢复时间在小时级
资料系统
恢复时间在几小时级
归档系统
恢复时间在天等
同时,为了考虑系统的整体云平台备份支持能力,系统的灵活扩展能力和数据重删能力,也是一个重点考察指标。目前国内外有一些产品便专门针对云和虚拟化平台设计,以实现更好的云保护管理能力。
②私有云异地灾备和容灾
对于保护等级要求较高的情况,两套私有云平台 + 备份系统,形成热灾备接管 + 数据和应用容灾恢复架构。私有云两地容灾架构,通常要求专线,带宽要能保障,目前的带宽还是比较贵,需要提前核算好相关的费用成本。
典型的实施方案如下。
实施方案一:
两套私有云之间,通过云平台厂商提供的存储复制技术,完成两地数据复制和同步。同时,系统需要引入一套备份系统。部署在主或从数据中心。两种部署方法,看具体情况选择。一般为了降低对主数据中心影响,通常应当部署在从数据中心。
这种架构需要云平台支持,成本投入大,数据管理粒度相对粗,一般针对整个存储系统实施,缺少各种粒度和优先级控制。
实施方案二:
两套系统之间,通过第三方完成数据备份和异地复制,形成灾备架构
两套私有云之间,通过第三方云平台备份与复制厂商,提供的数据备份与复制技术,完成两地数据备份、复制和同步。这种方案特点是管理灵活,可以细化到一个云主机系统。在备份的同时,也同时在做复制容灾。一般在从数据中心,不需要部署和主中心一样的配置,可以低于主中心。
这两种方案达到的效果如下:
问题
能否解决
如何解决
数据被人为删除或改写
备份系统
数据被病毒勒索加密
备份系统
少数节点故障,能否找回数据
分布式存储系统
异常断电
有条件情况下,能保证数据正确
备份系统和存储系统联合
上层数据被删除
备份系统
上层软件缺陷导致数据丢失
备份系统
存储软件自身缺陷,数据丢失风险
备份系统
灾难,导致机房整体故障
两地容灾机制
是否能及时恢复业务
备份系统和容灾机制结合
简言之,数据安全无小事,无论是在云计算时代还是在传统IT的时代,数据保护都非常重要。当然,在云计算快速发展的时代,数据保护产品和方案一定要与云环境完全融合,这已是势在必行。
作者介绍:陈元强,现任深圳市木浪云数据有限公司联合创始人 & CEO,多备份在线备份云服务创始人。超过18年信息安全、分布式系统与海量业务架构设计等经历,曾就职于腾讯、盛大、宜搜、永达,并担任大数据、搜索、移动、信息安全等业务线总监岗位。曾发起创立腾讯第1套具有核心专利技术百亿级实时大数据平台,更早曾在深圳永达负责国家级863项目复杂网络信息安全管理平台,防DDOS系统研发等。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...