云计算资源管理系统的研究与实现

2013-09-18 10:30蒋漪涟
微型电脑应用 2013年8期
关键词:计算资源约束调度

蒋漪涟

0 引言

云计算资源共包含两大类,一类是指物理计算机、物理服务器以及必要的网路设备和存储设备形成的物理集群。另一类是是通过虚拟化技术在物理计算实体上生成的虚拟机以及由多个虚拟机组合形成的虚拟机群[1]。云计算的资源系统就相当于是多种异构的资源组织起来,形成一个大的资源集合并向上层提供特定、多样的执行环境[2]。对这样的资源系统的管理在很大程度上决定了云计算平台所提供的服务质量[3]。

从云计算体系结构上来看,云计算系统的后端,有成千上万的服务器,在服务器上又运行着大量的或虚拟或物理的计算资源,如何将如此大量的服务器有效地组织、管理,是云计算系统高效稳定运行关键问题之一[4]。

云计算的一大优点在于可以提高虚拟资源与物理资源的资源利用率。若无资源管理调度,对资源进行统一分配和无规则调度对于拥有大量资源的云端来说是不合适的,除了效率低下以外,还会造成资源使用混乱。只有对计算资源进行统一管理,根据不同的业务实施灵活的配置方案、消除瓶颈、提高生产率和对业务服务的响应水平;可以降低运营大型分布式环境的相关人力成本。

1 系统的概述

1.1 VCCP系统

VCCP (Virtual CloudComputing Platform)是一套能够管理虚拟计算资源,管理虚拟计算任务,能够根据资源和任务的实际情况和需求进行按需聚合与协同,并能够对平台外部提供开放通用服务接口的软件系统。本系统是建立在VCCP之上的,VCCP的核心设计思想是实现开放网络中的存储资源共享、数据资源共享、计算资源共享。

VCCP共分为用户服务层、任务层、资源管理层和计算资源层四大层,并进一步分成六个子层,具体的层次结构关系,如图1所示:

图1 VCCP层次结构关系

(1)应用服务层。应用服务层分成两个子层,应用层和表示层。应用层的功能是为用户提供应用服务接口;友好的 UI界面;将相关业务逻辑按照表示层的接口将应用服务分割成为 VCCP中可执行的任务单元并提交给任务层进行处理。表示层主要是解决任务单元以及资源需求的描述问题。

(2)任务管理层。任务管理层负责任务的分割和汇聚。任务管理层应完成对任务队列的维护和调度,即维护储存任务信息的各种数据结构以及决定和优化任务执行顺序;应完成任务生命周期管理,包括任务的分割、下发、执行和结果返回,以及相应任务状态的发布。还应为管理人员提供对任务直接进行管理操作的接口,如任务的取消、暂停、恢复。

(3)计算资源层。计算资源层由若千计算资源汇聚而成。每一个计算资源是计算任务的执行者,并对外提供资源基础服务,是提供资源服务的基本单元。计算资源层相当于资源代理,资源和管理系统的交互通过代理程序进行。

(4)运维支撑层。运维支撑层以资源管理层为数据源,对虚拟云计算系统的资源系统进行信息展示,动态监控和过载警报和异常定位;以任务管理层为数据源对虚拟云计算系统的所有任务进行状态信息展示,分配流跟踪和结果展示。

1.2 资源管理系统关键算法设计——QoS指导下的负载均衡调度算法

1.2.1 基于QoS的资源调度算法

资源调度策略当中使用的3种基于QoS的资源调度算法,分别是轮询调度算法,随机调度算法和最优调度算法。这3种算法都实现了任务QoS约束下的资源调度,并且3种算法理论简单,实际实现也并不复杂。

(1)轮询调度算法。轮询调度算法是基于 Round-Robin调度算法实现的。其设计原理是每一次把任务轮流分配给云计算系统内的资源上,从1幵始,直到N(计算资源个数),然后重新开始循环。算法实现简洁,一定程度上能够优化系统负载率。在资源列表中维护一个Pos指示器变量,指示器指向列表中当前任务分配给的资源,下一次调度选择位置 Pos后的第一个可用资源分配给任务。Pos初始值为1,当它达到列表尾部时,重新置为1。

