近一直想總結(jié)Azure IaaS和PaaS的區(qū)別與比較,寫個博文詳細說明一下。建議讀者在閱讀之前,先熟悉微軟PaaS和IaaS平臺的基本概念,再參考本文。
1.Azure IaaS和PaaS的服務(wù)類型層次。請參考下面的圖片:
對于IaaS來說,用戶需要管理的對象是:
O/S,操作系統(tǒng)Middleware,中間件Runtime,運行時還有Data和Application對于IaaS來說,客戶就像是使用云端的虛擬機一樣,在Azure平臺選擇自己需要的操作系統(tǒng)(Windows or Linux),在這個操作系統(tǒng)里安裝所需要的軟件,然后對操作系統(tǒng)及以上內(nèi)容進行管理。
2.IaaS的優(yōu)勢?
IaaS的優(yōu)勢首先來說與傳統(tǒng)IDC運維相類似(注意是類似而不是相同,因為公有云都是基于虛擬化技術(shù),比如云端網(wǎng)絡(luò)虛擬化是與傳統(tǒng)IT運維不同的),傳統(tǒng)IT運維人員比較容易接受與快速上手。一般我在做項目實施的時候,將云端的虛擬網(wǎng)絡(luò)、存儲賬號和虛擬機都創(chuàng)建好以后,直接將Windows Remote Desktop或者Linux SSH連接字符串給到客戶IT方,就可以迅速安裝所需要的軟件了。
3.IaaS的劣勢?
IaaS的劣勢從我個人理解是分為一下幾種:
(1)IT還是需要花精力對服務(wù)器進行更新和維護
公有云服務(wù)強調(diào)的是Self Service(自服務(wù)),對于IaaS層面來說,雖然企業(yè)用戶不需要話費巨額投資來搭建和維護自己的數(shù)據(jù)中心,但是還是需要花精力對于操作系統(tǒng)進行更新和維護,比如IT還是需要對操作系統(tǒng)的升級和打補丁,進行維護。采用IaaS節(jié)省了硬件采購成本,但是沒有解決軟件的維護成本。
(2)用戶需要自己來配置高可用組
Azure提供更新域和故障域來實現(xiàn)服務(wù)器的高可用。在IaaS平臺,用戶需要手動配置高可用組,將多臺相同功能的虛擬機配置在同一個高可用組里。否則,虛擬機不能實現(xiàn)高可用。
(3)為了實現(xiàn)高冗余,需要改架構(gòu)
公有云服務(wù)在推出之初,是用多臺虛擬機并行計算,提供高冗余的方式來解決服務(wù)器單點故障的問題。我們知道,凡是硬件服務(wù)器就會產(chǎn)生硬件故障。在Azure平臺,我們建議用戶一般采用2臺或者2臺以上的服務(wù)放在同一個高可用組里,來實現(xiàn)99.95%的SLA。但這樣問題來了,我發(fā)現(xiàn)很多的客戶采用:
a.單臺Web服務(wù)器作為前端,并且把session保存在web服務(wù)器上。一旦這臺Web服務(wù)器宕機了,所有的session就會丟失,系統(tǒng)無法正常運行。如果我們考慮99.95%的SLA,需要使用2臺Web服務(wù)器,并且把session也進行分離,使用云服務(wù)商提供的cache服務(wù)或者自己在虛擬機里實現(xiàn)cache的主從邏輯。
b.單位文件服務(wù)器存放文件。這臺文件服務(wù)器也會產(chǎn)生單點故障。如果需要將文件同時提交到多個節(jié)點上,在Windows平臺需要使用比如DFS(分布式文件系統(tǒng))或者在Linux平臺使用RSync。實現(xiàn)文件在多個節(jié)點上進行提交和同步。
c.單臺SQL Server數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫服務(wù)器存在單點故障。我們可以使用SQL Server 2012 Always On來實現(xiàn)數(shù)據(jù)庫的高可用。
(4)有限的橫向擴展能力
如果大家在使用Azure Auto Scaling的時候,會發(fā)現(xiàn)在IaaS層面,如果需要實現(xiàn)100臺虛擬機的auto scaling,需要手動預(yù)先創(chuàng)建100臺虛擬機并在每一臺虛擬機里配置同樣的application。對于IaaS來說,Azure Auto Scaling不能自動擴展到任意的大小,而需要IT管理人員進行預(yù)設(shè)。這主要的原因是IaaS虛擬機的之間的數(shù)據(jù)同步問題,Azure沒有辦法將應(yīng)用橫向擴展部署到100臺虛擬機上,因為每一臺虛擬機的底層操作系統(tǒng)文件、應(yīng)用文件都需要用戶自己來管理。雖然我們可以通過虛擬機鏡像來快速部署多臺虛擬機,但是牽涉到IP規(guī)則,數(shù)據(jù)文件同步等等各方面,這些都需要用戶自己來管理。所以對于IaaS來說,橫向擴展是有限的。
上面我們談了一下IaaS,接下來我們談?wù)凱aaS平臺。如最上面的圖所示:
對于PaaS平臺來說,用戶需要管理的對象是:
Application,應(yīng)用程序Data,數(shù)據(jù)文件所有底層的OS,Middleware和Runtime,都由Windows Azure來維護。但是要注意,Azure PaaS提供的操作系統(tǒng)其實是Windows。無法在PaaS層使用Linux的操作系統(tǒng)。如果你的應(yīng)用必須跑在Linux平臺,請使用Azure IaaS。
4.Azure PaaS平臺的優(yōu)勢
(1)不需要維護操作系統(tǒng)
Azure PaaS平臺對于企業(yè)的優(yōu)勢是享用服務(wù)所帶來的價值,而不是實施和維護軟件系統(tǒng)的成本。
Azure PaaS Cloud Service定義了OSFamily和OSVersion,來自動配置操作系統(tǒng)版本及更新內(nèi)容,用戶無需手動對操作系統(tǒng)進行升級。如果客戶需要Azure自動升級最新的操作系統(tǒng),將OSVersion="*";如果客戶需要固定某個操作系統(tǒng)的版本,可以設(shè)置OSVersion="WA-GUEST-OS-X.XX_20XXXX-XX",設(shè)置某個固定的版本。具體請參考:
(2)自動配置高可用組
如果用戶的應(yīng)用程序需要實現(xiàn)負載均衡,Azure PaaS平臺自動會將應(yīng)用程序部署到多個計算節(jié)點上,并且自動設(shè)置故障域和更新域。用戶無需手動進行配置。
(3)自動橫向擴展
Azure PaaS 平臺將用戶的代碼打包為CSCFG和CSPKG。CSCFG是配置文件,用來描述PaaS的節(jié)點數(shù)量和配置信息。CSPKG是項目打包文件(package)。Azure PaaS通過CSCFG定義計算節(jié)點,然后將CSPKG發(fā)布到若干個節(jié)點上,可以自動實現(xiàn)scale-out。而不像IaaS那樣,需要IT Admin預(yù)先把虛擬機創(chuàng)建好。
(4)高冗余可擴展的架構(gòu)
Azure PaaS平臺架構(gòu),可以實現(xiàn)應(yīng)用的高冗余和可擴展。
通過將Session保存到外部的存儲上(如SQL Server數(shù)據(jù)庫中),可以實現(xiàn)Web Server的高冗余。
通過將文件保存到Azure Storage上,可以實現(xiàn)文件的99.9%的高可用。另外文件不是上傳到計算節(jié)點,可以解決文件同步和一致性的問題。
5.Azure PaaS平臺的劣勢
(1)需要借助于開發(fā)人員
對于很多傳統(tǒng)IT部署,應(yīng)用的發(fā)布都需要借助于IT來實施。如果采用了Azure PaaS,應(yīng)用的部署都需要借助于開發(fā)人員。這對于IT來說這一個挑戰(zhàn)。
(2)非持久化VM
Azure PaaS是非持久化VM,任何在PaaS平臺安裝的軟件都是非持久化的。一旦PaaS VM重置了,之前安裝的軟件都會丟失。
對于大型的應(yīng)用程序來說,一般都會安裝其他第三方的軟件(例如導(dǎo)出Excel,導(dǎo)出PDF,其他第三方插件等等)。
對于PaaS平臺,需要將安裝軟件的步驟放到ServiceDefinition.csdef的Startup Task中,進行靜默安裝(-s)