Windows Azure

来源:互联网 发布:数学软件那些好 编辑:程序博客网 时间:2024/04/28 14:40

Windows Azure是由微软所发展的一套云计算操作系统,用来提供云在线服务所需要的操作系统与基础储存与管理的平台,是微软的云计算的核心组成元件之一,以及微软在线服务策略的一部份。

Windows Azure Platform一开始提供的是平台即服务(PaaS),在 2012 Spring Release 时,正式开放了基础建设即服务 (IaaS) 的相关解决方案。

目录

 [隐藏] 
  • 1概观
  • 2架构
    • 2.1Fabric Controller
    • 2.2Windows Azure Host OS
    • 2.3网络基础架构与应用程序部署模型
  • 3虚拟机器操作系统
  • 4应用程序执行环境
    • 4.1Web Role
    • 4.2Worker Role
    • 4.3Windows Azure Virtual Machine
    • 4.4Windows Azure Website
  • 5储存服务
    • 5.1BLOB
    • 5.2Table
    • 5.3Queue
    • 5.4异地备援
  • 6网络与快取服务
  • 7服务管理
    • 7.1管理使用者接口
    • 7.2服务管理接口
    • 7.3远端桌面
    • 7.4多管理员模式
  • 8应用程序开发支持
  • 9参考
  • 10外部链接

[编辑]概观

Windows Azure(以及Azure服务平台)由微软首席软件架构师雷·奥兹(Ray Ozzie)在2008年10月27日于2008年在微软年度的专业开发人员大会中发表,并于在2010年2月正式开始商业运转(General Availability)[1]。微软为因应Windows Azure的营运需求,开始在全球主要地点建设资料中心,目前已正式营运的七个资料中心分别在:美国的芝加哥、圣安东尼奥及得克萨斯、爱尔兰的都柏林、荷兰阿姆斯特丹;新加坡及中国的香港。[2]

2012年4月5日,微软宣布在美国增加 West 与 East 两座资料中心。[3]

2012 Spring Release 后,目前已有89个国家可以使用Windows Azure Platform服务[4]

[编辑]架构

Windows Azure是专为在微软建设的资料中心管理所有服务器,网络以及储存资源所开发的一种特殊版本Windows Server操作系统,它具有针对资料中心架构的自我管理(autonomous)机能,可以自动监控划分在资料中心数个不同的分区(微软将这些分区称为Fault Domain)的所有服务器与储存资源,自动更新修补程序,自动执行虚拟机器部署与镜像备份(Snapshot Backup)等能力,Windows Azure被安装在资料中心的所有服务器中,并且定时和中控软件:Windows Azure Fabric Controller进行沟通,接收指令以及回传执行状态资料等等,系统管理人员只要透过Windows Azure Fabric Controller就能够掌握所有服务器的执行状态,Fabric Controller本身是融合了很多微软系统管理技术的总成,包含对虚拟机器的管理(System Center Virtual Machine Manager),对作业环境的管理(System Center Operation Manager),以及对软件部署的管理(System Center Configuration Manager)等,在Fabric Controller中被发挥得淋漓尽致,如此才能够达成透过Fabric Controller来管理在资料中心中所有服务器的能力。

Windows Azure环境除了各式不同的虚拟机器外,它也为应用程序打造了分散式的巨量储存环境(Distributed Mass Storage),也就是Windows Azure Storage Services,应用程序可以根据不同的储存需求来选择要使用哪一种或哪几种储存的方式,以保存应用程序的资料,而微软也尽可能的提供应用程序的相容性工具或接口,以降低应用程序移转到Windows Azure上的负担。

Windows Azure不但是开发给外部的云应用程序使用的,它也作为微软许多云服务的基础平台,像SQL Azure或是Dynamic CRM Online这类的在线服务。

[编辑]Fabric Controller

Windows Azure计算资源与管理框架

Fabric Controller是管理微软资料中心的Windows Azure计算资源的中控管理系统,它负责自动化的管理资料中心内所有的实体服务器,包含由使用者要求的Windows Azure Guest OS的部署工作,定时的Hotfix修补,机器状态回报,以及管理不同版本的VM部署影像的复制等重要核心工作,Fabric Controller本身也具有高可用性,并且有一个管理Fabric Controller的子系统(称为"Utility" Fabric Controller)来管理与监控Fabric Controller的运作。