(2)最优匹配调度算法。最优匹配调度算法的设计原理是每一次把任务分配给符合任务需求的资源列表中,评分最高的资源。当接收到一个任务需求时,遍历当前符合任务需求资源集合S,根据任务需求对每一个计算资源做出评价,任务分配给评价最高的资源。

(3)随机调度算法。随机调度算法设计原理是当接收到一个任务需求时,随机从符合任务需求资源集合S中返回一个资源。

1.2.2 QoS指导下的负载均衡调度算法

VCCP中的资源调度不仅需要支持QoS约束而且需要考虑资源系统整体的负载均衡。资源负载率度量方法。如公式(1)、公式(2)

公式(1)度量方法的缺点是每个负载维度对综合负载度的影响均相同,算法不够灵活。公式(2)度量方法为每个负载维度都增添了影响权重值,但是算法对权重向量的取值很敏感,一旦由于经验不足导致参数设计不恰当,则会对算法性能造成巨大影响。

VCCP系统的任务管理层对每一个任务的 QoS约束共有5部分组成,分别是资源操作系统类型约束Q_os;资源CPU速率约束Q_cpu;资源可用内存约束Q_men;资源磁盘空间约束Q_disk以及资源网络带宽约束Q_net。所以在调度算法中一个任务ti的QoS约束条件Qi则可以表示成一个5元组:

Qi= {Q_osi,Q_cpui,Q_memi,Q_diski,Q_neti}.虚拟云计算平台中有m 计算资源,资源集合记为C = {c1,c2,…,cm},与任务 QoS约束相对应,每一个计算资源具有一组约束指标信息和一组负载指标信息,即Cj={Rj,Lj}其中Rj= {R_osj,R_cpuj, R_memj, R_diskj, R_netj}分别表资源在操作系统、CPU、可用内存、磁盘空间和带宽的约束指标。约束指标通常是资源的静态描述信息。Lj= {L_osj, L_cpuj, L_memj,L_diskj, L_netj}分别表资源在CPU、可用内存、磁盘空间和带宽的负载指标。负载指标通常是由资源的实时动态信息描述的,一般用百分率表示。

在本文提出 QoS约束下的基于任务偏好的负载均衡匹配调度算法中,任务的 QoS条件不仅是对选择资源服务能力约束,还是度量资源负载度标准的组成部分之一。算法大致包含以下3个部分:首先依据任务QoS约束筛选资源;根据任务 QoS约束计算任务偏好值;资源综合负载率的度量。

(1)筛选资源以匹配任务的QoS约束。即根据任务ti的QoS约束条件 Qi,匹配得到满足 QoS的资源列表C={C1,C2,…Cj}(1≤J≤m)对任意 Cj∩C 都要满足公式(3)

(2)任务偏好值的计算。任务偏好值定义为资源某一方面的指标影响任务执行与完成时间的程度。以CPU速率为例,任务对CPU速率偏好值越高,说明CPU速率对任务执行的影响越大,说明任务对CPU速率高的资源倾向性越强。本文提出的算法根据任务的 QoS约束以及资源在每个约束上的指标计算任务偏好值。其核心思想是以任务的 QoS约束值与系统资源指标的平均值的商做为任务偏好值。QoS约束越强,说明任务在这一方面要求越高,说明此因素对任务执行的影响越大,并且用 QoS约束值与系统资源指标的平均值的商作为QoS约束强弱的度量。结合以上计算思想,任务ti的任务偏好值 Pi= {P_cpui,P_memi, P_diski, P_neti}的计算方法,如公式(4)、公式(5)

(3)任务偏好值指导下资源综合负载率的度量标准。把任务偏好值作为资源每一项负载率对综合负载率的影响因子。仍以CPU速率为例。偏好值越大,说明任务对资源CPU速率越敏感,所以对这个任务来说,资源的CPU负载对资源的综合负载率影响也越大。针对任务(资源的综合负载率计算方法,如公式(6)所示

Loadij越小说明对于任务的偏好资源的负载越低,选择Loadij最小的资源作为任务ti的匹配调度结果。算法流程描述如下:

1) 初始化QoS约束Q。

2) 遍历所有资源列表,找出满足公式(3)的所有资源列表C。若C为空跳转6.

