標籤:des style blog http io ar os 使用 sp
《Windows Azure Platform 系列文章目錄》
最近一直想總結Azure IaaS和PaaS的區別與比較,寫個博文詳細說明一下。建議讀者在閱讀之前,先熟悉微軟PaaS和IaaS平台的基本概念,再參考本文。
1.Azure IaaS和PaaS的服務類型層次,請參考下面的圖片:
對於IaaS來說,使用者需要管理的對象是:
-O/S,作業系統
-Middleware,中介軟體
-Runtime,運行時
-還有Data和Application
對於IaaS來說,客戶就像是使用雲端的虛擬機器一樣,在Azure平台選擇自己需要的作業系統(Windows or Linux),在這個作業系統裡安裝所需要的軟體,然後對作業系統及以上內容進行管理。
2.IaaS的優勢?
IaaS的優勢首先來說與傳統IDC營運相類似(注意是類似而不是相同,因為公用雲端都是基於虛擬化技術,比如雲端網路虛擬化是與傳統IT營運不同的),傳統IT營運人員比較容易接受與快速上手。一般我在做項目實施的時候,將雲端的虛擬網路、儲存帳號和虛擬機器都建立好以後,直接將Windows Remote Desktop或者Linux SSH連接字串給到客戶IT方,就可以迅速安裝所需要的軟體了。
3.IaaS的劣勢?
IaaS的劣勢從我個人理解是分為一下幾種:
(1)IT還是需要花精力對伺服器進行更新和維護
公用雲端服務強調的是Self Service(自服務),對於IaaS層面來說,雖然企業使用者不需要話費巨額投資來搭建和維護自己的資料中心,但是還是需要花精力對於作業系統進行更新和維護,比如IT還是需要對作業系統的升級和打補丁,進行維護。採用IaaS節省了硬體採購成本,但是沒有解決軟體的維護成本。
(2)使用者需要自己來配置高可用組
Azure提供更新網域和故障域來實現伺服器的高可用。在IaaS平台,使用者需要手動設定高可用組,將多台相同功能的虛擬機器設定在同一個高可用組裡。否則,虛擬機器不能實現高可用。
(3)為了實現高冗餘,需要改架構
公用雲端服務在推出之初,是用多台虛擬機器並行計算,提供高冗餘的方式來解決伺服器單點故障的問題。我們知道,凡是硬體伺服器就會產生硬體故障。在Azure平台,我們建議使用者一般採用2台或者2台以上的服務放在同一個高可用組裡,來實現99.95%的SLA。但這樣問題來了,我發現很多的客戶採用:
a.單台Web伺服器作為前端,並且把session儲存在web伺服器上。一旦這台Web伺服器宕機了,所有的session就會丟失,系統無法正常運行。如果我們考慮99.95%的SLA,需要使用2台Web伺服器,並且把session也進行分離,使用雲端服務商提供的cache服務或者自己在虛擬機器裡實現cache的主從邏輯。
b.單位檔案伺服器存放檔案。這台檔案伺服器也會產生單點故障。如果需要將檔案同時提交到多個節點上,在Windows平台需要使用比如DFS(Distributed File System)或者在Linux平台使用RSync。實現檔案在多個節點上進行提交和同步。
c.單台SQL Server資料庫伺服器。資料庫伺服器存在單點故障。我們可以使用SQL Server 2012 Always On來實現資料庫的高可用。
(4)有限的橫向擴充能力
如果大家在使用Azure Auto Scaling的時候,會發現在IaaS層面,如果需要實現100台虛擬機器的auto scaling,需要手動預先建立100台虛擬機器並在每一台虛擬機器裡配置同樣的application。對於IaaS來說,Azure Auto Scaling不能自動擴充到任意的大小,而需要IT管理員進行預設。這主要的原因是IaaS虛擬機器的之間的資料同步問題,Azure沒有辦法將應用橫向向外延展部署到100台虛擬機器上,因為每一台虛擬機器的底層作業系統檔案、應用檔案都需要使用者自己來管理。雖然我們可以通過虛擬機器鏡像來快速部署多台虛擬機器,但是牽涉到IP規則,資料檔案同步等等各方面,這些都需要使用者自己來管理。所以對於IaaS來說,橫向擴充是有限的。
上面我們談了一下IaaS,接下來我們談談PaaS平台。如最上面的圖所示:
對於PaaS平台來說,使用者需要管理的對象是:
-Application,應用程式
-Data,資料檔案
所有底層的OS,Middleware和Runtime,都由Windows Azure來維護。但是要注意,Azure PaaS提供的作業系統其實是Windows。無法在PaaS層使用Linux的作業系統。如果你的應用必須跑在Linux平台,請使用Azure IaaS。
4.Azure PaaS平台的優勢?
(1)不需要維護作業系統
Azure PaaS平台對於企業的優勢是享用服務所帶來的價值,而不是實施和維護軟體系統的成本。
Azure PaaS Cloud Service定義了OSFamily和OSVersion,來自動設定作業系統版本及更新內容,使用者無需手動對作業系統進行升級。如果客戶需要Azure自動升級最新的作業系統,將OSVersion="*";如果客戶需要固定某個作業系統的版本,可以設定OSVersion="WA-GUEST-OS-X.XX_20XXXX-XX",設定某個固定的版本。具體請參考:http://msdn.microsoft.com/library/azure/ee924680.aspx
(2)自動設定高可用組
如果使用者的應用程式需要實現負載平衡,Azure PaaS平台自動會將應用程式部署到多個計算節點上,並且自動化佈建故障域和更新網域。使用者無需手動進行配置。
(3)自動橫向擴充
Azure PaaS 平台將使用者的代碼打包為CSCFG和CSPKG。CSCFG是設定檔,用來描述PaaS的節點數量和配置資訊。CSPKG是項目打包檔案(package)。Azure PaaS通過CSCFG定義計算節點,然後將CSPKG發布到若干個節點上,可以自動實現scale-out。而不像IaaS那樣,需要IT Admin預先把虛擬機器建立好。
(4)高冗餘可擴充的架構
Azure PaaS平台架構,可以實現應用的高冗餘和可擴充。
通過將Session儲存到外部的儲存上(如SQL Server資料庫中),可以實現Web Server的高冗餘。
通過將檔案儲存到Azure Storage上,可以實現檔案的99.9%的高可用。另外檔案不是上傳到計算節點,可以解決檔案同步和一致性的問題。
5.Azure PaaS平台的劣勢
(1)需要藉助於開發人員
對於很多傳統IT部署,應用的發布都需要藉助於IT來實施。如果採用了Azure PaaS,應用的部署都需要藉助於開發人員。這對於IT來說這一個挑戰。
(2)非持久化VM
Azure PaaS是非持久化VM,任何在PaaS平台安裝的軟體都是非持久化的。一旦PaaS VM重設了,之前安裝的軟體都會丟失。
對於大型的應用程式來說,一般都會安裝其他第三方的軟體(例如匯出Excel,匯出PDF,其他第三方外掛程式等等)。
對於PaaS平台,需要將安裝軟體的步驟放到ServiceDefinition.csdef的Startup Task中,進行靜默安裝(-s)
Windows Azure Cloud Service (22) 使用Startup註冊COM組件(上)
Windows Azure Cloud Service (23) 使用Startup註冊COM組件(下)
(3)需要修改代碼
Azure PaaS平台需要修改一些代碼,比如Session放在外部儲存上,本地檔案的讀寫放到Azure Storage裡。我會在後面幾章介紹IaaS遷移到PaaS平台的步驟。
總結:
Azure IaaS比較適合:
- 老應用的遷移
- 遷移難度比較簡單,但是管理比較複雜
- 藉助IT就可以進行應用的遷移
- 先甜後苦
Azure PaaS比較適合:
- 新應用的開發
- 遷移難度比較複雜,但是管理比較簡單
- 需要藉助開發人員,基於PaaS進行代碼修改和開發
- 先苦後甜
Windows Azure Cloud Service (38) 微軟IaaS與PaaS比較