中云内参(4):关于云计算可用性的定性与定量研究
【中云网独家】 作者:陈怀临 中云网首席顾问
2.2 云计算分层结构可用性
本小节考察云计算分层结构中IaaS, PaaS和SaaS可用性的内在联系. 首先提出并定义云计算中可用单元AU(Availability 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 =


公式 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 =

公式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服务的可用性.