Fabric Controller也处理虚拟机器的健康管理(Health Management)工作,当Windows Azure Guest OS发生当机时,会由Fabric Controller自动选择不同的实体机器重新部署与启动。当应用程序提交即地更新(In-place upgrade)时,Fabric Controller也负责即地更新的协调工作,以保持应用程序在更新时仍可保持SLA所承诺的服务水平。

[编辑]Windows Azure Host OS

在Fabric Controller之上与Windows Azure Guest OS之间,是由Fabric Controller在建置实体服务器时所部署的Windows Azure Host OS,它是一个特制版本的Hyper-V Server,负责实体服务器内的Hypervisor虚拟平台层,总管其上的Windows Azure Guest OS群,同时它内含一个Fabric Agent中控软件,以回报目前虚拟机器的各项资讯给Fabric Controller,同时让应用程序可以利用事件处理的方式来判断与针对目前Fabric Agent控制虚拟机器的状态做回应与控制。而依照不同的虚拟机器的等级,其执行的Windows Server 2008操作系统也不一样。

[编辑]网络基础架构与应用程序部署模型

Windows Azure网络与计算资源部署架构

Windows Azure本身的设计是负责处理大量分散式计算的工作,并且符合云计算的特性,因此应用程序在Windows Azure上可以自由设定一个或多个执行个体(Computes Instances),并且利用Windows Azure平台的特性,应用程序可切割为处理使用者接口服务的Web应用程序,以及专门处理背景计算或资料处理工作的服务应用程序(Service Application),后端则可以用Windows Azure Storages或是SQL Azure数据库来储存资料。

为了处理单一应用程序多份执行个体的平衡负载,Windows Azure的Hypervisor层都有内建Windows Azure Load Balancer(LB),它会将连入应用程序的连线进行负载分配,以维持每个执行个体都有足够且合理的负载量。而在Windows Azure内部网络的所有虚拟与实体机器,都由Fabric Controller来自动配署IP位置与通讯埠,在默认的情况下Fabric Controller对外只会开放Port 80与443 (for SSL),若应用程序需要特殊的连接埠时,要在应用程序本身的服务组态档中登录需要的终端点(Endpoint),Fabric Controller会配置适当的IP终端点资源给应用程序。

[编辑]虚拟机器操作系统

Windows Azure上所运行的虚拟机器(Guest OS),被称为计算单元(Compute Unit),以最基础的小型计算单元为基础,共分为五种类型,不同的类型有不同的硬件资源,操作系统与单价。以一个小型计算资源来说,它拥有1.6GHz的CPU,1.75GB的内存,以及225GB的硬盘空间,同时它的I/O优先权为中级。而在它之上的有中型(Medium),大型(Large)与超大型(Extra Large)三种,依2的倍数来强化虚拟机器的可用资源[5]

VM大小CPURAM本地储存大小I/O优先权Extra Small(XS)1 * 1.0GHz768MB20GB低Small1 * 1.6GHz1.75GB225GB中Medium2 * 1.6GHz3.5GB490GB高Large4 * 1.6GHz7GB1000GB高Extra Large(XL)8 * 1.6GHz14GB2040GB高

目前在Windows Azure上,已经部署了数个版本的操作系统,分别是1.0-1.10 (Windows Server 2008 SP2)以及2.0-2.2版(Windows Server 2008 R2)[6],部署在Windows Azure虚拟机器上的操作系统,被称为Windows Azure Guest OS,但其实是Windows Server 2008 x64企业版操作系统的虚拟化版本。每个不同的版本都会安装不同的功能与修补程序,而使用者可以选择可相容自己开发的应用程序的操作系统版本。

版本操作系统平台版次2.xWindows Server 2008 R22.0-2.21.xWindows Server 2008 (SP2)1.0-1.10

[编辑]应用程序执行环境

Windows Azure是以作为云计算的平台即服务环境所设计,在Windows Azure平台上提供了四种不同的应用程序角色(application role)[7],分别代表不同的应用程序执行环境(Runtime Environment)。

[编辑]Web Role