3) 依据公式(4)公式(5)计算得到任务偏好值.

4) 对资源列表C中的每一个资源,依据公式(6)计算得到资源的综合负载度.

5) 选取综合负载度最小的资源作为匹配调度结果返回.

6) 返回“无满足约束条件资源”结果。

每一个资源匹配调度流程中,任务的 QoS约束是接受请求时获得的,资源的约束指标在资源信息表的静态信息中,负载指标在资源信息表的动态信息中,只需查询数据库即可获得,所以算法需要计算的只有任务偏好值以及资源综合负载率,算法的复杂度不高,可以满足在线调度的要求。

2 云计算资源管理系统设计与实现

2.1 云计算资源管理子系统设计方案

某计算资源CR1要加入云计算系统,首先要向资源管理层进行注册,注册信息中包含CR1的基本静态信息。此时资源管理层会获得与计算资源 CR1通信的 IP地址和端口(CR1_IP和CR1_PORT),并以此作为CR1在系统中的唯一ID,注册成功后返回 CR1这一 ID。此时意味着计算资源CR1成功加入了云计算平台,即任务可以被分发到CR1上执行。注册成功后,资源管理层要对资源 CR1的运行和使用状态进行监控。为此根据注册的CR1_IP和CR1_P0RT,定期到CR1处采集CR1动态信息,并将采集到的信息经过处理添加到或更新数据库资源信息表中的动态信息部分。若由于网络不通或调用采集接口失败等原因导致采集动态信息失败,则把 CR1标注为“暂不可用”,处于这个状态的计算资源不会成为资源匹配调度的结果。若计算资源 CR1因升级、维修或报废等原因要“离开”云计算系统,则需要用ID向资源管理层提出注销请求。注销成功后资源管理层会删除数据库中有关CR1的一切数据。

用户提交一个应用job,应用任务层分割应用为若干子任务片 tasks,预存在等待调度的任务队列中。对任务队列队头任务如 taskl,任务管理层调用资源管理层提供的任务资源匹配接口,以期得到执行此任务的资源 ID。资源管理层根据taskl的资源需求描述,根据数据库资源信息表中所有计算资源的静态、动态信息,结合制定好的资源调度策略,得到执行这个任务的计算资源CR1,并返回任务管理层这个计算资源 CR1的资源 ID:IP地址(CRl_IP)和端口(CR1_P0RT)。得到执行资源后,taskl进入任务下发队列,待taskl出队时,任务管理层根据CRl_IP和CR1_PORT把任务taskl分发到这个计算资源上进行执行,完成任务下发。CR1完成任务后会根据配置把任务结果返回给任务管理层。

为实现上述算法集成方案和系统主要接口功能,资源管理系统模块设计方案,如图2所示:

图2 资源管理系统模块设计图

资源管理系统可以分为:注册注销模块、资源监控模块、资源匹配与调度模块、管理节点监控调度模块、发布模块以及数据库。

注册注销模块实现资源的组织策略,主要为计算资源层的计算资源提供注册注销接口。

资源监控模块集成资源监控算法,负责实现资源监控。主要完成资源的动态信息采集,根据动态信息完成部分指标的评估和相应后台优化,并把资源的动态信息写入数据库。

资源匹配调度模块集成资源调度算法,负责对多种资源调度算法的实现。并且需要幵放资源调度调用接口,根据制定好的策略算法完成资源调度,并将结果返回给应用任务层。

管理节点监控调度模块完成多个管理节点信息的生成和入库,并在分布式管理系统当中完成管理任务的分配和迁移以及多个管理节点的调度。

发布模块实现资源信息发布策略。负责把资源管理层管理的所有计算资源信息通过XML文件形式发布到云计算系统中的指定位置。发布的信息可以为第三方的监控管理软件提供数据源,并方便管理人员查询历史数据或随时,查看云计算系统中所有计算资源的运行状态。

2.2 资源组织的实现

资源的组织就是资源管理系统要为资源提供加入和退出云计算平台的注册和注销接口。这两个接口是在图2中注册注销模块当中实现的。对于注册具体应实现的功能有:开放调用注册方法的RFC监听端口;验证输入资源IP地址和端口是否合法,是否己记录在数据库中;把注册成功的资源静态信息添加到资源信息表中,返回注册成功信息和资源注册ID。注册算法设计如下:

