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)等相关水印版权信息,否则视为侵犯原创版权 行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。

  • 相关阅读:
    Data Structure Binary Tree: Populate Inorder Successor for all nodes
    Data Structure Binary Tree: Connect nodes at same level using constant extra space
    Data Structure Binary Tree: Check if a given Binary Tree is SumTree
    Data Structure Binary Tree: Construct Tree from given Inorder and Preorder traversals
    Data Structure Binary Tree: Inorder Tree Traversal without recursion and without stack!
    Data Structure Binary Tree: Inorder Tree Traversal without Recursion
    Data Structure Binary Tree: How to determine if a binary tree is height-balanced?
    Data Structure Binary Tree: Diameter of a Binary Tree
    Data Structure Binary Tree: Convert an arbitrary Binary Tree to a tree that holds Children Sum Property
    【阿里云产品公测】OpenSearch初体验
  • 原文地址:https://www.cnblogs.com/threestone/p/4142524.html
Copyright © 2011-2022 走看看