分享

城市照明公共服务云平台的负载均衡研究

 GXF360 2019-02-21
 摘要:城市照明服务云平台是一个统一化的面向多租户的公共服务平台。平台用户众多,如何使虚拟化资源在实现容灾的基础上,删除冗余数据,提高计算资源的利用率,让整个平台的资源得到充分的利用,已经成为当前最重要也是最受关注的资源调度问题之一。本文主要对IaaS云平台OpenStack的资源调度机制进行研究,并使用一种基于OpenStack的可扩展的多资源次分布资源调度框架对城市照明服务云平台进行优化。

关键词:城市照明,云计算,资源调度

  1、引言

城市照明在过去的20多年经历了大幅度发展,针对监控设施运行情况的远程监测和集中控制技术已趋于成熟,90%的省会城市,60%的地级市已经完成路灯远程监控系统的建设。但是仍有相当一部分地级市、县级市甚至乡镇对照明监控有着迫切的需求,而受限于一次性投入的成本较高,享受不到先进技术对管理能力的提升。此外,随着云计算的发展,尤其是2012年我国兴起的以物联网云计算应用为核心业务的信息技术浪潮,将成为引领未来信息产业创新的关键战略性技术和手段。

2、相关技术

2.1 云计算

云计算是一种新计算模式,是分布式计算、并行计算和网格计算的融合产物。但是其定义各有不同,并无一个确定的标准。云计算系统一般有以下特点:

1) 规模庞大。“云”能给予用户高效的计算能力,其具有相当可观的资源和设备。

2)虚拟化。云计算支持用户使用各种终端在云系统的任意位置获取服务。用户不必了解应用具体在云中的运行位置,只需知道应用是在“云”中某处运行即可。

3)高可靠性。“云”采用了数据多副本、计算节点同构可互换等多种措施来保障服务的高可靠性,使得云技术比本地计算机的安全性更高。

4) 通用性。在“云”的支撑下,云计算不针对指定的应用,能够支撑应用的千变万化。

5)按需服务。作为一个资源池,“云”根据客户需求给客户提供服务。

云计算体系中的硬件和软件被抽象整合为资源,并以服务的形式向用户提供,用户则主要以互联网为接入点,获取云中的服务。

2.2 平台虚拟化技术

随着研发的虚拟化软件连同IT硬件的改进和多样化,虚拟化的应用领域也得到的大幅度扩展,同时对基于多个方面解决各种系统性能问题提出了大量不同类型的虚拟化解决方案。通常我们说的虚拟化技术主要是操作系统等级的虚拟化,操作系统虚拟化的体系结构如图1所示。

图1 操作系统虚拟化的体系结构

城市照明公共服务云平台将基础设施和照明公共服务应用相隔离,通过存储虚拟化、计算虚拟化、网络虚拟化等为用户提供透明的基础设施资源及照明公共服务虚拟化应用,让用户只关心自己的需求是否得到满足,无需了解平台内部结构。

城市照明云服务和城市管理用户是一对多的客户关系,用户以租赁的方式获取服务,功能实例是在用户租赁的虚拟系统上运行的。平台作为一个共享基础架构能有效屏蔽底层资源的异构性,将各种通信、计算及存储资源充分整合入资源池,进行统一管理和调度,为用户创造服务器、存储、应用、桌面虚拟服务。对用户而言,这些资源是透明的,他们无须了解内部结构,只关心自己的需求是否得到满足即可。

2.3 虚拟机迁移技术

在云平台中,虚拟机的建立和销毁是动态的,云服务器中,随时都可能存在新虚拟机的创建和任务运行完成的虚拟机的销毁。因此,单个复杂化的云服务器的资源分配问题是由其中虚拟机参数及个数的动态性决定的。若仅仅是虚拟机的初始部署,则当虚拟机的总体个数呈下降趋势或达到一个基本的平衡趋势时,就可能出现部分物里服务器的资源利用率已经过高导致资源紧缺和部分物理服务器的资源利用率却很低导致资源空闲这两种情况,这时,就需要重新部署部分虚拟机,尽可能以最少的物理服务器运行应用任务。除此之外,在任务量颇大的情况下,还可能造成资源的浪费,因为在任务量的高峰时间完结之后,一些服务器上资源使用率已超过了阈值,而又些服务器资源却依旧空闲。这时,就需要出发并实施虚拟机迁移,重新分配主机资源。

2.4 虚拟机静态迁移技术