Web Role是已安装并设定好IIS 7.0执行环境的Windows Server 2008 x64操作系统,开发人员可利用Web Role来挂载HTTP-based的应用程序,包括ASP.NET,PHP(FastCGI),JSP或是HTTP-hosted WCF应用程序,它通常会被作为Web应用程序的使用者服务端,Fabric Agent的启动程序会自动将应用程序档案组态并挂载到IIS执行空间内。虽然Web Role默认只开放HTTP Port 80/443,但开发人员仍可利用组态档设定要要求Fabric Controller指派更多的通讯埠。而透过IIS 7.0本身的特性,新版本的Web Role中可支持Full IIS模式,即开发人员可透过服务组态档在同一个Web Role中设定多个网站或单一网站(Site)内多个虚拟目录(Virtual Directory),更扩大了Web Role的应用弹性。

在 2012 Spring Release 中,Web Role 可支持 ASP.NET, ASP.NET MVC3, ASP.NET MVC4, Silverlight RIA 等应用程序。

[编辑]Worker Role

Worker Role可类比于本机Windows操作系统(NT核心)上的Windows Service应用程序,它是一个无使用者接口的应用程序角色,开发人员可以利用Worker Role来执行不需使用者接口的大量计算工作,或是利用Worker Role进行MapReduce型的分散式计算,以有效的利用云上的计算资源,Worker Role也可作为处理高负载资料存取或执行商业逻辑的应用程序。

在 2012 Spring Release 中,Worker Role 新增了 Cache Worker Role (搭载本地快取引擎的 Worker Role) 以及 Worker Role with Service Bus Queue (处理 Service Bus Queue 专用的 Worker Role) 两种。

[编辑]Windows Azure Virtual Machine

Windows Azure Virtual Machine 服务[8]是 Windows Azure 正式开放基础建设服务的重要里程碑,它的前身是 VM Role。

VM Role是在2010年10月28日于微软PDC 2010上宣布的新应用程序角色,VM Role是一个类似于IaaS层次的服务,它和Web Role与Worker Role最大的不同是,VM Role允许由企业使用Hyper-V自行安装与组态基本的操作系统与应用程序元件,并储存基础磁盘 (Base Disk Image)和差异磁盘影像(Differential Disk Image),再上传到Windows Azure云环境,此时Fabric Controller会将这个磁盘保存到以订阅帐户为主的影像储存库(Subscription-based Image Repository)中,订阅帐户的使用者就可以利用这个影像在Windows Azure中部署应用程序角色的虚拟机器。这对企业在移转应用程序到云的需求上提供了相当大弹性的支持。VM Role的计费模式与Web Role/Worker Role相同,企业可选择在差异磁盘中安装Windows Server 2008 R2 (未来可支持到Windows Server 2003与Windows Server 2008 SP2),其操作系统授权已包含于云环境的计算资源计费[9]

而 Virtual Machine 则更进一步的在资料中心内直接提供 VM 所需要的操作系统 VHDs,不需一定要企业自行制作,而且 VHDs 也可以由使用者在线上产生,而最后的储存地会是在使用者的 BLOB storage 空间内。

Virtual Machine 服务不但可以支持 Windows Server,也同时支持 OpenSUSE 12.1, CentOS 6.2, Ubuntu 12.04, SUSE Enterprise Linux 11 SP2 等 Linux 操作系统[10]

不论是Web Role,Worker Role还是VM Role,都可以设定一个以上的执行个体(instance),每个执行个体都是独立的虚拟机器,Windows Azure Fabric Controller中的Load Balancer(平衡负载器)会自动分配负载到不同的instance中。也因为如此,不论是运行在Web Role上的Web应用程序,或是运行在Worker的服务应用程序,都要考虑可能的跨实体(cross instance)以及不同实体通讯(inter-role or inter-instance communication)的设计。

[编辑]Windows Azure Website

Website 是 Windows Azure 基于 Web Role 上开发的新服务,它允许开发人员在 Website 的 VM 内新增 MySQL 的数据库,而其内的 IIS 也安装有 PHP 执行环境和 .NET Framework,开发人员除了可以透过 Visual Studio, GitHub, Team Foundation Services 或 WebMatrix 做网站发行与编修外,亦可直接由 Gallery 选择像 WordPress, Drupal, Orchard CMS 等知名的大型开放源代码应用程序直接部署[11]

