Windows Azure云服务IaaS与PaaS层性能分析

云计算 IaaS PaaS
本文作者在对微软PaaS和IaaS平台的基本概念进行介绍的基础上,将Windows Azure的IaaS层与PaaS层的性能优势、劣势分别进行总结和比较。

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

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

 

Windows 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。

#p#

4.Azure PaaS平台的优势

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

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

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

(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)

(3)需要修改代码

Azure PaaS平台需要修改一些代码,比如Session放在外部存储上,本地文件的读写放到Azure Storage里。
 

责任编辑:Ophira 来源: cnblogs
相关推荐

2012-09-19 13:32:17

Windows Azu云主机服务Windows Ser

2013-08-21 10:11:05

IaaS云服务器Windows Azu

2022-02-19 23:22:53

云计算SaaSIaaS

2012-05-11 10:54:58

基础设施云服务PaaS

2011-09-15 11:17:57

IaaSPaaS开发

2014-02-28 10:17:03

Windows AzuIaaSPaaS

2016-03-29 09:59:08

甲骨文

2019-12-17 15:15:55

云计算PaaSIaaS

2021-01-12 10:05:45

云计算PaaSIaaS

2010-11-01 13:10:33

2015-10-08 16:53:51

IaaSPaaS云应用

2012-10-11 10:51:39

开源IaaS云

2013-02-21 08:38:24

微软Azure亚马逊Web服务云服务

2019-07-24 09:45:01

SaaSPaaSIaaS

2014-06-09 17:41:08

Gartner微软Windows Azu

2013-12-10 23:06:58

开源云平台云计算

2013-07-29 09:29:13

PaaS云IaaS云管理

2018-11-19 10:52:19

IaaSPaaSSaaS

2011-07-27 13:03:09

2013-11-21 08:56:50

PaaSIaaSDPaaS
点赞
收藏

51CTO技术栈公众号