2024年1月21日发(作者:)

Windows Azure

维基百科,自由的百科全书

跳转到: 导航, 搜索

汉漢▼

Microsoft Windows Azure

(Microsoft Windows 系列的一部份)

研发

Microsoft

网站 Windows Azure官方网站

发布信息

发布日期

目前版本

2010-02-01 (1.1) 相关信息

1.5 (Windows Azure SDK 与

Visual Studio Tools 的版本)(2011-09-15) 相关信息

专有软体 源代码类型

授权 EULA+ SLA

支持状态

商业运转 (General Availability)

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

Windows Azure Platform现阶段提供的是平台即服务(PaaS),但未来可能会开放基础设施即服务(IaaS)的服务项目。

目录

[隐藏]

1 概观(Overview)

2 架构(Architecture)

o

2.1 Fabric Controller

o

2.2 Windows Azure Host OS

o

2.3 网路基础架构与应用程式部署模型

3 虚拟机器作业系统(Guest OS)

4 应用程式执行环境(Runtime Environment)

o

4.1 Web Role

o

4.2 Worker Role

o

4.3 VM Role

5 储存服务(Storage Services)

o

5.1 BLOB

o

5.2 Table

o

5.3 Queue

o

5.4 异地备援

6 网路与快取服务

7 服务管理(Service Management)

o

7.1 管理使用者介面

o

7.2 服务管理介面

o

7.3 远端桌面

o

7.4 多管理员模式

8 应用程式开发支援(Support for Development)

9 参考

10 外部链接

[编辑] 概观(Overview)

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

目前已有41个国家可以使用Windows Azure Platform服务。

[编辑] 架构(Architecture)

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终端点资源给应用程式。

[编辑] 虚拟机器作业系统(Guest OS)

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

VM大小

Small

Medium

Large

CPU RAM 本地储存大小 I/O优先权

Extra Small(XS) 1 * 1.0GHz 768MB 20GB

1 * 1.6GHz 1.75GB 225GB

2 * 1.6GHz 3.5GB 490GB

4 * 1.6GHz 7GB 1000GB

Extra Large(XL) 8 * 1.6GHz 14GB 2040GB

目前在Windows Azure上,已经部署了数个版本的作业系统,分别是1.0-1.10 (Windows

Server 2008 SP2)以及2.0-2.2版(Windows Server 2008 R2)[4],部署在Windows Azure虚拟机器上的作业系统,被称为Windows Azure Guest OS,但其实是Windows Server 2008

x64企业版作业系统的虚拟化版本。每个不同的版本都会安装不同的功能与修补程式,而使用者可以选择可相容自己开发的应用程式的作业系统版本。

版本 作业系统平台 版次

2.0-2.2 2.x Windows Server 2008 R2

1.x Windows Server 2008 (SP2) 1.0-1.10

[编辑] 应用程式执行环境(Runtime Environment)

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

[编辑] Web Role

Web Role是已安装并设定好IIS 7.0执行环境的Windows Server 2008 x64作业系统,开发人员可利用Web Role来挂载HTTP-based的应用程式,包括,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的应用弹性。

[编辑] Worker Role

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

[编辑] 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),其作业系统授权已包含于云端环境的运算资源计费[6]。

不论是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)的设计。

[编辑] 储存服务(Storage Services)

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

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

[编辑] 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(包含的类别)来存取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();

IfNotExist();

var permissions = missions();

Access =

ner;

missions(permissions);

}

private CloudBlobContainer GetContainer()

{

var account =

nfigurationSetting("DataConnectionString");

var client = CloudBlobClient();

return

tainerReference(figurationSettingValue("ContainerName"));

}

[编辑] Table

Table(表格)是给具结构化资料的应用程式储存与管理的一种储存服务,它在Windows

Azure储存区中会以Key-Value键值对方式储存,并且由Partition来切割在Windows

Azure储存区的储存位置,它实际的资料是XML,透过REST API呼叫时,会需要依据SDK上的说明,自行建置XML的要求与解析回应的资料,但若是.NET Framework的开发人员,在Windows Azure SDK中提供的eClient命名空间就有提供辅助的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()

{

ionKey = "ContactTable";

= d().ToString();

}

}

}

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

[编辑] Queue

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

protected void cmdAddQueue_Click(object sender, EventArgs e)

{

CloudStorageAccount account =

nfigurationSetting("DataConnectionString");

CloudQueueClient queueClient =

CloudQueueClient();

CloudQueue queue =

ueReference("theaterseatorders");

IfNotExist();

sage(new

CloudQueueMessage("SEATNUM=1-1,EMAIL=test@"));

queue = null;

}

[编辑] 异地备援

自 v1.5 版起的 Windows Azure Storage Services,开始支援异地备援

(Geo-replication) 的功能[9],只要应用程式将资料传送到 TABLE 或 BLOB 储存,Windows Azure 会自动将资料往邻近的资料中心传递,以备援储存服务,当主要的资料中心发生断线或是无法提供服务时,Windows Azure 核心中的 DNS Service 会自动将要求导向到备援的资料中心继续提供服务。

异地备援所产生的网路与储存成本由微软自行吸收,不另计费。

异地备援的工作是非同步且自动化,应用程式无需做任何修改。

异地备援可以透过联系 Windows Azure 支援团队的方式停用。

[编辑] 网路与快取服务

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

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

[编辑] 服务管理(Service Management)

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

[编辑] 管理使用者介面

Windows Azure管理入口 (Management Portal)

Windows Azure的管理网站 () 提供一个Web-based GUI管理介面,供管理人员与开发人员可使用浏览器于线上管理Windows Azure的各式资源,包含Computes Instances, Storage以及服务管理的部份,以及SQL Azure和Windows

Azure ) AppFabric等平台服务功能。

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

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

[编辑] 服务管理介面

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的机能[14]。

[编辑] 应用程式开发支援(Support for

Development)

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),称为Development Fabric以及Development

Storage。

Development Fabric会模拟Windows Azure的VM环境以供开发人员在本机测试用,同时也可以让开发人员直接在本机上监看应用程式的诊断输出以及在状态变更时应用程式处理的行为等。

Development Storage会利用本机上的SQL Server资料库来模拟Windows Azure

Storage的各项服务。

针对非微软平台,微软透过像Interoperability Bridge提供针对PHP, Ruby, Java,

Perl等非微软平台工具,以及Eclipse IDE的扩充能力,以支援Windows Azure开发的功能。

[15]