[编辑]储存服务

Windows Azure提供了三种不同格式的储存体服务(Storage Services),用来提供给Windows Azure上运行的应用程序储存资料使用。依据不同的储存格式会有不同的限制,因为这些储存服务都是以分散式巨量储存(Distributed Mass Storage)为核心概念所设计出来的,为了要达成快速在分散式储存空间中储存与管理资料(还包含高可用度的赘余储存管理),微软有在资料的储存上做一些限制。

不论是哪一种储存服务,Windows Azure都有显露REST API[12],并符合Simple Cloud的标准[13]

[编辑]BLOB

BLOB(大型二进制物件)资料是用来储存像是档案,图片,视讯档,可执行档,压缩档等二进制格式的档案,基本上它的储存单位就是档案,为了要让BLOB的功能应用更宽广,微软也在BLOB服务上开发了内容传递网络(Content Delivery Network)的服务,让BLOB可以作为大容量的档案或资料储存与供应的地方,以支持类似YouTube这样的大型Web应用程序的服务。

BLOB依照性质分为两种:

  • Block BLOB(区块型BLOB储存体),这类的储存以4MB为一个区块单位,单一档案最大可以储存200GB,且区块不会连续储存,可能会打散到不同的储存服务器中存放,当应用程序要求时,会依照档案的Key以及区块由储存区提取资料。另外,区块在储存时会经过一道认可程序,以让应用程序决定是否要重新传送。
  • Page BLOB(分页型BLOB储存体),它会在储存区中划分一个连续的区域供应用程序存放资料,它本身可以视为一个大型的VHD(虚拟机器磁盘),在Page BLOB的资料写入会直接认可。而基于Page BLOB的特性,微软特别在Page BLOB上提供了一组将Page BLOB虚拟成磁盘的功能,称为Windows Azure Drive(研发代号为XDrive),它能够支持NTFS API,也就是说应用程序可以利用现有的档案管理API(包含System.IO的类别)来存取Windows Azure Drive中的资料夹与档案资料,并且这些资料会保存在Windows Azure资料中心内。

BLOB服务由BLOB本身以及其收纳容器(Container)构成,容器可视为一般本机上的资料夹。而容器和BLOB都支持额外的Metadata设定,这些Metadata会附挂在HTTP Header中传输给用户端,每一个Metadata的大小限制为8KB。BLOB也支持权限管理的功能,透过Shared Access Signature可设定BLOB或Container的存取权限与有效期限等。