虚拟机静态迁移方式是基于“stop-and-copy”模式来进行的,其原理是:首先,由VMM发出挂起指令给被选定待迁移的目标虚拟机,迁移的目标虚拟机收到挂起指令后暂停虚拟机中运行的所有应用程序,然后将被迁移虚拟机的内存拷贝到迁移实施的目标主机上,数据传输结束以后,启动目标主机上的虚拟机并继续向用户提供该服务。

从“stop-and-copy”迁移模式的逻辑可以看出,该模式明显的不足就在于迁移指令的执行开始,应用服务就要暂停其对外的服务能力,从而导致服务的暂停时间过长,应用服务在整个迁移过程中处于不可访问的状态较久,以至于对虚拟机应用提供服务的质量及用户需求造成了严重的影响。

2.5虚拟机动态迁移技术

虚拟机动态迁移方式是虚拟机迁移技术的重要部分,它能够在不关闭虚拟机的情况下,将处于运行状态的虚拟机从一个物理节点迁移到另一个物理节点上,从而实现数据中心节能、服务器的维护和更新等。虚拟机动态迁移,又称为实时迁移或在线迁移,旨在保证正常提供虚拟机上执行服务的情况下,实施虚拟机迁移操作。通常虚拟机的迁移过程是首先暂停虚拟机,虚拟机在服务器之间共享存储系统的只需将系统状态拷贝到目标服务器上,接着重建虚拟机实例状态,恢复虚拟机实例服务,而使用本地存储模式的还需要在暂停虚拟机的过程中复制虚拟机实例镜像到目标服务器。在实时迁移过程中虚拟机的宕机时间将相当短暂,用户几乎感觉不到服务的中断,不会影响服务质量。虚拟机动态迁移操作主要策略有:

1)   迁移触发策略:判断触发迁移的时机,决定什么时候触发迁移操作。目前诸多虚拟机迁移机制都是依据特定值来决定的,即当虚拟机的某个资源使用率高于既定阈值时,立刻触发宿主机实施迁移。

2)   目标虚拟机选择策略:即在超负荷运行的宿主机上选取合适的目标虚拟机实施迁移操作,包括迁移时CPU状态、IO、内存镜像和硬盘数据等。因此在实施迁移操作之前,必须选择好的迁移的目标虚拟机,以便最大程度降低服务器因负载过高而增加的能耗。

3)   目标主机定位策略:给迁移指定的虚拟机选择最佳的目标主机,目标主机的选择可用不同的策略来实现,如随机加权选择策略、最快反应速度策略、首次适应或最佳适应策略等。

3、基于实时反馈的负载均衡资源调度策略

在云平台中VM的动态迁移是非常重要的,而根据什么策略来实施动态迁移就成为了一个非常热门的研究点。本平台则采用了一种基于实时反馈的综合负载均衡资源优化策略。该策略根据云平台中各个宿主机的CPU和内存的实时负载信息,通过把VM从一台重负载的宿主机上动态迁移到一台轻负载的宿主机上的方式实现云平台资源的均衡和高效利用。该策略的关键在于计算制定出VM迁移计划,包括一个或多个迁移操作。每一个迁移操作由一个源宿主机、一个VM和一个目标宿主机组成。如果宿主机中由VM构成的那部分资源利用率是固定并且已知的,那么制定一个VM迁移计划实际上就是一个经典的装箱问题。在这种情况下,一个理想的解决方案是:计算出宿主机的平均负载,计算并找出负载方差最小的一个VM布局,然后将其与云平台现有的虚拟布局进行比较制定出VM迁移计划。但是VM的负载是可变和难以进行测定的,并且VM迁移操作也有资源的耗费,因此迁移结果是很难预测的。

为了使VM的迁移结果可控,本策略使用贪心算法,一次只处理一个宿主机上的VM迁移操作,并且每个宿主机只进行一个VM迁移操作。当宿主机的负载在连续几个取样间隔中的值Tn都超过预定义的阈值时,该宿主机将被作为候选的源宿主机。之后从该宿主机上选取一个合适的VM作为候选VM。为了尽量减少迁移操作,优先选取占用资源最多的那个VM。因为迁移本身是需要消耗资源的,所以本策略需要同时评估VM迁移的价值和资源消耗。

由于VM构成的那部分资源利用率是可变的,难以量化的,进而导致的迁移结果也难以预测。因此本文以下列相关指标和部分假设来量化VM的负载和宿主机的性能:

1) 宿主机的性能由它的配置规格来计算。其中,内存容量取决于宿主机的内存配置;CPU性能取决于宿主机的vCPU个数。

