互联网网站整体迁移到云计算平台的研究与应用
2012-07-25范多毅
范多毅
0 引言
云计算作为一种基于互联网、动态、可伸缩且虚拟化地以服务方式,提供计算资源的全新计算模式,是继个人电脑、互联网之后电子信息技术领域又一次重大变革,其影响范围和程度都很可能超越以往。随着云计算概念的不断普及,越来越多的终端引入了云计算服务。
而在瞬息万变的互联网时代,如何快速和灵活的配置企业各种资源,在最大化利用资源的同时,又不会错过业务爆发的机遇,已经成为企业生存及发展不可缺少的特质之一。
本文将重点介绍,小规模IT企业如何充分利用Amazon的弹性云,将自己的IT业务整体迁移到云上。以及描述了迁移所涉及到的服务架构调整、相关资源利用和安全性稳定性等问题。以上说到的整体业务还包含电子邮件服务,Web应用,持久化技术,并行计算平台。
1 信息产品迁移-跨国信息发布型网站迁移
信息发布型互联网站是指新闻类,电子公告类以信息发布为主的互联网站产品。该类型的网站,本次考察的迁移目标是一个跨国信息发布类网站,需要满足以下的性能要求:
需要在多个国家能快速访问。
需要能并发处理大量连接的要求。
要能应对突发访问量增加的需求。
原有架构,如图1所示:
图1 原有的应用程序架构图
需要考虑对硬件的需求能够支持多倍的峰值的上限。
基于图1进行实现和部署的服务器部署结构图,如图2所示:
图2 原有服务器部署示意图
描述了原有情况下,所有组件均需要由企业来实现和后续部署维护,如何及时解决服务器失效成为系统稳定性的瓶颈。
图2原有部署结构说明:
(1) DNS Server,根据来源IP数据,比对亚洲IP地址资源数据库判定是在中国还是在日本或美国,将访问路由到最近的服务器。
(2) 中国侧的两个Tomcat应用服务器为业务层的负载平衡。
(3) 前端缓存,利用Nginx的缓存实现。
迁移到云平台后,架构变成,如图3所示:
图3 迁移后的新架构
迁移后方案的说明:
(1) 程序部署通过自动化实现到EC2的傀儡服务器。再由该服务器向既有服务器进行分发。
(2) 剥离部分非关系数据库功能到 SimpleDB,降低管理成本,提升可靠性。
(3) 增加 Memcached缓存层,提升应用层的处理速度,和承担部分页面组件缓存功能。
(4) 静态内容以及部分缓存内容通过 S3存储,并自动发布到CloudFront进行CDN应用。
(5) 负载平衡由 Elastic Load Balance完成,使用AutoScale+CloudWatch自动伸缩组功能提升可靠性。
2.1 弹性服务器
2.1.1 Amazon提供的虚拟服务器分为不同的性能级别,分别对应不同的CPU内存。其中微实例是非常划算的实例,价格低廉,但它的CPU具有特定的限制,需要有选择的应用,一般是用于偶尔爆发CPU利用率的应用类型。所以合理利用不同类型的实例,将有效的利用投资获得效益。
2.1.2 弹性体现在不同级别的实例之间,有非常平滑的过渡切换过程。在分钟级别时间内,可以实现从微实例到大型实例的切换过程,升级过程更加平滑。
2.1.3 由官方提供的成本消耗,基本符合实际的情况,如图4所示:
图4 硬件消耗曲线示意图
矩形曲线表示传统的硬件资源(硬件,电力,相应的管理资源)投入曲线。下方的是实际根据应用情况估算的理论上最小的资源消耗曲线。而中间的深色曲线表示了利用Amazon弹性云平台的相关技术后,对于资源的投入,基本上贴符合实际需求曲线。在实际使用中,有效降低成本。
2.2 负载平衡解决方案,Elastic Load Balance(ELB)
Amazon提供了ELB+AutoScale方案。ELB提供了将访问流自动平均分配到Availability Zone,在一个zone中平均分配到相应的EC2 Instance,如图5所示:
图5 ELB应用结构图
AutoScale提供EC2实例数量根据配置自动伸缩的功能。依据新闻发布的特点和访问量,将对参数做如下设置。
AutoScale Group参数,如表1所示:
表1 根据项目设计的负载平衡自动伸缩参数
实际测试性能,表1中的指标控制线和实际检测数据,如图6所示:
图6 ELB自动伸缩参数侦测图
左图为CPU大于40%监控线,右图为25%控制下限。
实际服务器的动态增加和减少曲线,如图7所示:
数据显示实例根据访问的情况,呈现自动增长、自动收缩的特性。而依据Amazon的收费策略,实际需要支付的费用为实际运行中的实例。
对于规模更大的网站应用,或者软件应用,可以将伸缩范围设定到更大的数字,理论上可以相对快速的响应突发流量的情况。
在容量变更冷却时间的粒度上,需要根据具体的情况,设定适合应用的参数。因为不当的参数,导致频繁的实例容量变更,必定会降低应用的体验,并因为,实例启动的代价增加额外的资源消耗费用,例如IO数量。
另一个方案是,使用定期容量变更,来预先准备好应对流量的变更。例如每天的2点到8点降低实例数量,而在早中晚保证高额的实例数量。理想的健康曲线图,如图7所示:
图7 ELB自动伸缩侦测图
2.3 DNS解决方案
因为要使用Amazon的ELB,所以需要用到Amazon的高可靠DNS解析方案,也因为利用了Amazon的CDN解决方案,所以原来程序架构中的 DNS服务被撤销。Route53提供了高可靠的DNS解析服务,并唯一的提供ELB的动态映射功能。
2.4 CDN解决方案
CloudFront是Amazon提供的CDN服务,提供了应用部署方案一个非常方便的内容分发系统,让终端用户可以访问离他最近的资源节点,获得高的访问效率。如何利用云存储提供原有的静态和动态内容发布和加速,如图8所示:
图8 CDN和云存储应用方案示意图
实施时对站点的域名进行映射,以实现站点内资源 url的一致性。同时通过Amazon提供的S3存储服务,将内容透过S3向CloudFront进行发布。将图片服务器的内容宿主于S3上,同时需要改造后端内容发布系统,将内容的输出和静态的应用元素,例如静态页面和图片,发布到指定的S3上,根据配置会自动同步到CDN网络上。
实际测试下用户在访问具体资源时,日本的用户会被定向到日本本地的节点,而位于中国的用户会被定向到位于香港的节点,美国的用户定位到加州的节点,实现了既定目标。
2.5 数据库解决方案
Amazon Relational Database Service (RDS),这是一个在EC2云端系统上提供的完整数据库解决方案。RDS提供自动备份服务。Multi A-Z功能,是数据库热备的完美方案。
迁移方案中的数据库位置参考图3。
根据网站项目的数据特点,比对选择合适的方案,如表2所示:
表2 数据库需求比对
实施时需要修改时区,以实现非本地区的数据库应用。因为还不能完全支持数据库的所有功能,特别是不能向Amazon以外的服务器进行数据同步,所以在特定应用,情况下,很大程度上受限于速度问题。
为了方便的存储非关系型数据,充分利用 SimpleDB组件的特点,部署内容 Metadata的元数据格式,以便于内容的管理和检索。同时对于网站中的相对独立的应用组件,利用这个非关系型数据库,将变得十分的便利。而SimpleDB的高可靠,零管理特点,决定了开发维护的代价非常低。
2.6 缓存解决方案
Elastic Cache提供了Amazon版本的Memcached,通过建立大量内存式的缓存,提供了极快的响应速度。在系统架构层面为某些频繁访问的资源设定LRU的缓存更新策略,以提升系统响应速度。
严格来说缓存层并非Amazon提供的特殊功能,但是因为受限于Memcached这样的高内存消耗应用,在实际部署时,可能会造成硬件整体成本的大幅上升,并难以充分利用投入的硬件。Amazon将大内存应用的成本降低到可行的下限,并且由于按需购买的特性,使缓存层有充分的发挥空间。
3 可靠性和安全性
3.1 可靠性
Amazon的云计算平台做了大量工作来提升可靠性。合理利用这些功能,将有助于企业部署关键业务的可靠性。
利用Availability Zone 提升系统的可靠性,CloudFront、数据库的Multi A-Z配置,ELB中的多AZ的方式,以及EC2分别的部署,都是利用了这样一个概念。在配置关键业务时,需要充分利用这些配置来提升系统的可靠性。
数据库:利用Multi A-Z,支持热备功能。利用SimpleDB这种高可靠的数据库,部署业务。
业务处理层:利用ELB和AutoScale。
实例层:利用定期备份和快照,保障服务可以在单日时间内进行恢复。
文件存储:利用S3来安全的存储大量的文件。
其他组件:利用SQS来应用消息队列、利用SES来实现邮件应用,同时达到0配置和高可靠。
CloudWatch:可以监控上千个组件指标,实现对系统各个方面指标的全监控。例如在AutoScale Policy中配置的监控指标的反馈响应,从而实现的了服务的高可靠性。
3.2 安全性
系统提供了安全组,实现基本的安全配置.。根据不同的应用,配置不同的安全组,以达到控制实例端口的安全性。
Amazon提供了安全渠道和工具,如图9所示:
图9 安全架构示意图
IAM(identity & Access Management)服务提供的第三方访问和管理指定资源的权限,在产品发布部分会,对这个功能进行进一步的利用方面的描述。
Key Pair被设计用来在项目中登录各个服务器,Access Credential用于授权应用程序控制云资源的行为,和利用应用程序组件。
4 结论
通过将IT企业的现有产品架构部署到Amazon的弹性云上,实现了既定的迁移目标。
在迁移过程中发现如果需要充分利用弹性云的特征,IT产品在很多环节需要进行重构,利用一些更加可靠的Amazon的服务来替代原有的程序组件,以充分利用高可靠的、降低管理成本的、和按需购买的优势。
而Amazon的弹性云,提供了更多原先中小企业无法做到或者无法做到这种方便程度的特殊功能和产品特性,例如全新的产品交付方式、产品部署方式、全自动化的伸缩管理、极为细致的硬件软件资源投资管理,在极大程度上降低了企业的各方面成本。甚至有完全基于Amazon云平台的公司出现。
云计算平台提供了全新的应用体验,极大了降低复杂系统的建立管理成本,是未来中小IT企业发展的绝好契机。也是大型企业极大提升效能,降低成本的绝佳平台。
[1]雷万云.云计算—企业信息化建设策略与实践[M].北京:清华大学出版社,2010.
[2]Tim Mather, Subra Kumaraswamy, Shahed Latif.Cloud security and privacy: an enterprise perspective on risks and compliance[M], 2009.
[3]Jeffrey Dean.MapReduce: simplified data processing on large clusters[M], 2008.
[4]雷葆华.云计算解码——技术架构和产业运营[M]北京:电子工业出版社, 2011.
[5]George Feuerlicht, Shyam Govardhan.SOA: Trends and Directions[M], 2009.