如何实现互联网业务高效低成本灾备

【编者的话】:灾备,无论对于传统金融公司,还是互联网企业都是一个重中之重。尤其是对互联网业务,出现问题后,如果不能快速恢复,就会严重打击用户对公司的信心,影响公司的声誉,从而对公司的长远发展造成负面影响。如何实现简单、低成本的互联网业务灾备?且看我们一一道来。

山西证券火灾,2小时后仍不知何时能恢复服务

2015年11月2日上午9点开始,股民们惊奇地发现山西证券官网和交易网站无法登录。情急之下换手机尝试,面对的依然是黑屏。山西证券在互联网上不存在了,经历了上一轮的股灾,股民QQ群和微博上各种猜测四起,竞争对手也乘虚而入。

山西证券火灾

大约两个小时之后,新浪财经于10点52通过微博报道山西证券地下室起火,造成系统无法登录。火灾发生两个小时之后,山西证券依然无法回应何时能够恢复服务。

新浪财经报道山西证券地下室起火

灾备:金融行业的安全绳,保障安全最重要

对于金融灾备的真正重视,是911事件之后的事情。当时世贸中心内聚集的大量金融数据付之一炬。摩根士丹利(Morgan Stanley)在25层办公场所全毁,3000多员工被迫紧急疏散。半小时内就在灾备中心建立了第二办公室,第二天就恢复全部业务。纽约银行(Bank of New York)因为缺乏灾备系统和恢复计划,在一个月后不得不关闭一些分支机构,数月后破产清盘。

事实证明没有灾备的金融公司如同是死缓。911之后金融机构投入重金建立例如“两地多中心”的灾备模式,在数据库同步和专线打通方面已经有了比较成熟的模式。同城中心预防光缆挖断等局部故障,异地灾备用来应对地震等自然灾害。除了传统的主备模式,有些企业为了提高资源利用率,还引入了双活。当然全自动切换模式难度较高,多数还是半双活模式——需要切换到新的主数据库。

互联网时代,灾备方案的简单易用与效果同样重要

一般认为互联网公司长期服务海量用户,出现事故的情况下恢复能力较高。如果事故原因是不可抗拒力,那么就超出了互联网公司的日常运维范围。支付宝因为光缆被挖断停服两个小时,微信因为华东机房故障造成大面积瘫痪,携程因为代码发布问题停服12个小时。最近在一次运维技术沙龙活动中,国内头号互联网线上票务公司(简称Q公司)的运维部门分享了一次灾备演习的经历。事件模拟某个数据中心出现线路故障,运维团队在事先无预警情况下,8分钟之内在另外一个数据中心搭建了某业务的生产环境,联接上事先进行好灾备同步的数据库,服务既恢复上线。这个案例很好地说明互联网公司灾备的思路:不搞昂贵的热备,而是出现问题在较短时间内快速搭建生产环境。这种模式要解决两个问题:

  • 不同种类数据库的同步或者备份,目前业界有不少成熟的方法。
  • 快速搭建并运行一个生产环境。互联网公司业务变化很快,发布按天计,提前制作虚拟机镜像的方法不可取。如何快速大规模克隆一套线上生产环境,成了瓶颈。

以Mesos为核心的云操作系统,让互联网业务系统分分钟就恢复

互联网公司的业务一般比较复杂,部署代码就相当复杂,更不要说瞬间搭建完整的生产环境。Q公司并不像传统运维一样将业务代码直接部署在集群的主机里,而是在底层集群和上层应用之间引入了一个云操作系统(或者叫数据中心操作系统)。这个“操作系统”向上托着生产环境各种应用和软件,向下管理异构的集群。部署大规模应用变地像单机安装软件一样快捷,而且在不同的云上流程完全相同,解决了低成本灾备的关键问题。

形象地比喻,云操作系统能让运维同事像使用一台电脑一样管理整个集群。传统上在大集群部署各种代码和软件组件(例如消息队列、数据库)往往要论天论小时来计算,现在变地像在单机安装软件一样最多十几分钟就能搞定。

Google和BAT这样巨头都有类似的数据中心操作系统来管理规模庞大的集群,将复杂的业务部署到横跨几大洲的多个数据中心里,并且保证稳定运行。Q公司使用的数据中心操作系统叫做Apache Mesos,目前Twitter、苹果的Siri和Airbnb等公司用它来管理规模近万台的服务器集群。传统运营商如Verizon和国内浙江移动也已经用Mesos来承载其CRM和网上营业厅等生产系统。Mesos主要提供了如下三个功能:

  • 底层计算资源的池化。将底层服务器变成资源池,就像一台大计算机一样管理。可以混合部署各种应用,大大提高了资源利用率。
  • 快速部署集群化业务和软件。北向一键触发部署流程,南向自动部署到整个集群中。
  • 自动化的服务质量保障。例如流量爆发的时候自动扩展,底层出现故障的时候提供fail over功能。

数人云-云操作系统

如何通过”数人云”云操作系统,轻松灾备、快速恢复互联网业务

北京数人科技有限公司的数据中心操作系统“数人云”就是基于Mesos的商业化产品,目前最大单集群管理800台主机。作为向下“管云”的软件,数人云可以远程管理各个公有云、私有云甚至是物理机组成的集群,将它们虚拟成资源池。作为向上承载应用的应用部署和管理平台,提供了完整的Web界面和API接口,用户可以快速将应用的部署到资源池中,并且很方便的完成升级、生命周期管理和监控等操作。下面我们来模拟一次基于数人云的灾备系统运行的场景:

数人云灾备解决方案

  1. 每次更新应用的时候,开发部门将需要上线的应用打成容器镜像包,推送到私有云A的镜像仓库。
  2. 运维部门将镜像发布到主集群A中。
  3. 待业务稳定运行之后,将镜像更新到备份云B上的镜像仓库。
  4. 公有云B中的备份数据库不断地从主库同步数据。
  5. 当私有云A出现事故,短时间无法恢复,启动灾备流程。
    • a 被灾备公有云上批量启动云主机,自动加入数人云集群(3-5分钟)
    • b 使用数人云Web界面部署应用的各个组件,并且扩展到相应规模的实例数量。新增的实例会自动利用内网DNS连接备份数据库(5-10分钟)
    • c 通过修改DNS等方法将流量切换到备份集群,业务恢复上线。

对内数人云对于运维和灾备的核心价值在于将应用运维标准化、接口化和自动化,这些重复性工作也占了运维部门大部分日常工作。对外数人云打平了资源层的异构环境,让同一组运维人员能够远程管理多个不同云上的应用集群。此外数人云将各种应用层运维能力以API的方式对外开放,通过二次开发可以实现多种半自动或自动的灾备模式。总之便捷、标准和远程三个特性,为互联网公司打开了廉价实现灾备的大门。