在10月17号的2014年阿里云开发者大会上,阿里云飞天项目负责人唐洪做了飞天项目的专题演讲,演讲中对飞天项目架构、遇到的技术挑战、监测运维等方面进行了详细介绍。以下是对演讲内容的整理报道。
飞天项目的整体架构,最底层基础架构是由通用服务器组成的Linux集群,没有使用高端的服务器和存储。飞天提供功能的方式是通过服务的方式,下图中所有蓝色的框(指各类云计算服务)都是对外提供服务的窗口,但这里蓝色的框并不代表所有阿里云提供的服务,还有许多其他的服务没有包括。最上层,飞天项目是阿里云整个产品和服务的技术基础,上面是各种各样的应用。
飞天平台上强调的是做多租户,因为众所周知云计算带来的好处就是弹性,另外一个就是需要帮助大家降低成本。
1、小概率故障成为了常态:分布式计算集群里面有成千上万台,几十万台甚至上百万台服务器,每个服务器都有那么多组件,所以任何小概率事件都会被放大。飞天平台是通过数据去掉单点的方法来降低这些小概率带来的影响,但客户受到困扰并不是一个简单的可用率,今天的可用率也可以达到99.9%以上,深入挖过去,到每个具体客户的时候,会发现他们的痛点不能只用一个概率来概括。
2、机器比人可靠,但是在飞天服务链条里面有很多很多人的因素,所以第二个挑战就是怎么样能够降低人在服务链条里面的负作用:举个例子,比如说配置的错误,因为配置项很多,让人来配置的话很容易配错,或者代码修改之后,操作其实是一个文档,但没有做相应的修改,然后用老的操作流程的时候就会出现问题,它另外去执行的时候也会发生问题。还有一些操作,虽然有文档,但从来没有操练过,因为很难在一个实验的环境去复现这个情况,其实是没有验证过的,真正上到战场上发现这个流程是错的。最后发现流程是对的,但是人在疲劳或者压力的情况下会出现错误,所以很多情况下是人的失误所导致的故障。
3、后台负载干扰在线服务,就是多种环境下性能隔离的问题:当用户投诉说ECS和IO比较慢的时候, 经常会告知用户把快照关闭。从系统层面根本解决这个问题是很复杂的事情。一方面需要在全局进行控制,也就是到底多少路IO在进行中等等,第二方面是网路的流控,最后要确保单机的流控。
针对上面三种挑战,唐洪提出了针对性的策略:
1、针对小概率故障,会具体问题具体分析,并给出合理的解决方法。而且,在已有的经验与积累基础上,正在研发名为“华佗”的监测系统模块。从系统层面上根本解决尽快发现底层的故障。华佗通过综合了各种类型的系统信息,例如系统的日志、SMART磁盘的指标或者命令反馈的信息,并且可以综合应用的反馈,比如说访问某个云服务的时候超时了或者断联了,就把这个反馈给华佗,这个形式比较简单,比如通过经验规则,或者可以通过学习的方法建立一个故障模型,甚至在这个硬件发生故障之前就可以判断它即将发生故障,然后通知运维赶紧把这个硬件下掉,也可以通知应用绕开这个节点。目前华佗在ODPS上线,并且能够发现磁盘的故障,而且根据观察,基本上能够做到百分之百的覆盖,也就是磁盘有故障就可以发现,误报率在10%左右,并不久将推广一些在线的集群。
2、最薄弱的环节,人:有两方面的工作,第一是热升级的工作,每个服务都会承诺三个可用性,而且在升级过程中要求不能够让用户感知到,这个热升级就好象你开着飞机,在飞的途中去换一个引擎,这是非常有挑战的事情。第二个,在生产环境里面配置千奇百怪,很难用一个固定化的流程把这些问题全部剔除掉。升级过程中有很多人操作,也就是每一步都会去看看有没有成功,如果中间没有成功就会进行下一步,所以每个流程非常长。另外一个是阿里云部署升级非常快,部署升级的频率不但跟业务相关,也跟迭代速度有关,但13年底的时候,发现目前的方式没有办法跟上业务和产品的规划节奏,所以启动了御风项目,目标是希望把单个集群从原来一个礼拜缩短为六小时,并且希望把整个升级过程中的自动化和可控性能够上升到一定水平,能够把升级效率提高10倍以上。
3、后台负载干扰在线服务:比如打快照的时候启动一个后台进程,把原来虚拟磁盘数据搬到快照镜像上。当有写请求进来的时候,需要首先把写之前的磁盘读出来,第二步把读取这个数据写到相应的快照位置上去,第三步才会把这个数据写进去,也就是在打快照期间,写操作的IO路径中间有一个读操作。怎么解决这个问题呢?解决的方法,就是用一个影子拷贝,也就是当写的时候,先写到这个影子拷贝里面去,这样在后台打快照将不受影响,前台写也不受影响,直到快照打完之后,会把影子里面所有的数据合并到数据磁盘里面去,这样一来会对打快照对IO的影响降到很低很低。
最后,唐洪从《礼记》中庸里面讲到的四个字“困知、勉行”,概括了他和他的团队是怎么理解客户的痛点,怎么理解云计算技术,怎么样去做好云计算技术的。“困知”,靠分析一个个工单,看到每一个蓝屏和闪断等问题学习云计算的挑战在哪里。“勉行”,团队里面没有什么天才,大家都是平凡人,唯一能做的就是努力,每个人用200%的努力来实践,才能完成这件事情。