首页 > 代码库 > Windows Azure Cloud Service (38) 微软IaaS与PaaS比较

Windows Azure Cloud Service (38) 微软IaaS与PaaS比较

  《Windows Azure Platform 系列文章目录》

  

  最近一直想总结Azure IaaS和PaaS的区别与比较,写个博文详细说明一下。建议读者在阅读之前,先熟悉微软PaaS和IaaS平台的基本概念,再参考本文。

  1.Azure IaaS和PaaS的服务类型层次,请参考下面的图片:

  

  对于IaaS来说,用户需要管理的对象是:

  -O/S,操作系统

  -Middleware,中间件

  -Runtime,运行时

  -还有Data和Application

  对于IaaS来说,客户就像是使用云端的虚拟机一样,在Azure平台选择自己需要的操作系统(Windows or Linux),在这个操作系统里安装所需要的软件,然后对操作系统及以上内容进行管理。

 

  2.IaaS的优势?

  IaaS的优势首先来说与传统IDC运维相类似(注意是类似而不是相同,因为公有云都是基于虚拟化技术,比如云端网络虚拟化是与传统IT运维不同的),传统IT运维人员比较容易接受与快速上手。一般我在做项目实施的时候,将云端的虚拟网络、存储账号和虚拟机都创建好以后,直接将Windows Remote Desktop或者Linux SSH连接字符串给到客户IT方,就可以迅速安装所需要的软件了。

 

  3.IaaS的劣势?

  IaaS的劣势从我个人理解是分为一下几种:

  (1)IT还是需要花精力对服务器进行更新和维护

  公有云服务强调的是Self Service(自服务),对于IaaS层面来说,虽然企业用户不需要话费巨额投资来搭建和维护自己的数据中心,但是还是需要花精力对于操作系统进行更新和维护,比如IT还是需要对操作系统的升级和打补丁,进行维护。采用IaaS节省了硬件采购成本,但是没有解决软件的维护成本。

  (2)用户需要自己来配置高可用组

  Azure提供更新域和故障域来实现服务器的高可用。在IaaS平台,用户需要手动配置高可用组,将多台相同功能的虚拟机配置在同一个高可用组里。否则,虚拟机不能实现高可用。

  (3)为了实现高冗余,需要改架构

  公有云服务在推出之初,是用多台虚拟机并行计算,提供高冗余的方式来解决服务器单点故障的问题。我们知道,凡是硬件服务器就会产生硬件故障。在Azure平台,我们建议用户一般采用2台或者2台以上的服务放在同一个高可用组里,来实现99.95%的SLA。但这样问题来了,我发现很多的客户采用:

  a.单台Web服务器作为前端,并且把session保存在web服务器上。一旦这台Web服务器宕机了,所有的session就会丢失,系统无法正常运行。如果我们考虑99.95%的SLA,需要使用2台Web服务器,并且把session也进行分离,使用云服务商提供的cache服务或者自己在虚拟机里实现cache的主从逻辑。

  b.单位文件服务器存放文件。这台文件服务器也会产生单点故障。如果需要将文件同时提交到多个节点上,在Windows平台需要使用比如DFS(分布式文件系统)或者在Linux平台使用RSync。实现文件在多个节点上进行提交和同步。

  c.单台SQL Server数据库服务器。数据库服务器存在单点故障。我们可以使用SQL Server 2012 Always On来实现数据库的高可用。

  (4)有限的横向扩展能力

  如果大家在使用Azure Auto Scaling的时候,会发现在IaaS层面,如果需要实现100台虚拟机的auto scaling,需要手动预先创建100台虚拟机并在每一台虚拟机里配置同样的application。对于IaaS来说,Azure Auto Scaling不能自动扩展到任意的大小,而需要IT管理人员进行预设。这主要的原因是IaaS虚拟机的之间的数据同步问题,Azure没有办法将应用横向扩展部署到100台虚拟机上,因为每一台虚拟机的底层操作系统文件、应用文件都需要用户自己来管理。虽然我们可以通过虚拟机镜像来快速部署多台虚拟机,但是牵涉到IP规则,数据文件同步等等各方面,这些都需要用户自己来管理。所以对于IaaS来说,横向扩展是有限的。

 

 

  上面我们谈了一下IaaS,接下来我们谈谈PaaS平台。如最上面的图所示:

  对于PaaS平台来说,用户需要管理的对象是:

  -Application,应用程序

  -Data,数据文件

  所有底层的OS,Middleware和Runtime,都由Windows Azure来维护。但是要注意,Azure PaaS提供的操作系统其实是Windows。无法在PaaS层使用Linux的操作系统。如果你的应用必须跑在Linux平台,请使用Azure IaaS。

 

  4.Azure PaaS平台的优势?

  (1)不需要维护操作系统

  Azure PaaS平台对于企业的优势是享用服务所带来的价值,而不是实施和维护软件系统的成本。

  Azure PaaS Cloud Service定义了OSFamily和OSVersion,来自动配置操作系统版本及更新内容,用户无需手动对操作系统进行升级。如果客户需要Azure自动升级最新的操作系统,将OSVersion="*";如果客户需要固定某个操作系统的版本,可以设置OSVersion="WA-GUEST-OS-X.XX_20XXXX-XX",设置某个固定的版本。具体请参考:http://msdn.microsoft.com/library/azure/ee924680.aspx

  (2)自动配置高可用组

  如果用户的应用程序需要实现负载均衡,Azure PaaS平台自动会将应用程序部署到多个计算节点上,并且自动设置故障域和更新域。用户无需手动进行配置。

  (3)自动横向扩展

  Azure PaaS 平台将用户的代码打包为CSCFG和CSPKG。CSCFG是配置文件,用来描述PaaS的节点数量和配置信息。CSPKG是项目打包文件(package)。Azure PaaS通过CSCFG定义计算节点,然后将CSPKG发布到若干个节点上,可以自动实现scale-out。而不像IaaS那样,需要IT Admin预先把虚拟机创建好。

  (4)高冗余可扩展的架构

  Azure PaaS平台架构,可以实现应用的高冗余和可扩展。

  通过将Session保存到外部的存储上(如SQL Server数据库中),可以实现Web Server的高冗余。

  通过将文件保存到Azure Storage上,可以实现文件的99.9%的高可用。另外文件不是上传到计算节点,可以解决文件同步和一致性的问题。

 

  5.Azure PaaS平台的劣势

  (1)需要借助于开发人员

  对于很多传统IT部署,应用的发布都需要借助于IT来实施。如果采用了Azure PaaS,应用的部署都需要借助于开发人员。这对于IT来说这一个挑战。

  (2)非持久化VM

  Azure PaaS是非持久化VM,任何在PaaS平台安装的软件都是非持久化的。一旦PaaS VM重置了,之前安装的软件都会丢失。

  对于大型的应用程序来说,一般都会安装其他第三方的软件(例如导出Excel,导出PDF,其他第三方插件等等)。

  对于PaaS平台,需要将安装软件的步骤放到ServiceDefinition.csdef的Startup Task中,进行静默安装(-s)

      Windows Azure Cloud Service (22) 使用Startup注册COM组件(上)

      Windows Azure Cloud Service (23) 使用Startup注册COM组件(下)

  (3)需要修改代码  

  Azure PaaS平台需要修改一些代码,比如Session放在外部存储上,本地文件的读写放到Azure Storage里。我会在后面几章介绍IaaS迁移到PaaS平台的步骤。

 

  总结:

  

   Azure IaaS比较适合:

  -  老应用的迁移

  -  迁移难度比较简单,但是管理比较复杂

  -  借助IT就可以进行应用的迁移

  -  先甜后苦

 

  Azure PaaS比较适合:

  -  新应用的开发

  -  迁移难度比较复杂,但是管理比较简单

  -  需要借助开发人员,基于PaaS进行代码修改和开发

  -  先苦后甜

 

Windows Azure Cloud Service (38) 微软IaaS与PaaS比较