視窗天青

視窗天青是WindowsAzure是由微軟所發展的一套雲計算作業系統,用來提供雲線上服務所需要的作業系統與基礎存儲與管理的平台,是微軟的雲計算的核心組成組件之一,以及微軟線上服務策略的一部份。WindowsAzurePlatform一開始提供的是平台即服務(PaaS),在2012SpringRelease時,正式開放了基礎建設即服務(IaaS)的相關解決方案。WindowsAzure(以及Azure服務平台)由微軟首席軟體架構師雷·奧茲(RayOzzie)在2008年10月27日於2008年在微軟年度的專業開發人員大會中發表,並於在2010年2月正式開始商業運轉(GeneralAvailability)。微軟為因應WindowsAzure的營運需求,開始在全球主要地點建設數據中心,目前已正式營運的七個數據中心分別在:美國的芝加哥、聖安東尼奧及德克薩斯、愛爾蘭的都柏林、荷蘭阿姆斯特丹;新加坡及中國的香港。2012年4月5日,微軟宣布在美國增加West與East兩座數據中心。2012SpringRelease後,目前已有89個國家可以使用WindowsAzurePlatform服務。

基本介紹

  • 中文名:視窗天青
  • 外文名:WindowsAzure
  • 廠家:微軟
  • 分類:雲計算作業系統
