【中雲網獨家】 作者:陳懷臨 中雲網首席顧問
2.2 雲計算分層結構可用性
本小節考察雲計算分層結構中IaaS, PaaS和SaaS可用性的內在聯繫. 首先提出並定義雲計算中可用單元AU(Availability HTTP://www.aliyun.com/zixun/aggregation/29926.html">Unit), 可用集(Availability Set ), 單獨可用性SA(Standalone Availability)和部署可用性DA(Deployment Availability)的概念, 然後定性和定量分析各種相關模型的可用性.
2.2.1 定義
根據Berkeley關於雲計算模型的定義,一個雲服務可以簡單劃分為SasS, PaaS和IaaS三層結構. 在這3層結構中,本文定義如下概念:
可用單元AU(Availability Unit): 某一層提供給上一層服務的最小基本服務單元. 是雲計算服務的最小細微性. 同一層中可用單元之間互相獨立,一個可用單元的失效不會影響其他單元. 常見的AU的例子為AWS的Availability Zone[9]和Windows AZure的Region[10]. 一個AU是一個邏輯概念, 對於IaaS而言, 可以是一個資料中心; 對於PaaS, 可以是一個WEB, 資料庫的實例; 對SaaS, 可以是一個軟體應用.
可用集合AS(Availability Set): 同一層中一個或者多個AU的聯合, 並作為邏輯上的一個整體提供服務給上一層. AS具備一個仲裁(Arbiter)的功能模組. Arbiter用來即時監測該AS中的AU可用性, 並根據相應的演算法, 仲裁哪個AU可以提供最好的, 或者最適合的服務. 當一個AS具備多於一個的AU時, 該AS被認為具備非單點失效屬性. Arbiter本身可以是一個分散式的結構, 例如基於LVS集群的負載均衡[11], 或者AWS的LBS服務[12]等. 本文假設Arbiter本身具備足夠的彈性, 因此不討論Arbiter的單點失效問題. 另外, 不失一般性, 本文假設Arbiter的演算法基於提供最大可用性的演算法, 即在一個可用集裡, Arbiter總是試圖為服務申請者提供最大的可用性, 簡稱為BA(Best Availability)演算法.
AU和AS的邏輯拓撲關係如下圖所示:
對於一個AU和AS, 定義其單獨可用性和部署可用性如下:
單獨可用性SA(Standalone Availability): 在為其提供服務的下一層AS/AS的可用性是100%的情況下, 一個AU/AS自身的可用性. 例如, 一個PaaS服務在沒有遷移到公有雲上線之前, 在私有環境下或者實驗室環境下的自身可用性.
部署可用性DA(Deployment Availability): 在為其提供服務的下一層AS/AS的可用性是動態變化的情況下, 一個AU/AS表現出來的實際可用性. 例如, 一個SaaS或者PaaS服務被部署在一個協力廠商的IaaS環境下能實際達到的可用性; 一個IaaS被部署在一個協力廠商的物理資料中心, 在計算,存儲和網路環境變化下所能實際提供的可用性.
2.2.2 AU和AS的SA可用性
假設一個AS裡有m個AU, 並形式表達為AS = , 每一個AU都是等同的服務模組(軟體或者硬體), 我們定義AU和AS的SA具有下面的屬性.
公式 3 SAAUi = SAAUj = A
其中A是一個常量, 例如, 99.99%, 或者99.99999%.
由於在任何一個AS裡, 每個AU是等同的設計, 和基於同樣的部署, 因此, 共同擁有一個相同的單獨可用性.
公式 4 SAAS = Max(SAAUi ) = A
一個AS的Arbiter的缺省演算法是給上層服務申請提供最大的可用性. 當AS中的AU滿足相同的A可用性的時候, 其能提供的最大可用性也是A. 例如, 一個SaaS服務使用了m個PaaS層的AU, 每m個AU的SA是99.9%, 那麼這m個AU組成的AS的SA也是99.9%.
從上面的分析可以得出, 在一個AS下, 其內部AU的單獨可用性是等價的; 一個AS的單獨可用性是等於AU的單獨可用性的.
2.2.3 AU和AS的DA可用性
我們認為, 一個雲計算服務的實際可用性是依賴于其底層支撐服務的可用性的. 例如, 在一個公有雲的IaaS上, 部署一個PaaS服務. 該PaaS服務的實際可用性是隨著IaaS服務的可用性變化的. 如果IaaS能提供的可用性是99.9%, 儘管PaaS服務的設計的單獨可用性是99.9%, 那麼該PaaS對SaaS層的服務可用性是 99.9% * 99.9%, 減少到99.8%. 極端情況是, 如果該IaaS服務下線, 該PaaS服務, 不管其設計的單獨可用性大小如何, 其部署可用性都減少為0.
一個AU和為其提供服務的AS的部署可用性關係可以形式表達為:
公式5: DAAU = SAAU . DAAS
其中, SAAU為這個AU服務的單獨可用性; DAAS為這個AU部署的可用集AS的部署可用性.
顯然可見, 當DAAS = 100%的時候, DAAU = SAAU;
在得到一個AS中的每個AU的DA可用性依賴于其下層服務可用性的量化關係之後, 可以很容易的定義和推匯出一個AS的DA可用性.
假設一個AS裡有m個AU, 可以表達為AS = . 根據公式4, 可以得知每個AU的DA是依賴于底層AS的可用性的, 因此AS中的m個AU可能具備不同的DA可用性. 根據Arbiter的最大可用性演算法, 可以匯出一個AS對外的DA可用性為:
公式6: DAAS = Max(DAAU1, DAAU2, ... DAAUm)
公式6的內涵是: 一個AS部署可用性等於其集合中具有最好部署可用性的那個AU的部署可用性. 例如, 一個AS含有2個AU, 在一個採樣時間段T裡, AU1的可用性是90%, AU2的可用性是99.99%. 如果承諾的SLA的可用性是99.5%, 顯然, AS的Arbiter會通過AU2向上提供服務, 從而保證99.5%的可用性. 這個AS對外所能觀察到的DA是99.99%, 而非90%或者其他.
下面具體討論雲計算基於SaaS, PaaS和IaaS的3層模型並定義其可用性的關係.
不失一般性, 假設一個SaaS AS部署在一個PaaS AS上; 該PaaS AS部署在一個底層的IaaS AS上. 其邏輯結構如圖8所示.
從公式5和6, 可以很容易得出如下公式:
公式7: DASaaS AU = SASaaS AU . DAPaaS AS
公式8: DAPaaS AU = SAPaaS AU . DAIaaS AS
其中:
SaaS AU: 一個SaaS的服務單元;
PaaS AU: 一個PaaS的服務單元;
IaaS AU: 一個IaaS的服務單元;
PaaS AS: SaaS AU使用的PaaS的服務單元集合;
IaaS AS: PaaS AU使用的IaaS的服務單元集合.
下面證明, SaaS, PaaS, IaaS的AS的DA可用性存在一個可傳遞的關係:
* 一個SaaS服務的可用性一定小於等於其依賴的PaaS服務的可用性.
* 一個PaaS服務的可用性一定小於等於其依賴的IaaS服務的可用性.
(責任編輯:蒙遺善)