private void EnsureContainerExists(){    var container = GetContainer();    container.CreateIfNotExist();     var permissions = container.GetPermissions();    permissions.PublicAccess = BlobContainerPublicAccessType.Container;    container.SetPermissions(permissions);} private CloudBlobContainer GetContainer(){    var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");    var client = account.CreateCloudBlobClient();     return client.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue("ContainerName"));}

[编辑]Table

Table(表格)是给具结构化资料的应用程序储存与管理的一种储存服务,它在Windows Azure储存区中会以Key-Value键值对方式储存,并且由Partition来切割在Windows Azure储存区的储存位置,它实际的资料是XML,透过REST API呼叫时,会需要依据SDK上的说明,自行建置XML的要求与解析回应的资料,但若是.NET Framework的开发人员,在Windows Azure SDK中提供的Microsoft.WindowsAzure.StorageClient命名空间就有提供辅助的API以及类别,将这件事在API中处理掉了。SDK提供的辅助组件所应用的技术是WCF Data Services,因此若对WCF Data Services熟悉的开发人员,会很容易的上手Table储存的开发。

namespace TableExample{    public class Contact : TableServiceEntity    {        public string Name { get; set; }        public string Address { get; set; }        public string Phone { get; set; }        public string Cellphone { get; set; }         public Contact()        {            base.PartitionKey = "ContactTable";            base.RowKey = Guid.NewGuid().ToString();        }    }}

虽然Table可以储存结构化的资料,但它并不是关联性数据库,所以像是join,汇总函数等都无法使用,要由开发人员另外处理。

[编辑]Queue

Queue(伫列)是一种先到先服务(First-Come, First-Serve),或称为FIFO(先入先出)的储存服务,它可以允许应用程序将讯息储存到伫列中排队,然后由负责处理的应用程序(通常是Worker)由伫列提取讯息并处理以后,将讯息由伫列中移除。讯息可以是字串或是最长8KB的二进制资料,伫列经常会作为跨执行个体通讯以及工作切割通知的讯息传递之用。

protected void cmdAddQueue_Click(object sender, EventArgs e){    CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");    CloudQueueClient queueClient = account.CreateCloudQueueClient();    CloudQueue queue = queueClient.GetQueueReference("theaterseatorders");     queue.CreateIfNotExist();     queue.AddMessage(new CloudQueueMessage("SEATNUM=1-1,EMAIL=test@test.com"));    queue = null;}

[编辑]异地备援

自 v1.5 版起的 Windows Azure Storage Services,开始支持异地备援 (Geo-replication) 的功能[14],只要应用程序将资料传送到 TABLE 或 BLOB 储存,Windows Azure 会自动将资料往邻近的资料中心传递,以备援储存服务,当主要的资料中心发生断线或是无法提供服务时,Windows Azure 核心中的 DNS Service 会自动将要求导向到备援的资料中心继续提供服务。

  • 异地备援所产生的网络与储存成本由微软自行吸收,不另计费。
  • 异地备援的工作是异步且自动化,应用程序无需做任何修改。
  • 异地备援可以透过联系 Windows Azure 支持团队的方式停用。

[编辑]网络与快取服务

Windows Azure平台对外透过了内容散布服务(Content Delivery Network)来进行内容大量快取与散布的能力,以让Windows Azure上的应用程序可以利用它来提供快速且大量内容的服务[15],截至目前为止,Windows Azure在全球有22个实体散布机房[16],亚太地区包含了日本,韩国,台湾,香港与新加坡等地均设有机房。

为了要让Windows Azure应用程序或是VM Role可以更方便的与本地端电脑连接,Windows Azure提供了与虚拟私人网络(VPN)相同能力的Windows Azure Connect服务[17],本地端可以利用此服务,在Windows Azure应用程序所在的VM与本地端电脑之间,建立以IPSec为主的私人网络环境,Windows Azure应用程序即可以电脑名称的方式直接与本地端电脑连接并存取资料。

在 2012 Spring Release 中,Windows Azure 扩张了网络功能以支持 Virtual Machine 服务,允许企业的 IT 人员自行设定网络节点,包含网段,路由表以及 DNS 等服务环境[18]

[编辑]服务管理

Windows Azure平台的管理可分为由微软提供的管理使用者接口(Management Portal)以及可编程化的服务管理接口(Service Management API)两个部份,而在PDC 2010中,微软又宣布了远端桌面管理功能以及多管理员的设定。

[编辑]管理使用者接口

Windows Azure管理入口 (Management Portal)

Windows Azure的管理网站 (https://windows.azure.com) 提供一个Web-based GUI管理接口,供管理人员与开发人员可使用浏览器于在线管理Windows Azure的各式资源,包含Computes Instances, Storage以及服务管理的部份,以及SQL Azure和Windows Azure ) AppFabric等平台服务功能。

微软于2010年11月30日发表全新以Silverlight开发的管理接口,此管理接口以现有的服务管理API开发,具有较丰富的互动性使用者经验(UX)。

2011年8月,微软宣布管理接口正式提供11个国家的本地化接口,包含繁体中文与简体中文均有支持[19]

2012 Spring Release 中,微软再次更新管理接口,以 HTML5 打造的新管理接口具有较快的回应速度以及具亲和力的操作接口等[20]

[编辑]服务管理接口

Windows Azure基于云计算的特性以及开发工具的需要,在Fabric Agent上有显露REST API供外部应用程序呼叫,以自动化执行服务管理(Service Management)的功能。服务管理的项目包含了部署(deployment),更新(upgrade),编辑组态(configuration changes)以及环境切换(virtual IP swap)等功能,这些功能除了可以在Windows Azure在线管理工具外,Visual Studio Tools for Windows Azure 1.2版也开始支持在开发工具中直接执行服务管理的能力,只要在Windows Azure在线管理工具中登录管理凭证(management certification)即可(最多可登录五个)。

[编辑]远端桌面

在2010年10月28日的PDC 2010中,微软宣布在应用程序角色中加入远端桌面连线(Remote Desktop Connection)的管理能力,管理人员可以利用远端桌面的用户端程序连到在云中的虚拟机器,以实际调控应用程序的组态或设定档等。

[编辑]多管理员模式

多位服务管理员(Multiple Service Administrators)模式是PDC 2010宣布,并配合Silverlight-based管理接口上线时开始提供,允许管理人员登录多个使用者的Windows Live ID以授权使用者服务管理的权力。

现阶段Windows Azure并没有提供自动化的Scale-Out(向外扩张)机制,但在MSDN Code Center中有提供针对服务自动化Scale-Out机制的范例程序让开发人员套用,以支持服务Scale-Out的机能[21]

[编辑]应用程序开发支持

Windows Azure在每个不同版本间都有发表SDK套件以供开发人员开发可执行在Windows Azure执行的云应用程序(Cloud Application),而微软重量级开发工具Visual Studio也透过外挂的Visual Studio Tools for Windows Azure让开发人员能利用Visual Studio的Cloud Project来自动化管理云应用程序部署所需要的Service Definition以及Service Configuration设定档,并可加入新专案或现有专案为云应用程序角色(Web Role or Worker Role)之一,并进一步设定储存连接设定,计算资源大小以及内部连接资讯等等。

Windows Azure SDK除了文件、工具和必要的支持函式库以外,还包含了在本机使用的Windows Azure模拟环境(Emulators),称为Compute Emulator (原称 Development Fabric) 以及Storage Emulator (原称 Development Storage)。

  • Compute Emulator会模拟Windows Azure的VM环境以供开发人员在本机测试用,同时也可以让开发人员直接在本机上监看应用程序的诊断输出以及在状态变更时应用程序处理的行为等。
  • Storage Emulator会利用本机上的SQL Server数据库来模拟Windows Azure Storage的各项服务。而在 Windows Azure SDK v1.7 开始,Storage Emulator 会自动侦测并选用 LocalDB 或是现存的 SQL Express/SQL Server 执行个体[22]

Windows Azure 平台亦致力于针对非微软平台以及开放源代码阵营的支持,目前可在 Windows Azure 上使用的编程语言除 C# 与 VB 外,像 Java, PHP, Python, node.js 等均有平台,而自 2012 年的 Spring Release 开始,微软也提供了在 Linux 与 Mac 上的 Windows Azure 应用程序命令列工具[23]

[编辑]参考

  1. ^Windows Azure Platform Now Generally Available in 21 Countries
  2. ^http://news.mydrivers.com/1/149/149087.htm
  3. ^[1]
  4. ^http://blogs.msdn.com/b/windowsazure/archive/2012/06/07/now-available-new-services-and-enhancements-to-windows-azure.aspx
  5. ^Windows Azure Offer
  6. ^Windows Azure Guest OS Compatibility Matrix
  7. ^Overview of a Windows Azure Application
  8. ^Windows Virtual Machine Service
  9. ^Windows Azure FAQ
  10. ^https://www.windowsazure.com/en-us/manage/linux/tutorials/intro-to-linux/ Linux Virtual Machines]
  11. ^https://www.windowsazure.com/en-us/home/scenarios/web-sites/
  12. ^Windows Azure Storage Service REST API References
  13. ^Simple Cloud API
  14. ^Inside Windows Azure storage: what's new and under the hood deep dive @ BUILD WINDOWS
  15. ^Windows Azure CDN
  16. ^Windows Azure CDN
  17. ^Windows Azure Connect Virtual Network Service
  18. ^https://www.windowsazure.com/en-us/manage/services/networking/
  19. ^REVISED: Windows Azure Platform Management Portal Updates Now Available
  20. ^http://blogs.msdn.com/b/windowsazure/archive/2012/06/07/now-available-new-services-and-enhancements-to-windows-azure.aspx
  21. ^Windows Azure Dynamic Scaling Sample
  22. ^http://msdn.microsoft.com/en-us/library/windowsazure/gg441573
  23. ^http://msdn.microsoft.com/en-us/library/windowsazure/gg441573
原创粉丝点击