2) 宿主机中VM构成的那部分CPU负载取决于VM中vCPU个数,每个vCPU占满一个物理内核。

3) 宿主机中由VM构成的那部分内存负载取决于VM的内存配置,VM中的每个内存单元占用宿主机中相应物理内存的100%。

因此,目标宿主机在VM迁入之后的负载用以下公式计算:

基于实时反馈的综合负载均衡资源优化策略算法伪代码如下:

 public void LoadBalance()

  {

     if(resource_load_type is not cpu or men) return; //policy is disabled

        if(resource_load_type is cpu) {

          foreach (var host in allhosts) {

                    if(host.hasmigrationvm==true)continue;

                    if(host.CPUut>Ta) { host.Tva++; }else{host.Tva = 0; }

                    if(host.Tva>Tva) { HostListAboveTa.add(host); }

                    if(host.CPUut

                    if(host.Tvb>Tvb) {HostListbelowTb.add(host); }

                }

          foreach (var hostx in HostListAboveTa) {

            var bestTargetHost = null;

            VM list Sorted by cost and value of migration = vms;

             foreach(vm in vms on hostx) {

                   hostlist = get_possible_host_list(vm);

                   foreach(host in hostlist) {

                    if(!HostListbelowTb.contains(host)) continue;

                     host.CPUnewut = host.CPUut + VMncpu/Hostnscore;

                    if(host.CPUnewut>Tb)continue; if(bestTargetHost==null||(bestTargetHost.CPUnewut>host.CPUut.newut))                    bestTargetHost = host;

} }

             if(bestTargetHost!=null) {

                        migrate vm to bestTargetHost;

                        HostListbelowTb.remove(bestTargetHost);

                    } } }

 if(resource_load_type is men)

            {//和CPU的算法描述类似

               }

 }

4、策略方案的应用

基于物联网的城市照明公共服务云平台采用三台机器compute2、compute3、compute4作为计算节点、compute1作为控制节点。将compute2、compute3、compute4组成一个资源池。平台使用KVM虚拟方案,采用m1.tiny、m1.small、m1.medium、m1.large、m1.xlarge五种虚拟机创建模板。平台可以根据用户定制的服务使用不同的虚拟机创建模板。在搭建完框架后,需要对部分的指标进行取样和配置。关键指标的选取和配置如下:

1)取样指标的稳定性。本文提出的策略中,CPU和内存的负载指标将被用来触发VM的迁移操作。特定的取样采集是有偶然性的,所有平台采用了只有当这些负载指标在几次连续的取样中都满足条件时才触发VM的迁移操作,这就需要稳定化设置。

2)资源优化策略的运行频率。平台的采样频次设置为3,采样时间间隔设置为5分钟。因此VM迁移操作在启用该稳定化值后将在15分钟后触发。

3)配置迁移级别。平台可在“high”、“middle”、“low”三个层次上运行,这三个层级配置的阈值为:high: Ta为70%,Tb为40%;middle: Ta为75%,Tb为35%;low: Ta为85%,Tb为30%。平台采用high级别的阈值。

平台采用初始放置在compute2上,使用m1.large模板快速创建4个虚拟机,每个大约占用25%的CPU。经过一段时间后,结果如下表所示:

宿主机

迁移前CPU利用率

迁移后CPU利用率

Compute2

100

50

Compute3

0

25

Compute4

0

25

 结果表明,当CPU超过70%时触发迁移操作,将其中的两个VM势力分别迁移到compute3和compute4上。这样compute2上的负载降低至50%,低于阈值70%,所以将不在进行VM迁移操作。这样该策略可以很好的平衡平台中的资源负载。

5、总结

本文提出了一个基于实时反馈的资源负载均衡策略,并在城市照明公共服务云平台上进行了实验。使得平台上的虚拟机有了均衡的调度,各个虚拟机运行稳定。现在平台上启用了4台虚拟机,其中三个用于公司内部测试,一个搭载着照明监控服务。系统运行至今一直非常稳定,让用户单位享受到“云+端”服务。

参考文献

[1]OpenStack Object Storage Developer Guid. http://docs./.

[2]蔚欢乐. 基于OpenStack的资源动态分配框架的设计与实现

[3]樊勇兵,丁圣勇,陈天,汪来福. 解惑云计算. 人民邮电出版社

[4]郑国《国内外数字化城市管理案例》;中国人民大学出版社,2009-12-01

[5] 钱乐秋《软件工程》第2版;北京清华大学出版社,2013-08-01

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多