最近一段时间, 接二连三出现安全和运维事故, 先是支付宝服务因线路被挖,局部服务中断; 接着是携程整站被删,给企业带来了巨大的损失,到目前为止,携程用了10多个小时全部恢复过来。其间,各种消息满天飞,有在讨论为何没有备份,有在讨论双活为何没生效,有在讨论系统被黑,有在讨论内部员工干的,也有说是出打bug了,发布的东西立即被删,最后被官方确定为员工误操作引起等。历史以来的事故背后,总会有一连串的故事, 但归根结底,还是那些烂熟于胸的分类:硬件故障,人为破坏,误操作,软件设计缺陷等。我还是引用微信上说的话,安全是细活,但做得再细,再强大的团队也是无法规避问题的出现。但,如何规避呢?
其实,万变不离其中,任何复杂的问题,无论是内是外,是因漏洞被入侵还是流程机制缺陷,是硬件还是软件,除了必备的基本防御和安全控制流程外,最后到数据保护这里,都可以简单化处理,做好最简单,最容易实施的事情:做好有效备份措施,守好安全最后一道防线!只是,这个最后一道防线,不是一般的企业能真正落实做好的 ,不少企业的负责人和中高层执行团队的意识上其实还没跟上来,所以才导致小概率事情发生。一般来说,对业务的保护,要有防线层次,实施分级的策略来实施 ,我们来仔细看看。
手动实施,基础入门措施,没做的,赶紧做起来
在线类业务/核心业务,特别对于依赖互联网渠道销售的企业来说,是企业重中之中,应当作为第1优先级来保护。首当其冲,是对其核心数据库进行主从部署,如果有银子,另外这些节点应当都具备一定的节点容错能力,也就是说Raid这些技术上去。但主从的问题,实际上,不少企业没有做从啊,好可怕的。这里如果做了,+1分。做了从以后,还要在本地备份,对如果有备份意识的,其实已经做了。但是否就足够了呢? NO,本机备份只是很简单的方案,理论上,出现问题的概率也基本一样,一样被删,硬件故障一样没用。这时候,就需要手动复制一份到其他地方去,进行异地备份。这里做了,再+1分,遗憾的是更少的企业会做这个。
以上是一个简单的对核心数据库进行备份的方案,但这也仅仅是一个基础,数据小,业务简单也不是难事,写几个脚本就可以了。一旦当数据和业务规模发展起来后,数据量,业务种类,节点数目,版本迭代,研发流程等都会全面影响数据管理策略。遗憾的是,从目前了解的信息看,不少企业的负责人或执行团队,并没有与业务一起进步,忽略了数据连续性的价值,才导致看起来很低概率发生,最后变成了下一携程。
总体来说,手动方案靠1个有态度,且敬业的团队,否则,这个方案出问题的可能性很大
全程自动化,系统化,数据大、业务多、团队大的场景,更鼓励用此方案
我们简单想象一样,数十TB级数据,100个节点,10台DB,30个业务,加上互联网敏捷式的按天,按周的迭代,互联网企业运维团队常用的备份小技巧,主从,手动,本地,异地,手动归档等会变成麻烦起来了: 忘记做备份, 空间满备份失败,找不到备份版本, 备份慢,传输异常中断,恢复慢,换人了,甚至备份了,也不敢用来恢复,……你说有啥用呢。
实际场景会更复杂,在线系统,内部研发系统,关键业务支撑系统等,加上团队规模一大,基本上这块事情就变复杂了。
对此,比较好的方案就是系统梳理业务类型,数据类型(DB,图片,视频,文档,代码),是抓取的,还是编辑产生的,内部,外部,需要保护的策路,包括频率,以及数据保留的历史周期,选择好容错能力的存储设施,业务数据的敏感程度等,抽象几种行为的结果,统一对数据,应用代码进行本地和异地备份,对比较历史的数据直接归档到离线位置。同时考虑在出现紧急问题后,最好能够快速对核心系统恢复,甚至瞬间对部分核心环节的文件,数据库单表进行恢复。结合自动化逻辑,不管规模有多大,按内外,按业务,按部门等视图,集中在一个系统管理起来,一个系统全局掌握企业的核心业务分布,数据保护状态;当出现这类紧急情况后,通过自动化系统,只需要在数十分钟,有序就恢复了;一切尽在掌握。你说,这样该有多好啊?当然实际携程的网络结构会更复杂,对全网实施,需要比较长时间梳理和设计,如5.28这种全网出问题后,恢复的时间会略长。
自动化方案就比较多,做数据管理和保护的IT公司不下500家,像IBM、HP、Dell、EMC、赛门铁克、康沃、飞康、爱恩铁山、CA、carbonite这些老牌的上市公司,由于历史传统IT基因,这类对互联网类型基本难适应,互联网类公司一般也不原意用;还有很多新型的互联网创业公司,如Datto、code42、durva、Rubrik等企业。深圳的一家企业,多备份,算是后起之秀,互联网化的产品,全新混合云自动备份保护路线,一站式支持各型主流DB系统,OS,各型类型数据集中管理保护。无论在线,还是内部系统,文件和数量多大,可以对IT运维团队非常友好,一个面板集中管理起来,更适合携程这种现象的治理。
那,已经做了,如何?不把鸡蛋放在一个篮子
同1个磁盘,同1个节点,同1个机房,同一个人维护,统一钟存储设备等都是鸡蛋放在篮子的表现,对于重要的数据,这不是良策。不少情况出问题,都由这几类原因发生。因此
无论如何,一个健壮的数据保护系统,必须要有能力规避掉。多点存储,异地,交叉检查,还是要结合用上的。
我经常听到不少同学提到,我们是用的云,我们是用的这家云,很牛的云,很多案例,但又能怎么样呢?云不是万能的,都是人写代码,加上机器垒起来的,是人就会犯错误,硬件不例外,数据中心也不例外,微软发生过,AWS也发生过。对于云磁盘本身的快照也只能做到整体恢复,存储重点也是解决硬件故障。出问题的恢复动作其实满大的,数据越大,越不容易可控 , 对于可靠的备份机制来说,细粒度备份和恢复时必要的,备份的场景和恢复的需求太多, 云平台强项是虚拟化计算和存储。这就是为什么云平台包括AWS,阿里云等都有备份保护类的服务。
从另外1个角度看,一个平台依然存在一个篮子问题,所以我们鼓励企业在做数据备份的时候,进行交叉部署,交叉备份管理,特别对于关键的业务系统和重要数据,尤其要注意,尤其是在关键发展阶段的企业,即将要上市的企业啊,特别要注意的。
目前此环节,市面上传统的IT企业推出的硬件方案,比较难做到这点,一般都需要采购一批硬件进行部署,实施的成本还是比较高的。面向云的方案是比较适应这类场景,国外有些企业比如Datto,Rubrik等都是基于云和本地混合保护方案 ; 而在国内,可以根据需要进行异构,异地,异云的交叉组合。
有心无力怎么办
当然,也有超强备份保护数据意识的企业执行团队,问题在于数据一大,预算就马上爬升, 这样的情况,有心无力,那怎么办呢? 其实还有第2个方案,就是基于混合云的技术。基于云的技术一次投入超低,几千块就起飞了,成本随企业的发展,其实都已经摊薄,这样天然就是异地的方案,如果说你担心安全,其实也没必要,数据加密上去,退一万步讲,云平台被入侵了也不担心,其实国内主流的云平台都是一线企业,舍他选谁?安全是他们生命,比任何一个企业都在乎;如果这样你还不放心,你说你数据比银行要求还机密,这样一些相对历史或边缘的数据,可以选择加密上云。当然,只有云还不能解决快速恢复的问题,特别对于数据规模比较大的情况下,这时候,就要用本地和云混合的方案来解决。本地用一般的NAS,服务器,或再数据上到10TB级,专业点用SAN,当出现问题后,可以并行从本地往各个节点,系统进行同步恢复。类似携程这种情况,几分钟到几十分钟也就OK了,至少对于关键几个业务系统。随后周边一些业务在主系统恢复的时候,逐步按批次恢复。基本也就在1-2个小时就全网恢复了。万一本地的备份系统也被干掉了,那还可以从云端以数Gb级的速度做灾难恢复。国内了解到有一些创新型企业都在做此类事情,提供自动化,基于混合云,集中管理的方案,无论多复杂的业务结构,都可以清晰梳理,并有序管理起来,有效规避人为,自然,系统因素。
最后,如何整起?
当然,你说你是很牛的企业,人多,钱多,愿意投入数十人的IT运维工具开发团队,花几十到百万,开发一套系统自动化做这些事情。但是,你愿意不,你能做到不?只有不到1/1000的企业会这样投入做。当然,你说可以结合开源的工具来做,包括文件同步,数据库导出工具,甚至二机制日志,也不是不行,最大的问题,还是在于数据量,业务量,网络结构复杂后,这些都会变成问题 ;逐渐你的企业会变成依赖一个不愿意反复做类似事情的团队,而不是一套针对性的系统来解决问题 .
所以,本文的最后的观点是:以小投入换基业常青!专业的事,就交给专业的服务去干吧!互联网的问题,用互联网的工具来解决!