在云服务构造中, 利用预先放置的软件映像文件来快速实例化虚拟机的过程叫创建云服务。针对它的研究主要集中在2个方面:①宿主机的查找[1]。根据用户的需求, 选择一个最佳物理节点; ②服务部署[2]。将软件映像文件转送到虚拟机的本地文件系统后, 实例化云服务。在服务部署方面, 高效可靠地部署服务是当前主要的研究内容之一[2-3], 也是本文的研究重点。
目前, 通过复制软件映像文件来保证云服务的高可靠部署是主要手段[3], 复制副本越多, 服务部署的可靠性越高。可是, 由于软件映像文件的大小达到GB的程度, 所以复制副本越多, 其更新传播时间越长。为了减少更新传播时间, 一般采用减少副本数量从而牺牲云服务的部署可靠性[4]来达到。如何解决这对矛盾, 国内外进行了大量的研究。文献[4-5]提出了点到点的部署方式, 将软件映像文件与部署程序放在同一个节点上, 但是由于单个节点无法存储更多的软件映像文件, 因此它只适用于小规模的服务部署。文献[6-7]提出了集中存储方式, 软件映像文件存放在数据中心。但是, 当部署请求太多时, 数据中心的网络及I/O瓶颈将导致部署效率迅速下降。对此, 文献[8]提出了一种将软件映像文件分片后分布的方法。利用分片来解决忙闲不均问题, 但是, 分片导致额外的合并计算代价。
针对这些问题, 本文采用部分异步复制策略, 即, 一部分软件映像文件采用同步复制, 另一部分则采用异步复制。同步复制旨在保证云服务高可靠部署, 异步复制旨在减少副本的更新传播时间。用户可以灵活地设置同步复制副本数和异步复制副本数, 以期满足服务部署的总体要求。
1 基于复制的服务部署管理模型 1.1 基本概念云计算服务的基础资源是指虚拟机、网络以及存储等硬件设施, 云服务指的是使用基础资源而构建的软件环境, 它向客户提供各种业务程序, 包括软件开发平台及软件应用平台。
云服务的构建、部署、运行以及撤销的整个过程称为云服务的生命周期。在云服务构建阶段, 将用户的应用程序等打包成一个独立文件, 即软件映像文件。部署阶段是在一个物理资源上将软件映像文件安装到一个虚拟机上; 运行阶段是用户使用此虚拟机来完成计算; 当用户不再需要这些服务时, 关闭虚拟机则属于撤销阶段。
软件映像文件包括操作系统、用户预先设置的各种应用程序, 以及这些应用程序的配置信息等, 如一个Windows的VHD虚拟硬盘。云服务部署后, 用户会执行一些事务性的操作, 使软件映像文件的状态发生变化, 这些变化会写入软件映像文件。
服务部署是在虚拟机上安装和配置软件映像文件的过程。
1.2 云服务部署模型当用户请求云服务时, 虚拟资源控制器向部署存储管理系统发出部署命令, 部署存储管理系统查出软件映像文件的位置并报告给虚拟资源控制器; 虚拟资源控制器收到消息后, 创建虚拟机并在虚拟机上安装软件, 完成云服务的部署。
图 1给出了云服务部署模型。虚拟资源控制器的主要职责是:选择软件映像文件的位置; 发送部署服务请求; 监控云服务的运行及结束云服务。当用户向云平台请求一个云服务时, 虚拟资源控制器进行下列操作:1)选择一个宿主机, 创建VM, 如图 1中的(1)所示; 2)向部署存储管理系统请求软件映像文件, 如图 1中的(2)所示; 3)部署存储管理系统根据用户的请求, 在全局名字空间查找软件映像文件, 从所有可用的副本中选取一个最优副本, 如图 1中的(3)所示; 4)部署存储管理系统通知资源控制器, 如图 1中(4)所示; 5)部署存储管理系统启动部署程序, 如图 1中的(5)所示; 6)部署程序向VM节点上传软件映像文件, 然后启动VM节点, 完成云服务的部署, 如图 1中的(6)所示。
1.3 基于异步复制的部署存储管理模型图 2给出了一个基于异步复制的软件映像文件存储管理模型。部署程序在各个存储节点上进行复制, 软件映像文件也进行复制, 软件映像文件与部署程序结合在一起。部署程序可以像访问本地文件一样访问软件映像文件。部署程序、软件映像文件组成一个部署存储管理系统。
部署存储管理系统主要功能有:
1) 提供软件映像文件的本地命名和全局命名。当从部署存储管理系统的外部来访问软件映像文件时, 使用全局命名; 当部署程序进行软件映像文件上传时, 使用局部命名。
2) 提供软件映像文件的存储。部署虚拟机所使用的软件映像文件, 都保存于部署存储管理系统, 并由其来统一管理。
3) 记录软件映像文件的状态。
4) 软件映像文件复制。当在主副本中增加或者更新软件映像文件时, 部署存储管理系统将该文件传播到各个复制副本, 并跟踪其状态。
2 基于部分异步复制的副本更新算法 2.1 软件映像文件副本的复制由于软件映像文件复制副本的更新时间长, 所以将一部分副本标记为同步复制, 另一些副本则标记为异步复制。同步复制副本和异步复制副本的数量, 可以根据用户的服务部署可靠性要求自主设置。当复制请求到达时, 首先在所有的同步副本中进行复制, 并向部署存储管理系统登记副本的状态; 然后使用gossip[9]协议进行异步副本的复制, 完成复制后向部署服务存储管理系统登记副本的最新状态。算法1描述了软件映像文件的复制算法。
算法1 软件映像文件的复制。
输入:软件映像文件的复制请求。
输出:副本复制成功。
流程:
S1:初始化软件映像文件状态states-images[];
S2:设置主副本节点primary, 同步复制节点syncbacks[], 异步复制节点asyncbacks[];
S3:保存主副本primary数据;
S4:for(i=0;i < syncbacks[]; i++)
执行节点syncbacks[i]上的同步复制;
更新states-images[i];
S5:采用gossip协议, 执行异步复制, 更新对应的状态states-images[];
对于虚拟资源控制器来说, 一旦完成同步副本的复制, 复制过程结束; 此时, 部署存储管理系统使用gossip协议开始对异步副本进行复制, 每完成一个异步副本节点, 须写入复制状态信息。
每个软件映像文件有3种状态:复制中、可用和不可用。当一个新的软件映像文件更新请求到达时, 主副本首先将所有同步副本状态设置为“存储中”, 然后将异步副本状态设置为“不可用”。当所有的同步副本复制完成后, 同步复制副本的状态变为“可用”。对于异步复制副本, 采用gossip协议, 每隔一定时间, 便向主副本请求软件映像文件的最新信息, 一旦发现自己不是最新的, 就请求主副本进行复制; 如果发现主副本不能响应, 它就任意选择一个状态为“可用”的同步副本, 然后向该副本发出复制请求。在复制过程中, 其状态变为“复制中”, 一旦复制完成, 就变为可用状态。
2.2 异步副本的升级为了保证服务部署的高可靠性, 同步复制副本的数量应得到保证, 主副本每隔一定时间都去检查同步复制副本的状态, 当出现同步复制副本失效时, 主副本会通知处于可用状态的异步副本, 发起异步副本向同步副本升级的命令。
算法2给出了异步副本升级为同步副本的算法。假定系统中每一个节点都有标识数字, 节点Si的标识数字为i, 并假定选择出的异步副本总位于标识数字最大的当前活跃节点上。
算法2 异步副本向同步副本的升级
输入:异步副本升级请求
输出:异步副本变为同步副本
流程:
S1:初始化主副本primary以及其他副本节点信息nodes[];
S2:while(TRUE){
Case-send:
S21:异步副本Si给每个具有比i大的标识数字的节点发送升级消息;
S22:如果没有得到回复, 认为大于i的标识数字的节点不存在或其他节点都故障, Si升级为同步副本, break;
S23:如果收到回复消息, 则执行Case-receive;
Case-receive:
S31:如果消息中的标识数字大于自己, break;
S32:否则, 回复自己的标识数字, 发起新一轮Case-send过程;
}
使用异步副本向同步副本升级的策略, 可以保证所要求的同步副本数量。
当主副本失效须重新选举主副本时, 所有处于活动状态的同步副本都可以参与竞选, 选举算法与算法2相同。为了保证主副本选举成功, 须保证同步副本的数量。
2.3 失效恢复当故障节点恢复后, 对于异步复制节点, 则执行gossip协议, 把自己的状态变为最新的可用状态; 对于同步复制节点, 则将自己的状态更新为最新可用状态; 如果该节点标号最大, 则将自己升级为主副本, 通知其他节点, 并选择一个标号最小的节点, 将其降为异步复制副本。
3 算法评价软件映像文件的复制提高了服务部署的可靠性, 但是, 副本的复制需要花费大量的时间, 因此, 合理设置同步副本数与异步副本数的比例是关键。本文设置了多组同步副本数与异步副本数的比例, 从副本复制时间及虚拟机部署时间两方面进行评价, 得出了一些基本数据, 给出了一些指导性的结论。
3.1 同步异步副本数的设置比例评价本文构建了一个评价环境, 由15台服务器组成, 其中运行Windows Server 2008 R2, 每台内存为32G, 硬盘为2TB, 用于建立部署存储管理系统。另外, 每台服务器上都安装了vmware2.0服务器版, 用于启动虚拟机。
创建多个vmware虚拟机的软件映像(image)文件, 每个大小为4G, 设置多种同步复制及异步复制副本数的比例, 随机进行云服务实例的部署, 并进行一系列的操作。另外, 还采用随机方式产生故障, 使系统自动执行恢复性部署。在云服务部署请求(包括失效恢复部署请求)不断增大场合下, 当同步复制数量和异步复制数量达到(9, 6)附近时, 所需要的云服务基本上能在5分钟内能部署完成。图 3实验由几种典型的云服务部署性能曲线组成, 曲线1~9分别代表的同步复制与异步复制副本数为(3, 3), (5, 4), (7, 5), (8, 6), (9, 5), (9, 6), (10, 5), (11, 3), (12, 2)。
从图 3中的曲线可以看出, 第6条曲线最平稳, 服务部署时间变化不大。曲线1~5系列, 在云服务数量不大的情况下, 部署时间变化不大, 但是在服务数量较多时, 由于复制副本较少, 性能下降的非常快。曲线8和9系列, 云服务数量较少, 性能较好, 当服务数量较多时, 由于副本更新问题, 导致部署性能上升较多。曲线7相对来说也比较好, 受到副本更新影响较少。通过实验发现, 当同步副本数量与异步副本数量的比值为1.5左右时, 采用部分异步复制方法可以得到快速可靠的云服务部署性能。
3.2 几种不同复制方法的比较为了验证部署存储管理系统的复制效果, 分别采用所有节点同步复制, 所有节点异步复制, 以及五分之一的节点同步复制, 五分之二的节点同步复制, Image文件每隔5分钟添加5个, 计算从开始复制到结束所花费的时间。表 1给出了复制完成时间。
Image数 | 3台同步/ 分钟 |
6台同步/ 分钟 |
全同步/ 分钟 |
全异步/ 分钟 |
10 | 22.291 | 30.013 | 50.132 | 62.285 |
30 | 54.312 | 63.378 | 80.143 | 93.163 |
50 | 121.277 | 132.381 | 153.251 | 192.853 |
100 | 239.302 | 261.367 | 301.291 | 341.291 |
从表 1中可以看出, 同步副本的数量越多, 副本复制的时间也越长。故, 在满足可用性的前提下, 应尽量减少同步副本的数量。对于软件映像文件更新不频繁的场合, 可以增加同步副本数量, 来提高服务部署的效率, 反之则降低同步副本数量。
4 结论在云计算的服务部署过程中, 服务部署的可靠性非常重要, 采用部分异步复制方法来提高可靠性, 是一种简单有效的方式。另外, 同步复制副本数与异步复制副本数的设置至关重要, 可保证服务部署的整体效率。该算法已在一个企业的私有云环境中得到应用, 效果较好。
[1] | Steve Asmus, Ahmed Fattah, Chris Pavlovski. Enterprise Cloud Deployment:Integration Patterns and Assessment Model[J]. IEEE Cloud Computing, 2016, 3: 32-41. |
[2] | Paul Manuel. A Trust Model of Cloud Computing Based on Quality of Service[J]. Annals of Operations Research, 2015, 233(1): 281-292. DOI:10.1007/s10479-013-1380-x |
[3] | Emeakaroha V C, Brandic I, Maurer M. Breskovic I. SLA Aware Application Deployment and Resource Allocation in Clouds[C]//Computer Software and Applications Conference Workshops, 2011:298-303 |
[4] | Jemal H, Abawajy. Establishing Trust in Hybrid Cloud Computing Environments[C]//International Conference on Trust, Security and Privacy in Computing and Communications, 2011:118-125 |
[5] | Kecskemeti G, Terstyanszky G, Kacsuk P, et al. An Approach for Virtual Appliance Distribution for Service Deployment[J]. Future Gener Comput Syst, 2011, 27(3): 280-289. DOI:10.1016/j.future.2010.09.009 |
[6] | Jin Hai, Deng Li, Wu Song, et al. Live Virtual Machine Migration with Adaptive Memory Compression[C]//IEEE Cluster 2009:1-10 |
[7] | Nicolae B, Bresnahan J, Keahey K. Efficient Multideployment and Multisnapshoting on Clouds[C]//HPDC 2011, San Joes, CA. 2011:147-158 |
[8] | Xu Gaochao, Dong Yushuang, Fu Xiaodong, et al. Rapid Virtual Machine Deployment Approach on Cloud Platform[J]. Journal of Computational Information Systems, 2013, 9(18): 7381-7388. |
[9] | Devavrat Shah. Gossip Algorithms[J]. Foundations and TrendsR in Networking, 2008, 3(1): 1-125. |