Microsoft Azure

维基百科,自由的百科全书
(重定向自Windows Azure
跳转至: 导航搜索
Microsoft Azure
Microsoft Windows系列的一部分
WindowsAzureLogo.png
开发人员
Microsoft
网站 Microsoft Azure
发布
初始版本 2010-02-01 (1.1)   [資訊]
稳定的发行版 2012 Spring Release (2012-06-07)   [資訊]
源模型 專有軟體
许可证 EULA+ SLA
支持状态
商業運轉 (General Availability)

Microsoft Azure是由微軟所發展的一套雲端運算作業系統,用來提供雲端線上服務所需要的作業系統與基礎儲存與管理的平台,是微軟的雲端運算的核心組成元件之一,以及微軟線上服務策略的一部份。

Microsoft Azure一開始提供的是平台即服務(PaaS),在 2012 Spring Release 時,正式開放了基礎建設即服務 (IaaS) 的相關解決方案。

概觀[编辑]

Microsoft 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 後,目前已有90個國家可以使用Windows Azure Platform服務[4]

2013年5月22日,上海-微软公司宣布由世纪互联运营的微软 Windows Azure 公有云平台及服务正式在中国落地,公众预览(www.windowsazure.cn)于6月6日正式上线。微软是首个将公有云服务落地到中国的跨国公司。[5]

Windows Azure 是 Microsoft 为公有云提供的应用程序平台。您可以多种不同方式使用此平台。例如,可以使用 Windows Azure 构建一个在 Microsoft 数据中心运行并存储其数据的 Web 应用程序。或者只使用 Windows Azure 存储数据,而使用此数据的应用程序则在本地(即公有云之外)运行。可以使用 Windows Azure 创建虚拟机以用于开发和测试,或运行 SharePoint 和其他应用程序。可以使用 Windows Azure 构建拥有海量用户的高度可缩放应用程序。因为此平台提供了种类广泛的服务,所以所有这些想法都有可能实现。

由中国世纪互联运营Microsoft Azure平台[编辑]

在中国,Microsoft Azure由世纪互联运营。世纪互联是中国最大的电信运营商中立互联网数据中心服务提供商,微软将技术授权给世纪互联。世纪互联通过这些技术,结合自身运营经验,为中国用户提供 Microsoft Azure服务。微软在包括平台支持、技术支持在内的多个领域协助世纪互联。Microsoft Azure在中国运行于北部和东部两个主要城市的数据中心,将帮助客户解决异地灾备问题。数据中心将有多家主流运营商接入,以此提高网络服务性能。[6]

架構[编辑]

Microsoft 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來管理在資料中心中所有伺服器的能力。

Microsoft Azure環境除了各式不同的虛擬機器外,它也為應用程式打造了分散式的巨量儲存環境(Distributed Mass Storage),也就是Windows Azure Storage Services,應用程式可以根據不同的儲存需求來選擇要使用哪一種或哪幾種儲存的方式,以保存應用程式的資料,而微軟也盡可能的提供應用程式的相容性工具或介面,以降低應用程式移轉到Windows Azure上的負擔。

Microsoft Azure不但是開發給外部的雲端應用程式使用的,它也作為微軟許多雲端服務的基礎平台,像Windows Azure SQL Database或是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所承諾的服務水準。

Microsoft AzureHost OS[编辑]

在Fabric Controller之上與Microsoft AzureGuest 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網路與運算資源部署架構

Microsoft 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終端點資源給應用程式。

虛擬機器作業系統[编辑]

Microsoft Azure上所運行的虛擬機器(Guest OS),被稱為運算單元(Compute Unit),以最基礎的小型運算單元為基礎,共分為五種類型,不同的類型有不同的硬體資源,作業系統與單價。以一個小型運算資源來說,它擁有1.6GHz的CPU,1.75GB的記憶體,以及225GB的硬碟空間,同時它的I/O優先權為中級。而在它之上的有中型(Medium),大型(Large)與超大型(Extra Large)三種,依2的倍數來強化虛擬機器的可用資源[7]

VM大小 CPU RAM 本地儲存大小 I/O優先權
Extra Small(XS) 1 * 1.0GHz 768MB 20GB
Small 1 * 1.6GHz 1.75GB 225GB
Medium 2 * 1.6GHz 3.5GB 490GB
Large 4 * 1.6GHz 7GB 1000GB
Extra Large(XL) 8 * 1.6GHz 14GB 2040GB

目前在Microsoft Azure上,已經部署了數個版本的作業系統[8],部署在Windows Azure虛擬機器上的作業系統,被稱為Windows Azure Guest OS,但其實是Windows Server 2008 x64企業版作業系統的虛擬化版本。每個不同的版本都會安裝不同的功能與修補程式,而使用者可以選擇可相容自己開發的應用程式的作業系統版本。

版本 作業系統平台 版次
3.x Windows Server 2012 3.0-3.1
2.x Windows Server 2008 R2 2.9-2.13
1.x Windows Server 2008 (SP2) 1.17-1.21

應用程式執行環境[编辑]

Microsoft Azure是以作為雲端運算的平台即服務環境所設計,在Microsoft Azure平台上提供了四種不同的應用程式角色(application role)[9],分別代表不同的應用程式執行環境(Runtime Environment)。

Web Role[编辑]

Web Role是已安裝並設定好IIS 7.0執行環境的Windows Server 2008 x64作業系統,開發人員可利用Web Role來掛載HTTP-based的應用程式,包括ASP.NETPHP(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) 兩種。

Microsoft AzureVirtual Machine[编辑]

Windows Azure Virtual Machine 服務[10]是 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),其作業系統授權已包含於雲端環境的運算資源計費[11]

