zoukankan      html  css  js  c++  java
  • 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进行代码修改和开发

      -  先苦后甜

      本博-三石Blog(下文简称本博),在本博客文章结尾处右下脚未注明转载、来源、出处的作品(内容)均为本博原创,本站对于原创作品内容对其保留版权, 请勿随意转载,如若真有需要的朋友可以发Mail联系我;转载本博原创作品(内容)也必须遵循“署名-非商业用途-保持一致”的创作共用协议,请务必以文 字链接的形式标明或保留文章原始出处和博客作者(Lei Zhang)的信息,关于本博摄影作品请务必注意保留(www.cnblog.com/threestone)等相关水印版权信息,否则视为侵犯原创版权 行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。

  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/threestone/p/4142524.html
Copyright © 2011-2022 走看看