新资源加入云计算平台,需要调用注册注销模块提供的资源注册接口。资源管理子系统需要将注册接口声明在注册注销模块中。注册接口的thrift声明如下:

(1:exception.InvokeException e)。ip 是计算资源 IP 地址。rpcPort是计算资源的RPC端口,同时也是计算资源提供的网络通信端口。

Staticinfo是计算资源在注册时需提供的静态信息,其类型是StaticInfoSeq. StaticInfoSeq类型描述的资源信息都是静态描述信息,这些信息一经注册后不能改变。

资源注册成功和失败的信息以 XML字符串形式返回,返回信息实例格式如下:

资源离开云计算平台之前,需要调用注册注销模块提供的资源注销接口。资源管理子系统需要将注销接口声明在注册注销模块中。

2.3 资源监控实现

在组织起资源系统后,就需要对所有的资源进行监控。资源监控可以分为两个部分:系统内部监控和系统外部监控。系统内部监控是资源管理系统对云计算平台内的计算资源的运行状态和资源使用情况进行自动监控。图2的资源监控模块完成此功能,资源监控算法也集成于此模块当中。

数据单元和缓冲区是生产者和消费者之间唯一的联系,在多线程应用环境中,缓冲区操作需保证线程安全。为了实现方便,资源信息采集与评估模块的缓冲区采用JDK1.5引入的ArrayBlockingQueue数据结构。

为了保证缓冲区的共享和唯一,生产者要以缓冲区初始化。根据系统规模,支持多个生产者共同工作,所以生产者需实现Runnable接口以实现多线程。生产者根据资源管理节点的ID查询数据库,得到本节点负责釆集的计算资源列表,再将列表中的计算资源ID依次写入缓冲区中。主要功能代码如下:

数据单元入队时采用的是 ArrayBlockingQueue.put方法。该方法会判断队列是否有空间完成如对操作。如果该队列已满,则阻塞等待可用的空间出现,并释放对象锁。这样的阻塞等待机制会最大限度提升资源信息采集的性能。

对于消费者同样要以缓冲区初始化,同样要实现Runnable接口以支持多线程。消费者用ArrayBlockingQueue.take方法从缓冲区以阻塞方式获取对头数据单元,调用相应资源提供的采集动态信息接口 get-DynamicInfo,返回资源动态信息字符串resourceDynamicInfo。若调用不成功或无返回值说明资源暂时不可用,更新数据库中该资源的状态。若调用成功,解析resourceDynamicInfo,更新数据库中该资源的动态信息。

程序实现关键代码实现如下:

外部资源监控是指定期的将数据库中的资源信息、软件服务信息以及资源管理节点的信息以某种形式发布,为其它第三方监控管理软件提供信息源,实现系统外部的资源监控以及如统计等更多功能的扩展。这部分功能是在图2中的信息发布模块中实现。

3 总结

资源管理系统提出了一种 QoS指导下的负载均衡资源调度算法。该算法能够支持用户任务在CPU、内存、磁盘、带宽以及操作系统五个维度的QoS约束,并在任务QoS约束指导下完成各个维度权重值计算,进而完成计算资源综合负载率的计算。算法不需要预设综合负载率中各个维度的权重值,降低了算法对权重经验值的敏感度。同时算法根据不同的任务重新计算资源的综合负载度,实现了动态均衡。

[1]田文洪,赵勇.云计算:资源调度管理[M].第一版. [M].北京.国防工业出版社.2011.7

[2]王敏,李静,范中磊.一种虚拟化资源管理服务模型及其实现[J].计算机学报.2005.28(5).856-863.

[3]袁文成,朱怡安,陆伟.面向虚拟资源的云计算资源管理机制[J].西北工业大学学报.2010. 28(5).704-708.

[4]邓自立.云计算中的网络拓扑设计和 Hadoop平台研究[D].合肥:中国科学技术大学.2009. 4.

猜你喜欢
计算资源约束调度
基于模糊规划理论的云计算资源调度研究
约束离散KP方程族的完全Virasoro对称
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
改进快速稀疏算法的云计算资源负载均衡
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
自我约束是一种境界