而 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 作業系統[12]

不論是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)的設計。

Microsoft AzureWebsite[编辑]

Website 是 Microsoft Azure基於 Web Role 上開發的新服務,它允許開發人員在 Website 的 VM 內新增 MySQL 的資料庫,而其內的 IIS 也安裝有 PHP 執行環境和 .NET Framework,開發人員除了可以透過 Visual Studio, GitHub, Team Foundation Services 或 WebMatrix 做網站發行與編修外,亦可直接由 Gallery 選擇像 WordPress, Drupal, Orchard CMS 等知名的大型開放原始碼應用程式直接部署 [13]

儲存服務[编辑]

Windows Azure提供了三種不同格式的儲存體服務(Storage Services),用來提供給Windows Azure上運行的應用程式儲存資料使用。依據不同的儲存格式會有不同的限制,因為這些儲存服務都是以分散式巨量儲存(Distributed Mass Storage)為核心概念所設計出來的,為了要達成快速在分散式儲存空間中儲存與管理資料(還包含高可用度的贅餘儲存管理),微軟有在資料的儲存上做一些限制。

不論是哪一種儲存服務,Windows Azure都有顯露REST API[14],並符合Simple Cloud的標準[15]

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) 的功能[16],只要應用程式將資料傳送到 TABLE 或 BLOB 儲存,Windows Azure 會自動將資料往鄰近的資料中心傳遞,以備援儲存服務,當主要的資料中心發生斷線或是無法提供服務時,Windows Azure 核心中的 DNS Service 會自動將要求導向到備援的資料中心繼續提供服務。

  • 異地備援所產生的網路與儲存成本由微軟自行吸收,不另計費。
  • 異地備援的工作是非同步且自動化,應用程式無需做任何修改。
  • 異地備援可以透過聯繫 Windows Azure 支援團隊的方式停用。

網路與快取服務[编辑]

Windows Azure平台對外透過了內容散布服務(Content Delivery Network)來進行內容大量快取與散布的能力,以讓Windows Azure上的應用程式可以利用它來提供快速且大量內容的服務[17]。截至目前為止,Windows Azure在全球有22個實體散布機房[18],亞太地區包含了日本、韓國、台灣、香港與新加坡等地均設有機房。

為了要讓Windows Azure應用程式或是VM Role可以更方便的與本地端電腦連接,Windows Azure提供了與虛擬私人網路(VPN)相同能力的Windows Azure Connect服務[19],本地端可以利用此服務,在Windows Azure應用程式所在的VM與本地端電腦之間,建立以IPSec為主的私人網路環境,Windows Azure應用程式即可以電腦名稱的方式直接與本地端電腦連接並存取資料。

在 2012 Spring Release 中,Windows Azure 擴張了網路功能以支援 Virtual Machine 服務,允許企業的 IT 人員自行設定網路節點,包含網段、路由表以及 DNS 等服務環境[20]

服務管理[编辑]

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個國家的本地化介面,包含繁體中文與簡體中文均有支援[21]

2012 Spring Release 中,微軟再次更新管理介面,以 HTML5 打造的新管理介面具有較快的回應速度以及具親和力的操作介面等[22]

服務管理介面[编辑]

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的機能[23]

應用程式開發支援[编辑]

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 執行個體[24]

Windows Azure 平台亦致力於針對非微軟平台以及開放原始碼陣營的支援,目前可在 Windows Azure 上使用的程式語言除 C# 與 VB 外,像 Java, PHP, Python, node.js 等均有平台,而自 2012 年的 Spring Release 開始,微軟也提供了在 Linux 與 Mac 上的 Windows Azure 應用程式命令列工具[25]

參考[编辑]

外部連結[编辑]