WindowsAzure案例分析:选择虚拟机或云服务
网友 网络

随着云计算技术和市场的日渐成熟,企业在考虑IT管理和运维时的选择也更加多样化,应用也从传统部署方式,发展为私有云、公有云、和混合云等部署方式。作为微软核心的公有云平台,Windows Azure提供了三种计算模式(虚拟机、云服务和网站),允许客户快速的构建、部署和管理云端应用程序。本文旨在对如何选择虚拟机和云服务给出一些建议和指导。

 

虚拟机和云服务
  虚拟机(Virtual Machines)是Windows Azure基础设施即服务(IaaS)的重要组成部分,支持Windows和Linux操作系统,并提供了多款模板供用户选择。其特点有(不限于):
  1.自服务式申请并快速的创建虚拟机
  2.灵活的镜像移动,支持从本地到云端,或者从云端到本地
  3.自建虚拟机镜像,批量构建统一的应用环境
  4.快速的挂接和卸载数据磁盘
  5.支持Windows Azure虚拟网络(Virtual Network),构建局域网络
  6.完备的管理接口,如管理门户、PowerShell、RESTFul等
  云服务(Cloud Services)是Windows Azure平台及服务(PaaS)的重要组成部分,提供两种计算角色(Web Role和Work Role),可构建高可用的分布式云应用程序或服务,并支持自动化应用部署和资源的弹性伸缩。其特点有(不限于):
  1.支持多种开发语言,例如C#,VB,C++,Java,PHP,Node.js,Python
  2.支持分层架构,以构建大型复杂的分布式应用系统
  3.提供本地模拟器,便于开发人员本地调试和测试
  4.部署流线式和自动化,快速将应用部署到Windows Azure的测试(Stage)或生产环境中
  5.在无业务中断情况下,运行时修改资源配置
  6.支持Windows Azure虚拟网络(Virtual Network)
  7.提供Diagnostics功能,从运行的应用程序收集诊断数据


结合应用特性选择服务
  不同的企业所处的行业、IT成熟度、对数据安全和成本的敏感度等方面存在着差异,所以,在面对Windows Azure上运行什么应用这个问题时,各企业也有着不同的判断依据和规划。总体上说,当应用需要具有以下特征时,可以更好的利用Windows Azure的能力和特性,降低总体拥有成本(TCO)。
高可用——Windows Azure的虚拟机和云服务提供了99.9%的SLA
高扩展性——Windows Azure的虚拟机提供了垂直扩展(Scale-up)能力,云服务提供了横向和垂直扩展(Scale-out和Scale-up)能力
互联网接入——Windows Azure的虚拟机和云服务可部署在微软全球数据中心中
  确定应用后,接下来考虑的是技术实现方案,如何选择虚拟机或者云服务呢,下表给出一些通用的考量点,供决策参考使用:

 

 

 

