12.5.4 云平台架构
从托管Web应用程序的角度看,云平台主要包括云存储以及应用运行平台,如图12-7所示。
图 12-7 云平台整体架构
云平台的核心组件包括:云存储组件和应用运行平台组件。下面简单介绍一下。
(1)云存储组件
云存储组件包括两层:分布式存储层以及存储访问层。分布式存储层管理存储服务器集群,实现各个存储设备之间的协同工作,保证数据可靠性,对外屏蔽数据所在位置,数据迁移,数据复制,机器增减等变化,使得整个分布式系统看起来像是一台服务器。分布式存储层是云存储系统的核心,也是整个云存储平台最难实现的部分。CDN节点将云存储系统中的热点数据缓存到离用户最近的位置,从而减少用户的访问延时并节约带宽。
存储访问层位于分布式存储层的上一层,该层的主要作用是将分布式存储层的客户端接口封装为WebService(基于RESTful,SOAP等协议)服务,另外,该层通过调用公共服务实现用户认证,权限管理以及计费等功能。存储访问层不是必须的,云存储平台中的计算实例也可以直接通过客户端应用编程接口(API)访问分布式存储层中的存储系统。
(2)应用运行平台组件
应用运行平台的主体为计算实例,计算实例最主要的功能有两个:开发者的应用程序运行环境以及离线任务处理。不同的云计算平台厂商的计算实例形式往往不同:AWS(Amazon Web Service)平台中的计算实例为Amazon的弹性计算(Elastic Computing,EC2)虚拟机,它们既用于托管开发者的Web程序,又可用来执行Hadoop MapReduce计算或者图像以及视频转换等离线任务;GAE(Google App Engine)平台中的计算实例分为前端实例(Frontend Instance)以及后端实例(Backend Instance),其中,前端实例为GAE特有的Python、Java以及Go语言运行容器,用于托管开发者使用Python、Java或者Go语言开发的Web程序,后端实例执行运行时间较长的离线任务;微软的Azure平台(Windows Azure Platform)的计算实例为运行着一个64位的Windows Server 2008的虚拟机,分为Web Role、Worker Role以及VM Role三种角色,其中,Web Role用于托管Web程序,Worker Role用于执行视频处理等离线计算任务。
多个计算实例构成一个计算实例组,当实例组中的某个实例出现故障时,能够自动将负载迁移到其他的实例,并且支持动态增加或者减少实例从而使得实例组的处理能力具有动态可伸缩性。运行平台的最前端是路由及负载均衡组件,它将用户的请求按照一定的策略发送到合适的计算实例。
云存储平台还包含一些公共服务,这些基础服务由云存储组件及运行平台组件所共用,如下所示:
●消息服务。消息服务将执行流程异步化,用于应用程序解耦。计算实例一般分为处理Web请求的前台实例以及处理离线任务的后台实例,在很多情况下,前台实例处理Web请求的过程中需要启动运行在后台的任务,这种需求可以通过消息服务实现。
●缓存服务。缓存服务用于存储云存储系统中的读多写少的热点数据,从而加速查询,减少对后端存储系统压力。大多数云存储平台提供Memcache服务。
●用户管理。用户管理主要功能是用户身份认证,确保用户的身份合法,并存储用户相关的个人信息。云计算平台一般支持单点登录,在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的系统。
●权限管理。为多个服务提供集中的权限控制,以确保应用和数据只能被有授权的用户访问。云存储系统一般会维护一系列的访问策略,每一条策略表示某个用户是否对某个资源具有某种操作权限。
●安全服务。安全服务包括Web漏洞检测,网页挂马检测,端口安全检测,入侵检测,分布式拒绝服务攻击(Distributed Denial of Service,DDoS)缓解等。Web漏洞检测提供对应用的SQL注入漏洞、XSS跨站脚本漏洞、文件包含等高危安全漏洞进行检测;网页挂马检测通过静态分析技术和虚拟机沙箱行为检测技术相结合,对网站进行挂马检测;端口安全检测通过定期扫描服务器开放的高危端口,降低系统被入侵的风险;主机入侵检测通过主机日志安全分析,实时侦测系统密码破解,异常IP登录等攻击行为并实时报警;DDos缓解技术能够抵御SYN flood以及其他拒绝服务攻击。
●计费管理。利用底层的监控系统所采集的数据对每个用户使用的资源和服务进行统计,计算出用户的使用费用,并提供完善和详细的报表。云存储系统计费涉及的参数一般包括:CPU时间,网络出口带宽,存储量以及服务调用次数(包括读写API调用次数)。
●资源管理。管理云存储平台中的所有服务器资源,将应用程序或者虚拟机映射自动部署到合适的计算实例,另外,自动调整计算实例的数量来帮助运行于其上的应用更好地应对突发流量。当计算实例发生故障时,资源管理系统还需要通知前端的负载均衡层,将流量切换到其他计算实例。
●运维管理。云存储平台的运维需要做到自动化,从而降低运维成本,一般来说,有一套专门的Web运维系统用于系统上下线,批量升级系统程序版本等。
●监控系统。监控系统有两个层面,其一是资源层面,即资源的运行情况,比如CPU使用率、内存使用率和网络带宽利用率、Load值等,需要注意的是,云计算平台除了监控物理机资源,还需要监控虚拟机资源的运行情况;其二是应用层面,主要记录应用每次请求的响应时间、读写请求数等。