[編輯]架構
WindowsAzure是專為在微軟建設的數據中心管理所有伺服器,網路以及存儲資源所開發的一種特殊版本WindowsServer作業系統,它具有針對數據中心架構的自我管理(autonomous)機能,可以自動監控劃分在數據中心數個不同的分區(微軟將這些分區稱為FaultDomain)的所有伺服器與存儲資源,自動更新補丁,自動運行虛擬機部署與鏡像備份(SnapshotBackup)等能力,WindowsAzure被安裝在數據中心的所有伺服器中,並且定時和中控軟體:WindowsAzureFabricController進行溝通,接收指令以及回傳運行狀態數據等等,系統管理人員只要通過WindowsAzureFabricController就能夠掌握所有伺服器的運行狀態,FabricController本身是融合了很多微軟系統管理技術的總成,包含對虛擬機的管理(SystemCenterVirtualMachineManager),對作業環境的管理(SystemCenterOperationManager),以及對軟體部署的管理(SystemCenterConfigurationManager)等,在FabricController中被發揮得淋漓盡致,如此才能夠達成通過FabricController來管理在數據中心中所有伺服器的能力。
WindowsAzure環境除了各式不同的虛擬機外,它也為應用程式打造了分散式的巨量存儲環境(DistributedMassStorage),也就是WindowsAzureStorageServices,應用程式可以根據不同的存儲需求來選擇要使用哪一種或哪幾種存儲的方式,以保存應用程式的數據,而微軟也儘可能的提供應用程式的兼容性工具或接口,以降低應用程式移轉到WindowsAzure上的負擔。
WindowsAzure不但是開發給外部的雲應用程式使用的,它也作為微軟許多雲服務的基礎平台,像SQLAzure或是DynamicCRMOnline這類的線上服務。
[編輯]FabricController
WindowsAzure計算資源與管理框架
FabricController是管理微軟數據中心的WindowsAzure計算資源的中控管理系統,它負責自動化的管理數據中心內所有的實體伺服器,包含由用戶要求的WindowsAzureGuestOS的部署工作,定時的Hotfix修補,機器狀態回報,以及管理不同版本的VM部署圖像的複製等重要核心工作,FabricController本身也具有高可用性,並且有一個管理FabricController的子系統(稱為"Utility"FabricController)來管理與監控FabricController的運作。
FabricController也處理虛擬機的健康管理(HealthManagement)工作,當WindowsAzureGuestOS發生當機時,會由FabricController自動選擇不同的實體機器重新部署與啟動。當應用程式提交即地更新(In-placeupgrade)時,FabricController也負責即地更新的協調工作,以保持應用程式在更新時仍可保持SLA所承諾的服務水平。
[編輯]WindowsAzureHostOS
在FabricController之上與WindowsAzureGuestOS之間,是由FabricController在建置實體伺服器時所部署的WindowsAzureHostOS,它是一個特製版本的Hyper-VServer,負責實體伺服器內的Hypervisor虛擬平台層,總管其上的WindowsAzureGuestOS群,同時它內含一個FabricAgent中控軟體,以回報目前虛擬機的各項信息給FabricController,同時讓應用程式可以利用事件處理的方式來判斷與針對目前FabricAgent控制虛擬機的狀態做回應與控制。而依照不同的虛擬機的等級,其運行的WindowsServer2008作業系統也不一樣。
[編輯]網路基礎架構與應用程式部署模型
WindowsAzure網路與計算資源部署架構
WindowsAzure本身的設計是負責處理大量分散式計算的工作,並且符合雲計算的特性,因此應用程式在WindowsAzure上可以自由設定一個或多個運行個體(ComputesInstances),並且利用WindowsAzure平台的特性,應用程式可切割為處理用戶界面服務的Web應用程式,以及專門處理背景計算或數據處理工作的服務應用程式(ServiceApplication),後端則可以用WindowsAzureStorages或是SQLAzure資料庫來存儲數據。
為了處理單一應用程式多份運行個體的平衡負載,WindowsAzure的Hypervisor層都有自帶WindowsAzureLoadBalancer(LB),它會將連入應用程式的連線進行負載分配,以維持每個運行個體都有足夠且合理的負載量。而在WindowsAzure內部網路的所有虛擬與實體機器,都由FabricController來自動配署IP位置與通信連線埠,在默認的情況下FabricController對外只會開放Port80與443(forSSL),若應用程式需要特殊的連線連線埠時,要在應用程式本身的服務組態檔中登錄需要的終端點(ENDPOINT),FabricController會配置適當的IP終端點資源給應用程式。
[編輯]虛擬機作業系統
WindowsAzure上所運行的虛擬機(GuestOS),被稱為計算單元(ComputeUnit),以最基礎的小型計算單元為基礎,共分為五種類型,不同的類型有不同的硬體資源,作業系統與單價。以一個小型計算資源來說,它擁有1.6GHz的CPU,1.75GB的存儲器,以及225GB的硬碟空間,同時它的I/O優先權為中級。而在它之上的有中型(Medium),大型(Large)與超大型(ExtraLarge)三種,依2的倍數來強化虛擬機的可用資源。
VM大小 CPU RAM 本地存儲大小 I/O優先權
ExtraSmall(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 高
ExtraLarge(XL) 8*1.6GHz 14GB 2040GB 高
目前在WindowsAzure上,已經部署了數個版本的作業系統,分別是1.0-1.10(WindowsServer2008SP2)以及2.0-2.2版(WindowsServer2008R2),部署在WindowsAzure虛擬機上的作業系統,被稱為WindowsAzureGuestOS,但其實是WindowsServer2008x64企業版作業系統的虛擬化版本。每個不同的版本都會安裝不同的功能與補丁,而用戶可以選擇可兼容自己開發的應用程式的作業系統版本。
版本 作業系統平台 版次
2.x WindowsServer2008R2 2.0-2.2
1.x WindowsServer2008(SP2) 1.0-1.10
[編輯]應用程式運行環境
WindowsAzure是以作為雲計算的平台即服務環境所設計,在WindowsAzure平台上提供了四種不同的應用程式角色(applicationrole),分別代表不同的應用程式運行環境(RuntimeEnvironment)。
[編輯]WebRole
WebRole是已安裝並設定好IIS7.0運行環境的WindowsServer2008x64作業系統,開發人員可利用WebRole來掛載HTTP-based的應用程式,包括ASP.NET,PHP(FastCGI),JSP或是HTTP-hostedWCF應用程式,它通常會被作為Web應用程式的用戶服務端,FabricAgent的啟動程式會自動將應用程式檔案組態並掛載到IIS運行空間內。雖然WebRole默認只開放HTTPPort80/443,但開發人員仍可利用組態檔設定要要求FabricController指派更多的通信連線埠。而通過IIS7.0本身的特性,新版本的WebRole中可支持FullIIS模式,即開發人員可通過服務組態檔在同一個WebRole中設定多個網站或單一網站(Site)內多個虛擬目錄(VirtualDirectory),更擴大了WebRole的套用彈性。
在2012SpringRelease中,WebRole可支持ASP.NET,ASP.NETMVC3,ASP.NETMVC4,SilverlightRIA等應用程式。
[編輯]WorkerRole
WorkerRole可模擬於本機Windows作業系統(NT核心)上的WindowsService應用程式,它是一個無用戶界面的應用程式角色,開發人員可以利用WorkerRole來運行不需用戶界面的大量計算工作,或是利用WorkerRole進行MapReduce型的分散式計算,以有效的利用雲上的計算資源,WorkerRole也可作為處理高負載數據訪問或運行商業邏輯的應用程式。
在2012SpringRelease中,WorkerRole新增了CacheWorkerRole(搭載本地高速快取引擎的WorkerRole)以及WorkerRolewithServiceBusQueue(處理ServiceBusQueue專用的WorkerRole)兩種。
[編輯]WindowsAzureVirtualMachine
WindowsAzureVirtualMachine服務是WindowsAzure正式開放基礎建設服務的重要里程碑,它的前身是VMRole。
VMRole是在2010年10月28日於微軟PDC2010上宣布的新應用程式角色,VMRole是一個類似於IaaS層次的服務,它和WebRole與WorkerRole最大的不同是,VMRole允許由企業使用Hyper-V自行安裝與組態基本的作業系統與應用程式組件,並存儲基礎軟碟(BaseDiskImage)和差異軟碟圖像(DifferentialDiskImage),再上傳到WindowsAzure雲環境,此時FabricController會將這個軟碟保存到以訂閱帳戶為主的圖像存儲庫(subscription-basedImagerepository)中,訂閱帳戶的用戶就可以利用這個圖像在WindowsAzure中部署應用程式角色的虛擬機。這對企業在移轉應用程式到雲的需求上提供了相當大彈性的支持。VMRole的計費模式與WebRole/WorkerRole相同,企業可選擇在差異軟碟中安裝WindowsServer2008R2(未來可支持到WindowsServer2003與WindowsServer2008SP2),其作業系統授權已包含於雲環境的計算資源計費。
而VirtualMachine則更進一步的在數據中心內直接提供VM所需要的作業系統VHDs,不需一定要企業自行製作,而且VHDs也可以由用戶線上上產生,而最後的存儲地會是在用戶的BLOBstorage空間內。
VirtualMachine服務不但可以支持WindowsServer,也同時支持OpenSUSE12.1,CentOS6.2,Ubuntu12.04,SUSEEnterpriseLinux11SP2等Linux作業系統。
不論是WebRole,WorkerRole還是VMRole,都可以設定一個以上的運行個體(instance),每個運行個體都是獨立的虛擬機,WindowsAzureFabricController中的LoadBalancer(平衡負載器)會自動分配負載到不同的instance中。也因為如此,不論是運行在WebRole上的Web應用程式,或是運行在Worker的服務應用程式,都要考慮可能的跨實體(crossinstance)以及不同實體通信(inter-roleorinter-instancecommunication)的設計。
[編輯]WindowsAzureWebsite
Website是WindowsAzure基於WebRole上開發的新服務,它允許開發人員在Website的VM內新增MySQL的資料庫,而其內的IIS也安裝有PHP運行環境和.NETFramework,開發人員除了可以通過VisualStudio,github,TeamFoundationServices或WebMatrix做網站發布與編修外,亦可直接由Gallery選擇像WordPress,Drupal,orchardCMS等知名的大型開放原始碼應用程式直接部署。
[編輯]存儲服務
WindowsAzure提供了三種不同格式的存儲體服務(StorageServices),用來提供給WindowsAzure上運行的應用程式存儲數據使用。依據不同的存儲格式會有不同的限制,因為這些存儲服務都是以分散式巨量存儲(DistributedMassStorage)為核心概念所設計出來的,為了要達成快速在分散式存儲空間中存儲與管理數據(還包含高可用度的贅餘存儲管理),微軟有在數據的存儲上做一些限制。
不論是哪一種存儲服務,WindowsAzure都有顯露RESTAPI,並符合SimpleCloud的標準。
[編輯]BLOB
BLOB(大型二進制對象)數據是用來存儲像是檔案,圖片,視頻檔,執行檔,壓縮檔等二進制格式的檔案,基本上它的存儲單位就是檔案,為了要讓BLOB的功能套用更寬廣,微軟也在BLOB服務上開發了內容傳遞網路(ContentDeliveryNetwork)的服務,讓BLOB可以作為大容量的檔案或數據存儲與供應的地方,以支持類似YouTube這樣的大型Web應用程式的服務。
BLOB依照性質分為兩種:
BlockBLOB(區塊型BLOB存儲體),這類的存儲以4MB為一個區塊單位,單一檔案最大可以存儲200GB,且區塊不會連續存儲,可能會打散到不同的存儲伺服器中存放,當應用程式要求時,會依照檔案的Key以及區塊由存儲區提取數據。另外,區塊在存儲時會經過一道認可程式,以讓應用程式決定是否要重新傳送。
PageBLOB(標籤頁型BLOB存儲體),它會在存儲區中劃分一個連續的區域供應用程式存放數據,它本身可以視為一個大型的VHD(虛擬機軟碟),在PageBLOB的數據寫入會直接認可。而基於PageBLOB的特性,微軟特別在PageBLOB上提供了一組將PageBLOB虛擬成軟碟的功能,稱為WindowsAzureDrive(研發代號為XDrive),它能夠支持NTFSAPI,也就是說應用程式可以利用現有的檔案管理API(包含System.IO的類型)來訪問WindowsAzureDrive中的資料夾與檔案數據,並且這些數據會保存在WindowsAzure數據中心內。
BLOB服務由BLOB本身以及其收納容器(Container)構成,容器可視為一般本機上的資料夾。而容器和BLOB都支持額外的Metadata設定,這些Metadata會附掛在HTTPHeader中傳輸給客戶端,每一個Metadata的大小限制為8KB。BLOB也支持許可權管理的功能,通過SharedAccessSignature可設定BLOB或Container的訪問許可權與有效期限等。
privatevoidEnsureContainerExists()
{
varcontainer=GetContainer();
container.CreateIfNotExist();
varpermissions=container.GetPermissions();
permissions.PublicAccess=BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
}
privateCloudBlobContainerGetContainer()
{
varaccount=CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
varclient=account.CreateCloudBlobClient();
returnclient.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue("ContainerName"));
}
[編輯]Table
Table(表格)是給具結構化數據的應用程式存儲與管理的一種存儲服務,它在WindowsAzure存儲區中會以Key-Value鍵值對方式存儲,並且由Partition來切割在WindowsAzure存儲區的存儲位置,它實際的數據是XML,通過RESTAPI調用時,會需要依據SDK上的說明,自行建置XML的要求與解析回應的數據,但若是.NETFramework的開發人員,在WindowsAzureSDK中提供的Microsoft.WindowsAzure.StorageClient命名空間就有提供輔助的API以及類型,將這件事在API中處理掉了。SDK提供的輔助組件所套用的技術是WCFDataServices,因此若對WCFDataServices熟悉的開發人員,會很容易的上手Table存儲的開發。
namespaceTableExample
{
publicclassContact:TableServiceEntity
{
publicstringName{get;set;}
publicstringAddress{get;set;}
publicstringPhone{get;set;}
publicstringCellphone{get;set;}
publicContact()
{
base.PartitionKey="ContactTable";
base.RowKey=Guid.NewGuid().ToString();
}
}
}
雖然Table可以存儲結構化的數據,但它並不是關係性資料庫,所以像是join,匯總函式等都無法使用,要由開發人員另外處理。
[編輯]Queue
Queue(佇列)是一種先到先服務(First-Come,First-Serve),或稱為FIFO(先入先出)的存儲服務,它可以允許應用程式將信息存儲到佇列中排隊,然後由負責處理的應用程式(通常是Worker)由佇列提取信息並處理以後,將信息由佇列中移除。信息可以是字元串或是最長8KB的二進制數據,佇列經常會作為跨運行個體通信以及工作切割通知的信息傳遞之用。
protectedvoidcmdAddQueue_Click(objectsender,EventArgse)
{
CloudStorageAccountaccount=CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
CloudQueueClientqueueClient=account.CreateCloudQueueClient();
CloudQueuequeue=queueClient.GetQueueReference("theaterseatorders");
queue.CreateIfNotExist();
queue.AddMessage(newCloudQueueMessage("SEATNUM=1-1,[email protected]"));
queue=null;
}
[編輯]異地備援
自v1.5版起的WindowsAzureStorageServices,開始支持異地備援(Geo-replication)的功能,只要應用程式將數據傳送到TABLE或BLOB存儲,WindowsAzure會自動將數據往鄰近的數據中心傳遞,以備援存儲服務,當主要的數據中心發生斷線或是無法提供服務時,WindowsAzure核心中的DNSService會自動將要求導向到備援的數據中心繼續提供服務。
異地備援所產生的網路與存儲成本由微軟自行吸收,不另計費。
異地備援的工作是異步且自動化,應用程式無需做任何修改。
異地備援可以通過聯繫WindowsAzure支持團隊的方式停用。
[編輯]網路與高速快取服務
WindowsAzure平台對外通過了內容散布服務(ContentDeliveryNetwork)來進內聯容大量高速快取與散布的能力,以讓WindowsAzure上的應用程式可以利用它來提供快速且大量內容的服務。截至目前為止,WindowsAzure在全球有22個實體散布機房,亞太地區包含了日本、韓國、台灣、香港與新加坡等地均設有機房。
為了要讓WindowsAzure應用程式或是VMRole可以更方便的與本地端電腦連線,WindowsAzure提供了與虛擬私人網路(VPN)相同能力的WindowsAzureConnect服務,本地端可以利用此服務,在WindowsAzure應用程式所在的VM與本地端電腦之間,創建以IPSec為主的私人網路環境,WindowsAzure應用程式即可以電腦名稱的方式直接與本地端電腦連線並訪問數據。
在2012SpringRelease中,WindowsAzure擴張了網路功能以支持VirtualMachine服務,允許企業的IT人員自行設定網路節點,包含網段、路由表以及DNS等服務環境。
[編輯]服務管理
WindowsAzure平台的管理可分為由微軟提供的管理用戶界面(ManagementPortal)以及可程式化的服務管理接口(ServiceManagementAPI)兩個部份,而在PDC2010中,微軟又宣布了遠程桌面管理功能以及多管理員的設定。
[編輯]管理用戶界面
WindowsAzure管理入口(ManagementPortal)
WindowsAzure的管理網站(https://windows.azure.com)提供一個Web-basedGUI管理接口,供管理人員與開發人員可使用瀏覽器於線上管理WindowsAzure的各式資源,包含ComputesInstances,Storage以及服務管理的部份,以及SQLAzure和WindowsAzure)AppFabric等平台服務功能。
微軟於2010年11月30日發表全新以Silverlight開發的管理接口,此管理接口以現有的服務管理API開發,具有較豐富的互動性用戶經驗(UX)。
2011年8月,微軟宣布管理接口正式提供11個國家的本地化接口,包含繁體中文與簡體中文均有支持。
2012SpringRelease中,微軟再次更新管理接口,以HTML5打造的新管理接口具有較快的回應速度以及具親和力的操作接口等。
[編輯]服務管理接口
WindowsAzure基於雲計算的特性以及開發工具的需要,在FabricAgent上有顯露RESTAPI供外部應用程式調用,以自動化運行服務管理(ServiceManagement)的功能。服務管理的項目包含了部署(deployment),更新(upgrade),編輯組態(configurationchanges)以及環境切換(virtualIPswap)等功能,這些功能除了可以在WindowsAzure線上管理工具外,VisualStudioToolsforWindowsAzure1.2版也開始支持在開發工具中直接運行服務管理的能力,只要在WindowsAzure線上管理工具中登錄管理憑證(managementcertification)即可(最多可登錄五個)。
[編輯]遠程桌面
在2010年10月28日的PDC2010中,微軟宣布在應用程式角色中加入遠程桌面連線(RemoteDesktopConnection)的管理能力,管理人員可以利用遠程桌面的客戶端程式連到在雲中的虛擬機,以實際調控應用程式的組態或設定檔等。
[編輯]多管理員模式
多位服務管理員(MultipleServiceAdministrators)模式是PDC2010宣布,並配合Silverlight-based管理接口上線時開始提供,允許管理人員登錄多個用戶的WindowsLiveID以授權用戶服務管理的權力。
現階段WindowsAzure並沒有提供自動化的Scale-Out(向外擴張)機制,但在MSDNCodeCenter中有提供針對服務自動化Scale-Out機制的示例程式讓開發人員套用,以支持服務Scale-Out的機能。
[編輯]應用程式開發支持
WindowsAzure在每個不同版本間都有發表SDK包以供開發人員開發可運行在WindowsAzure運行的雲應用程式(CloudApplication),而微軟重量級開發工具VisualStudio也通過外掛的VisualStudioToolsforWindowsAzure讓開發人員能利用VisualStudio的CloudProject來自動化管理雲應用程式部署所需要的ServiceDefinition以及ServiceConfiguration設定檔,並可加入新專案或現有專案為雲應用程式角色(WebRoleorWorkerRole)之一,並進一步設定存儲連線設定,計算資源大小以及內部連線信息等等。
WindowsAzureSDK除了檔案、工具和必要的支持庫以外,還包含了在本機使用的WindowsAzure模擬環境(Emulators),稱為ComputeEmulator(原稱DevelopmentFabric)以及StorageEmulator(原稱DevelopmentStorage)。
ComputeEmulator會模擬WindowsAzure的VM環境以供開發人員在本機測試用,同時也可以讓開發人員直接在本機上監看應用程式的診斷輸出以及在狀態變更時應用程式處理的行為等。
StorageEmulator會利用本機上的SQLServer資料庫來模擬WindowsAzureStorage的各項服務。而在WindowsAzureSDKv1.7開始,StorageEmulator會自動偵測並選用LocalDB或是現存的SQLExpress/SQLServer運行個體。
WindowsAzure平台亦致力於針對非微軟平台以及開放原始碼陣營的支持,目前可在WindowsAzure上使用的程式語言除C#與VB外,像Java,PHP,Python,node.js等均有平台,而自2012年的SpringRelease開始,微軟也提供了在Linux與Mac上的WindowsAzure應用程式命令行工具。

熱門詞條

聯絡我們