虚拟机参考案例:安防视频监控系统
  我们帮助过一家安防领域的企业将其视频监控系统迁移到Windows Azure上。该系统收集远程摄像头发送的实时视频流,由流媒体服务器接受并保存;用户通过浏览器访问门户,可以查看实时视频或监控录像,管理员登录管理服务器对整个系统进行管理和监控。传统的本地部署方式要求客户具备数据机房以部署和运行后台系统,并确保摄像头和数据机房的网络连接,造成项目施工周期长,并产生相应的固定资产投入和运维成本,系统的可靠性、安全性也难以保证,从而增加了项目总拥有成本;同时,一些中小型客户尚不具备硬软件环境和运维能力。所以,为了实现业务覆盖更多的地区,服务更多的客户,提供更加优质的服务,该企业决定采用Windows Azure实现系统集中化部署和运维。


  作为一个基于Java架构、经过多年发展已经成熟稳定的应用系统,需要在现阶段快速、平稳的迁移到Windows Azure。因此,我们决定采用虚拟机服务实现这一目标,技术架构如下图所示:

 

 

    1.首先,创建一个地缘组(Affinity Group),确保虚拟机被部署在同一个数据中心中;


  2.使用地缘组,创建一个虚拟网络(Virtual Network),用于形成一个内部网络,降低系统模块间的数据访问网络延迟;
  3.创建虚拟机(Virtual Machine), 将所有虚拟机放置在该虚拟网络中,并安装系统组件;


  4.为提高系统可用性,选择使用两台虚拟机运行管理服务器,并将它们放置在一个可用性组中(Availability Set),确保99.95%的高可用性;


  5.为提高数据库可用性,使用两台虚拟机运行MySQL数据库,采用Active/Standby模式,默认情况下,主数据库服务器运行;


  6.BS服务器和管理服务器虚拟机上配置终结点(Endpoints),确保普通用户和管理员可以访问相应的门户。


  Windows Azure支持CentOS、Ubuntu和SUSE等类型Linux操作系统,提供多种可选的虚拟机配置规格,例如Extra Small、Small、Medium、Large、Extra Large等。在系统迁移过程中,并根据组件对操作系统、计算资源和带宽要求,我们选择了CentOS系统,以及Medium和Large两种配置,通过Windows Azure的管理门户或者Powershell命令,在数分钟内即可创建一台虚拟机,然后,将系统原封不动地安装到虚拟机上。


  与传统方式使用本地磁盘作为视频文件的存储介质不同,我们选择使用Windows Azure的数据磁盘(Data Disk)保存视频文件。Data Disk作为页Blob存储在存储帐号的Blobs服务中,利用Windows Azure的云存储技术,确保数据持久性、性能、扩展性和稳定性。但必须清楚的是,Data Disk实际上是一种可以挂接在虚拟机上的网络磁盘,磁盘读写(Disk I/O)性能不可避免的会受到网络延迟影响,另外,由于Blobs服务是多租户的,Windows Azure对Data Disk的磁盘读写进行了限制。所以,单块Data Disk的读写性能显然会弱于本地磁盘读写。


  因此,为满足系统的业务指标,我们对磁盘做了优化,采用多块Data Disk挂接在视频服务器上,组建Raid 0磁盘阵列,通过这种横向扩展的方式以提供磁盘读写吞吐量。测试结果显示,这种方式是可行并有效的,例如使用Large规格虚拟机(带宽限制是400Mbps),挂接8块Data Disk组成Raid 0磁盘阵列,可以支持50路8Mbps带宽的视频流,丢包率控制在3%左右,满足业务要求。


  目前,我们将系统部署在北部数据中心,将来也可以利用Windows Azure虚拟机的可移动性,将虚拟磁盘(VHDs)拷贝至东部数据中心,并快速的搭建系统,提供业务的敏捷性。同时,Windows Azure的数据中心支持多家主流运营商的网络接入,以应对企业和客户可能面临的网络带宽和延迟问题。


  通过该视频监控系统案例,我们可以看到如何利用虚拟机服务和虚拟网络构建完整的基础架构,将系统快速的部署到云端。


  云服务参考案例:电视台投票系统
  近年来随着移动互联的发展,某电视台除了为观众播放节目内容和资讯外,希望引入实时双向的交流模式,以增强节目与观众的互动性。因此,电视台决定将一年一度的选美比赛开发的投票系统运行在Windows Azure上,观众可以投票支持他们喜欢的佳丽角逐奖项,而投票结果在节目中实时公布。


  这套系统的挑战是显而易见的:数百万观众在十几分钟内通过手持设备提交投票,意味着系统需要支撑每秒数千个请求以确保投票的稳定运行。这是一种典型的云计算模式(Predictable Burst),可以预见到在节目时间段系统的工作量将急速上升,与平时相比,需要增加大量的基础架构资源来提高系统的吞吐能力,确保系统能够正常的处理用户请求,避免请求拒绝、响应时间过长,甚至系统宕机等异常发生。为了降低前期投资,快速的开发应用,能够短时间处理激增流量,我们选择了具有高扩展性和可用性的云服务来构建和运行该系统。

 

 

  1.ASP.NET Web Role负责接收来自客户端的请求。值得注意的是,客户往往会认为只要将现有应用运行在云计算上,就天然的具备了横向扩展能力,其实不然,尽管Windows Azure提供了支持横向扩展的基础架构和服务,但在应用架构设计时,应遵循角色实例无状态性(Stateless)原则。也就是说,应用在Web Role实例中不应存取本地文件或数据,而是将会话状态和缓存保存在独享缓存服务(Dedicated Caching)中,其它数据可以通过投票服务保存到数据库或者Windows Azure存储服务中。这样一来,Web Role实例在本地不存储数据,当动态增加或减少角色实例时,负载均衡设备通过轮询机制可能将请求路由到不同的实例上,但处理结果应该是一致的;


  2.投票服务Web Role负责统计和查询投票信息,校验投票的有效性,记录投票信息等。与ASP.NET Web Role的分离设计,可以确保无论在界面层还是业务处理层,都可以根据预计负载情况进行横向扩展;


  3.短信网络由电信运营商提供,所以投票系统利用虚拟网络(Virtual Network)在投票系统与短信网络之间建立VPN通道,保证短信发送的可靠性及降低网络时延;


  4.使用了Windows Azure SQL Database保存和读取用户权限、投票等所有数据。


  5.观众通过手机、平板或电脑访问ASP.NET Web Role投票页面,投票结果经过后台处理被保存到数据库中。而主办方在节目现场通过客户端应用可以浏览和统计投票结果,决定奖项的归属。


  投票系统设计容量是在2小时内支持数百万人次的页面访问,高峰期间(10分钟)支持最大每秒5000个投票请求。系统设计时考虑了以下原则:


分层设计,系统由界面层(ASP.NET Web Role)、业务处理层(投票服务Web Role)和数据库层(SQL Database);


无状态设计,为了支持ASP.NET Web Role实例的横向扩展,采用Windows Azure缓存服务管理会话状态;业务数据放置在SQL Database中,投票服务Web Role实例不保存任何业务数据,同样支持横向扩展;


数据分片设计,考虑到SQL Database单实例的容量和并发连接限制,采用SQL Federation实现投票数据的水平分片(Horizontal Partition),数据查找逻辑由投票服务Web Role进行控制。


  经过性能和压力测试,系统部署使用了上千个CPU核数(Cores),合计上百台虚拟机。投票系统从设计、开发、测试到上线,仅用了六个星期。活动举办期间,Windows Azure数据中心和投票系统运行正常,未接到延误或故障情况出现的报告。


  小结


  通过这篇文章,希望更多的朋友能够了解Windows Azure的虚拟机和云服务,并在制定应用的Windows Azure迁移计划时选择合适的服务,以满足应用设计目标,并最大化

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