刘婧珏
【摘 要】在云软件服务中,如何监控调度云平台规模化物理资源,来满足大规模用户软件即时的请求,同时保证用户资源分配的公平性、服务的及时性以及物理资源的高利用率,成了一个关键的研究问题.针对上述需求,设计一种集群多粒度实时高效的监控系统,通过该监控系统可以实时的监控集群中所有节点的当前资源状况,并且将监控结果进行展示、存储以及提供数据访问接口;实验结果表明监控系统的资源消耗很低,调度算法能够保证用户的公平性以及节点的负载均衡. 【期刊名称】《呼伦贝尔学院学报》 【年(卷),期】2018(026)005 【总页数】8页(P141-148)
【关键词】SaaS;监控;资源调度;公平性 【作 者】刘婧珏
【作者单位】中南财经大学 湖北武汉 430073 【正文语种】中 文 【中图分类】TP393.09
随着当前网络化软件的出现及日益普及,同时移动互联网用户数量呈爆炸式增长,软件使用需求急剧增加。由于接入终端的配置和计算能力有限,而互联网上却承载了大量软件、CPU、存储等众多类型的资源,用户可以通过各种不同的终端访问互联网数据以及远程应用,从而产生一种新的软件应用模式,在这种情况下,软件
服务(SaaS)就应运而生了[1]。将虚拟化技术与SaaS技术相结合,把软件作为服务提供;并且通过虚拟化技术可以使得软件的显示和执行分离,并把不同平台和机器的应用显示融合,较基于Web的应用而言具有更好的用户交互体验。 平台上物理资源负载均衡的好坏,是由负载均衡算法的设计直接决定的。如果算法设计不合理,将会直接使平台的计算资源负载失衡。负载均衡算法的主要功能是[2],当系统接收到服务请求时,如何将该服务请求交给合适的计算资源点,使平台的计算资源利用达到最大的均衡。
基于SaaS的云平台物理资源监控与调度的设计要求,系统的设计应满足以下几点需求[3]:
(一)监控每一个计算资源节点的CPU、内存、I/O、网络等数据的功能; (二)将每个计算资源节点监控到的数据传输到数据汇聚中心节点存储、展示并向调度模块提供数据接口;
(三)对每一个进程的监控,并可以将进程监控后的数据存储在数据汇聚中心节点; (四)对多进程的监控;
(五)面向软件服务的监控可视化模块,动态呈现集群中节点信息以及每一个节点的运行状态;
(六)调度算法,当有多用户并发的请求发生时,能够通过查看一段时间内用户资源已分配情况,并根据监控系统提供的当前系统资源状况,公平且负载均衡地将这些用户的请求调度到不同的节点。
本系统的体系结构分为四个模块:系统监控模块、进程组监控模块、监控可视化模块、调度算法模块[4]。该系统的结构图如图3.1。 1.系统监控模块的设计 (1)问题分析。
根据系统需求分析可知,系统监控模块能够为调度提供数据依据,而一个高效的系
统监控程序的关键是监控程序的资源消耗要低,因此系统监控模块的设计需要考虑如下两个问题:
① 数据采集部分资源占用情况与三方面因素有关,一是监控数据的获取方式,二是监控资源的种类,三是监控时间的间隔;
② 影响集群监控系统性能的另外一个因素是数据的传输汇聚,而采用基于C/S模式的集中式数据传输结构,需要解决两个关键问题,一是并发的接收不同节点数据,二是保证连接可靠性。 (2)设计方案 ① 数据采集的设计
程序运行时节点系统信息的获取,可以通过对/文件系统[5],来实现数据的读取。在/文件系统中,记录有内存使用信息、CPU状态信息、系统IO状态、系统网络通信状态及进程状态等资源信息。/proc文件系统包含了不同的内核信息,表3.1中列举了部分的常用信息文件。程序对数据的采集是通过截取该表信息实现的。 ② 数据汇聚的设计
本文设计的数据通信模式如图3.2所示,在监控节点中引入客户端数据汇聚进程,客户端数据汇聚进程,是负责系统该节点处性能数据汇聚和发送。而在服务器上,则引入数据汇聚进程,负责系统数据汇聚集群的建立。 2.应用监控模块的设计 (1)问题分析
在对多路并发应用的调度过程中,调度模块通过进程监控模块提供的应用资源消耗数据以及节点的当前监控数据,做出合理的多路并发的调度。因此,该进程监控模块要具备如下的功能:
① 对单进程进行实时的监控,在一段时间内,将所监控的数据做平均处理之后作为该进程的资源使用情况的数据,存储到数据库中;
② 对于多进程的应用,找到这个应用所对应的所有的进程,并发的对这些进程进行监控,将监控的数据累加作为该应用的资源使用情况。 (2)设计方案 ① 单进程监控设计
对进程性能数据的获取主要关注CPU状态、内存状态、网络状态以及IO状态四个方面。
对于进程CPU、内存、I/O的监控,同样使用/proc虚拟文件系统获得,具体信息如下表3.2所示。
/proc文件系统中没有提供对进程网络信息的描述[6],使用数据包截获函数包Libpcap对进程的网络信息进行监控。由于一个进程,可能会有多个网络连接,而对于每一个网络连接又会有许多的数据包,所以对于系统所截获的每一个数据包,需要确定这个数据包所对应的连接以及所对应的进程。对于进程数据包得截获流程见图3.3。
上述对进程流量监控的过程中,使用到两个类,包(packet)以及连接(connection)。 ② 多进程监控设计[6]
共享内存的方法由于其简单的操作而备受开发者的关注。而锁存法正是共享内存的一大应用。为此做了如下的设计:
a.查询系统中所有进程的发起命令,如果进程是由待监控的应用发起的,将这个进程的pid加入到应用进程队列;
b.查询系统中所有进程的父进程,如果这个进程的父进程的pid在1中确定的pid队列中,将这个pid加入应用进程队列; c.对应用进程监控队列中的所有进程进行监控;
d.通过共享内存以及锁的机制,将c中所有进程的信息合并。
3.监控可视化模块的设计 (1)问题分析
在面向软件服务的监控中一个很重要的部分就是监控数据可视化模块。监控系统获取节点监控信息。因此,监控可视化模块需要具备以下功能: ① 提供实时动态展现服务节点上的服务资源的运行状态;
② 能够与用户交互,使用户能够暂停监控、停止监控、切换监控节点; ③ 能够实时的显示集群中的所有节点IP地址。 (2)设计方案
根据上一节的功能需求,设计可视化模块的工作流程如下图3.4所示。当用户启动监控界面时,可视化模块自动向数据监控模块请求连接,监控模块接收到连接请求后,将集群中的所有节点的IP地址以字符串的形式向可视化模块发送;可视化模块接收到集群中的节点IP地址后,将集群中节点的IP信息显示出来[7]。当用户对某一个节点发起监控显示请求后,监控可视化模块将该节点的实时监控数据以XML的形式发送到可视化模块中。 4.调度算法模块的设计 (1)问题分析
传统的调度方法,则是根据用户请求在服务器端中的等待队列,按照先来先到的服务方法,对用户请求进行响应,并将该请求按顺序调度到不同的节点上,这种调度的算法并没有使不同的用户感到公平,所以首先需要对用户公平性进行调度[8]。当确定了用户的调度顺序之后,依据当前节点上服务的负载状况进行综合调度,做到均衡负载和提供资源利用率。
因此,基于上述问题的考虑,多用户请求的分层的调度算法应该满足如下两点需求: ① 确定调度的顺序,也就是调度过程中对用户请求的选择; ② 确定应用分配的节点,也就是调度过程中对节点的选择。
(2)设计方案
根据上一节的问题分析,分层调度算法首先需要定义公平性,将面向软件服务的多用户请求调度算法中的公平性定义为如下:
① 用户请求的应用中,占主导因素的资源量作为主资源,主资源作为调度的依据; ② 一个应用的已分配的主资源占集群中该资源总量的比率作为这个应用的主资源分配率;
③ 一个用户的已被响应的应用请求的主资源率的和作为该用户的主资源占用率; ④ 每次选择主资源占用率最小的用户作为当前调度的用户,对其请求的应用进行响应。
本系统的调度算法的公平性,是建立在现有主资源基础上的。因此,就将的资源权值设定为2[9]。
多用户请求调度算法既要对用户调度的顺序进行选择,又要对节点选择,因此,本文采用分层的调度策略[10]:
a.在系统第一层的用户,系统将根据主资源最小原则,选择在用户等待排列队表中,主资源占用最小的用户,作为优先调度的对象;
b.系统第二层是节点的选择,通过监控系统的应用程序,对节点进行实时的数据监控,根据系统中每个节点当前的负载情况,从中选择负载最小节点,将a中选定的应用程序,调度到该节点处进行程序运行; c.重复a、b层,直到系统的剩余资源被调度不足。 1.实验设计
实验环境为4台物理机,集群配置信息如下:
test01作为数据汇聚中心节点,用于收集集群中的所有节点的监控数据并提供数据接口;test02,test03作为节点进行系统监控信息的采集,并将数据向上汇报;test04用于将test01收集到的数据进行展示,实验的目的在于展现系统监控数据
的获取、汇聚、展示。 (2)实验描述与分析
首先在test01启动数据汇聚心中节点服务器,命令如下: test01@debian:/home/wyd/flex# ./system_server
test01作为中心节点服务器,等待集群中的节点与之进行连接并传输监控数据; 然后在test04上启动监控可视化程序,并与test01服务器进行连接,连接建立后,test01显示:
在test02上启动监控程序,命令如下:
test02@debian:~/t_monitor# ./system_client 1 192.168.182.134
其中1表示监控的时间粒度为1秒,192.168.182.134表示数据汇聚中心节点的IP地址,test01显示: test02节点显示:
表示该节点监控程序已启动,并且监控数据正在上传,此时test04可视化部分显示:
表示集群中192.168.182.131这个节点正在上传数据; 在test03上启动监控程序,命令如下:
test03@debian:~/t_monitor# ./system_client 1 192.168.182.134, test01显示: test03节点显示:
表示该节点监控程序已启动,并且监控数据正在上传,此时test04显示:
表示集群中有192.168.182.131和192.168.182.135两个节点正在上传监控数据。 对于test04,实现了监控的可视化,选择test02这个节点,对其监控数据进行展示,为了有良好的展示效果,在test02这个节点上运行一个1/0密集型应用,展示结果如下图:
1.实验设计
对调度算法的验证,模拟集群中4个节点当前资源剩余情况,并模拟两种不同资源消耗情况的应用,模拟了3个不同的用户的请求,通过模拟调度模块,将3个不同用户请求调度到不同节点中。本文使用windows下VC进行模拟。 2.实验描述与分析
模拟集群中4个节点资源剩余情况,见上表4.3: 模拟两种类型应用资源消耗情况,如下表4.4: 模拟3个用户发起请求,对应用的请求顺序分别是:
user1、user2、user3同时发出请求,调度模块根据分层调度算法,将两个用户请求按顺序调度到4个节点上,调度结果如下表4.6所示:
通过从以上公平性、负载均衡的实验结果来看,分层调度优于随机调度。
【相关文献】
[1]储进.基于SaaS的监控系统的设计与实现[D].北京邮电大学, 2015.
[2]陈硕. Linux多线程服务端编程:使用muduo C++网络库[M].电子工业出版社, 2013. [3]范金阳.面向虚拟网络的数据包捕获及展现系统的研究与实现[D].北京航空航天大学,2011. [4]孙鹏.面向SaaS应用的多租户海量存储系统设计与实现[D].浙江大学, 2010. [5]周媛.基于SaaS平台的数据库性能优化研究与设计[D].北京邮电大学, 2013. [6]冯秀玲.云计算环境下的负载均衡算法的研究与设计[D].北京邮电大学, 2012.
[7]Genez T A L, Bittencourt L F, Madeira E R M. Workflow scheduling for SaaS / PaaS cloud providers considering two SLA levels[C]// IEEE/IFIP Network Operations & Management Symposium-noms. IEEE, 2012:906-912.
[8]王志刚, 常兴磊, 胥茜.LVS集群的一种动态负载均衡方法[J].福建电脑, 2017, 33(10):111-113. [9]李锋华.基于蚁群算法的云计算资源负载均衡调度算法研究[D].云南大学, 2013.
[10]He R Y, Zhao Y L, Wang W, et al. Research on the Load Balancing Algorithm Based on the Datacenters Service[J]. Advanced Materials Research, 2012, 6-7:420-425.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务