一种云环境下服务器资源分配方法和装置
技术领域
本发明属于云计算服务器管理技术领域,具体是一种云环境下服务器资源分配方法和装置。
背景技术
当前,云计算产业蓬勃发展,其应用已经惠及社会各行业。为节约成本,云计算需要能够最大化的使用物理资源,同时还需提供服务质量保障以便能够顺畅运行用户的业务系统。在云计算服务器中,有限的物理资源上运行着各个用户的虚拟机,当多个虚拟机同时使用同一物理资源时便形成竞争关系,如何合理充分利用物理资源成为云计算一直需要解决的问题。为避免某一虚拟机过多占用资源对其他用户造成干扰,管理员通常都会在云环境下部署QOS策略,即服务质量策略,来限制各个虚拟机的资源使用。
现有技术中,openstack管理平台便采用固定的QOS配额限定方式,通过管理员进行资源配置来保证各个用户的资源使用需求。Openstack的QOS可基于flavor的配额管理实现。Openstack的QOS机制并不完善,虚拟机的QOS策略在运行期间难以调整,基于flavor的QOS实现变更非常困难。
中国专利申请201610559371.2,基于Openstack的neutron实现网络QOS的方法,提供neutron客户端SDK和命令行工具,能够针对虚拟机网络接口流量进行控制。但是,该方法中,未对虚拟机磁盘等资源进行限定,且提供的网络QOS策略接口倾向于固定带宽分配,不能适应云平台下的资源使用弹性需求特性。
中国专利申请201110116396.2,提出了一种基于区分服务的云存储系统QoS控制方法,通过将客户端用户请求映射到不同服务质量等级上,服务器根据不同服务质量等级提供不同存储的QOS保证。该方法主要针对分布式存储所涉及到的元数据服务器以及存储服务器进行QOS控制,无法适用于块存储、本地存储等应用场景。
非专利文献,网络QoS约束下的动态网络带宽分配机制(Huang H L,Ho M H,ChenS J,et al.A Dynamic Network Bandwidth Allocation Mechanismunder Network QoSonstraints[C]//2015IEEE International Conference on SmartCity/SocialCom/SustainCom(SmartCity).IEEE,2015:963-968.)和非专利文献,云环境中虚拟机的动态带宽分配器(A.Amamou,M.Bourguiba,K.Haddadou,and G.Pujolle,“A dynamic bandwidthallocatorfor virtual machines in a cloud environment,”in 2012IEEE ConsumerCommunications andNetworking Conference(CCNC),pp.99–104.,2012.),这两篇非专利文献提出了一种区分服务类型的带宽控制方法,通过监控模块收集网络流量信息,当发现监控对象的流量已经超过设定的阈值后,向控制模块发出信息,控制模块通过下发QOS规则来限制VM以及集群的网络流量,QOS规则根据服务类型的不同而不同。该方法只保证监控对象的网络流量不会超过阈值,未对阈值本身进行动态调整。当底层网络资源空闲时,有资源使用需求的虚拟机可能仍然无法获得剩余的空闲资源,导致资源闲置以及资源使用需求无法满足的情况同时出现。
中国专利申请CN201310095506.0,一种基于自适应弹性控制的云计算资源优化配置方法提出了一种自适应的弹性控制的云计算优化配置方法,通过部署监控模块在云计算平台下采集数据,并通过预测模块根据监控信息对下一个阶段的资源使用进行预测,并提前分配所需资源或者延后释放资源的机制来满足用户在实例化虚拟机时能够有足够的资源使用。该方法主要工作在虚拟机实例化阶段,对虚拟机实例化所需的资源进行预测和资源预留,保证实例化阶段能够最快实施,该方法无法对运行过程中的虚拟机资源进行控制和调整。
在云计算环境下,资源需求的弹性伸缩成为一个显著特点,因而固定的QOS规则并不能满足这种资源的弹性变更需求。
发明内容
本发明针对上述不足,提供了一种云环境下服务器资源分配装置。
一种云环境下服务器资源分配装置,包括
包括相互网络连接的若干台主机;各主机通过网络连接,形成服务器集群;
设置于主机内的虚拟机;即虚拟机运行在主机内。
设置于主机内的监控模块,用于获取虚拟机的资源使用速度;
设置于主机内的工作模块,用于控制虚拟机的资源使用速度;
控制平台,通过网络与主机连接;控制平台,可以运行于联网的主机上;
设置于控制平台内的控制模块,用于控制虚拟机资源分配。
进一步地,本发明的云环境下服务器资源分配装置,
监控模块内设置:
磁盘读取速度监控子模块,用于获取虚拟机的磁盘读取速度;
磁盘写入速度监控子模块,用于获取虚拟机的磁盘写入速度;
读取IOPS监控子模块,用于获取虚拟机的读取IOPS值;
写入IOPS监控子模块,用于获取虚拟机的写入IOPS值;
网络入流量速度监控子模块,用于获取虚拟机网络入流量速度;
网络出流量速度监控子模块,用于获取虚拟机网络出流量速度;
工作模块内设置:
磁盘读取速度控制子模块,用于控制虚拟机的磁盘读取速度;
磁盘写入速度控制子模块,用于控制虚拟机的磁盘写入速度;
读取IOPS控制子模块,用于控制虚拟机的读取IOPS值;
写入IOPS控制子模块,用于控制虚拟机的写入IOPS值;
网络入流量速度控制子模块,用于控制虚拟机网络入流量速度;
网络出流量速度控制子模块,用于控制虚拟机网络出流量速度;
本发明还提供了一种云环境下服务器资源分配方法,包括以下步骤:
S1,监控模块在主机上获取n台虚拟机中,每台虚拟机的资源使用速度,第i台虚拟机在t时间内的资源使用速度为resourcei,
第i台虚拟机的资源使用速度限定值limiti;
第i台虚拟机的最小资源使用速度需求值min_resourcei;
其中,i=1,2,3......n;
S2,控制模块收集监控模块获取的虚拟机资源使用速度存储到虚拟机资源使用速度集合VM[]中,
VM=[resource1,resource2......resourcen];
控制模块将虚拟机资源使用速度限定值存储到资源使用速度限定值集合limit[]中,
limit=[limit1,limit2,limit3......limitn];
控制模块将虚拟机最小资源使用速度需求值存储到最小资源使用速度需求集合min_resource[]中,
min_resource=[min_resource1,min_resource2......min_resourcen];
控制模块对调整速度限定值集合new_limit[]各值置零,
其中,new_limit=[new_limit1,new_limit2,new_limit3......new_limitn]
置零时,
new_limit1=0
new_limit2=0
new_limit3=0
……
new_limitn=0
对高负荷值集合FULL_RATE[]置零,
其中,FULL_RATE=[FULL_RATE1,FULL_RATE2,FULL_RATE3......FULL_RATEn]
置零时,
FULL_RATE1=0
FULL_RATE2=0
FULL_RATE3=0
……
FULL_RATEn=0
其中,i=1,2,3......n;
S3,计算n台虚拟机的平均资源使用速度resourcerate
S4,判断当前所有虚拟机的平均资源使用速度resourcerate是否超过资源使用速度安全值resourcetotal,
resourcerate>resourcetotal
S5,若虚拟机的平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal,则返回S1步继续监控;
若虚拟机的平均资源使用速度resourcerate超过资源使用速度安全值resourcetotal则进入S6步;
S6,计算虚拟机的平均资源使用速度resourcerate超过安全值的超过量Δ;
Δ=resourcerate-resourcetotal
S7,选出VM[]集合中最大资源使用速度为resourcek,其中1≤k≤n,记虚拟机中最大资源使用速度max_rate=resourcek;
S8,设定第k台虚拟机的调整速度限定值为new_limitk,其中
若new_limitk<min_resourcek,则new_limitk=min_resourcek,其中min_resourcek为最小资源使用速度需求集合min_resource[]中第k台虚拟机的最小资源使用速度需求值;
将调整速度限定值new_limitk存储到调整速度限定值集合new_limit[]中;
设定超过量Δ为Δ=Δ-(max_rate-new_limitk);
移除VM[]集合中的resourcek,同时将resourcek加入高负荷值集合FULL_RATE[]中;
判断超过量Δ是否大于0,若Δ>0返回S7步;
S9,逐个检测VM[]集合中虚拟机资源使用速度,选出resourcej>limitj×XD的虚拟机,其中1≤j≤n,XD为第一限定系数,取值为0.6-1,将第j台虚拟机资源使用速度resourcej加入到高负荷值集合FULL_RATE[]中,将第j台资源使用速度限定值limitj加入到调整速度限定值集合new_limit[]中;
S10,找出高负荷值FULL_RATE[]集合中的非零值,对资源使用速度限定值集合limit[]中相应值进行更新,
其中,0<p<n,p为FULL_RATE[]非零值编号;
S11,控制模块将limit[]集合中的限定值逐个下发到对应虚拟机所在主机上的工作模块中;返回S1步。
进一步地,S5步中,虚拟机的平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal进行以下步骤,
S51,计算虚拟机资源闲置量ΔA,
ΔA=resourcetotal-resourcerate
S52,逐个检测VM[]集合中虚拟机资源使用速度,选出resourcej>limitj×XE的虚拟机,其中1≤j≤n,XE为第二限定系数,取值为0.6-1,将第j台虚拟机资源使用速度resourcej加入到高负荷值集合FULL_RATE[]中;
S53,当ΔA小于等于零时,控制模块将limit[]集合中的限定值逐个下发到对应虚拟机所在主机上的工作模块中;返回S1步;
当大于零时,进入S54步,
S54,选出高负荷值集合FULL_RATE[]中非零值FULL_RATEq,将VM[]集合和min_resource[]集合中相应值进行除法计算得速度比较值集合A[],其中0<q<n,q为FULL_RATE[]非零值编号;选出系列速度比较值中最小值为Ar;
对标记最小值minA赋值,其中minA=resourcer,其中r为速度比较值A中的最小值所对应的下标编号;
S55,更新资源使用速度限定值集合limit[]中第r台虚拟机资源使用速度限定值limitr,
当ΔA<minA×2时,limitr=ΔA+minA;
否则,limitr=minA×2
更新超过量ΔA,ΔA=ΔA-(limitr-minA),移除高负荷值集合FULL_RATE[]中的FULL_RATEr;
返回S53步;
进一步地,所述资源使用速度值resource为,磁盘读取速度、磁盘写入速度、读取IOPS、写入IOPS、网络入流量速度或网络出流量速度之一。
进一步地,所述第一限定系数XD取值为0.8,所述第二限定系数XE取值为0.8。
本发明的有益技术效果:
本发明的云环境下服务器资源分配方法,针对传统的QOS策略容易导致用户资源需求无法满足且易造成物理资源浪费的问题,通过云计算环境下部署监控虚拟机资源使用情况的监控模块,通过计算,来动态调整云环境下各个虚拟机资源使用的QOS规则,一方面对使用超负荷的虚拟机进行资源限制,另一方面对资源使用不充分的虚拟机进行资源重新分配,使整个服务器资源利用率大大提高,同时保证了服务质量,保证每台虚拟机能够顺畅运行。
附图说明
图1为本发明的结构示意图。
具体实施方式
以下结合实施例及附图作进一步的详细说明。
本发明的云环境下服务器资源分配装置,包括
包括相互网络连接的若干台主机;具体主机数量根据服务器集群规模设定;
设置于主机内的虚拟机;
设置于主机内的监控模块,用于获取虚拟机的资源使用速度;
设置于主机内的工作模块,用于控制虚拟机的资源使用速度;
控制平台,通过网络与主机连接,
设置于控制平台内的控制模块,用于控制虚拟机资源分配。
进一步地,本发明的云环境下服务器资源分配装置,
监控模块内设置:
磁盘读取速度监控子模块,用于获取虚拟机的磁盘读取速度;
磁盘写入速度监控子模块,用于获取虚拟机的磁盘写入速度;
读取IOPS监控子模块,用于获取虚拟机的读取IOPS值;
写入IOPS监控子模块,用于获取虚拟机的写入IOPS值;
网络入流量速度监控子模块,用于获取虚拟机网络入流量速度;
网络出流量速度监控子模块,用于获取虚拟机网络出流量速度;
工作模块内设置:
磁盘读取速度控制子模块,用于控制虚拟机的磁盘读取速度;
磁盘写入速度控制子模块,用于控制虚拟机的磁盘写入速度;
读取IOPS控制子模块,用于控制虚拟机的读取IOPS值;
写入IOPS控制子模块,用于控制虚拟机的写入IOPS值;
网络入流量速度控制子模块,用于控制虚拟机网络入流量速度;
网络出流量速度控制子模块,用于控制虚拟机网络出流量速度;
本发明的云环境下服务器资源分配方法,包括以下步骤:
S1,监控模块在主机上获取n台虚拟机中,每台虚拟机的资源使用速度,第i台虚拟机在t时间内的资源使用速度为resourcei,
第i台虚拟机的资源使用速度限定值limiti;
第i台虚拟机的最小资源使用速度需求值min_resourcei;
其中,i=1,2,3......n;
S2,控制模块收集监控模块获取的虚拟机资源使用速度存储到虚拟机资源使用速度集合VM[]中,
VM=[resource1,resource2......resourcen];
控制模块将虚拟机资源使用速度限定值存储到资源使用速度限定值集合limit[]中,
limit=[limit1,limit2,limit3......limitn];
控制模块将虚拟机最小资源使用速度需求值存储到最小资源使用速度需求集合min_resource[]中,
min_resource=[min_resource1,min_resource2......min_resourcen];
控制模块对调整速度限定值集合new_limit[]各值置零,
其中,new_limit=[new_limit1,new_limit2,new_limit3......new_limitn]
置零时,
new_limit1=0
new_limit2=0
new_limit3=0
……
new_limitn=0
对高负荷值集合FULL_RATE[]置零,
其中,FULL_RATE=[FULL_RATE1,FULL_RATE2,FULL_RATE3......FULL_RATEn]
置零时,
FULL_RATE1=0
FULL_RATE2=0
FULL_RATE3=0
……
FULL_RATEn=0
其中,i=1,2,3......n;
S3,计算n台虚拟机的平均资源使用速度resourcerate
S4,判断当前所有虚拟机的平均资源使用速度resourcerate是否超过资源使用速度安全值resourcetotal,
resourcerate>resourcetotal
S5,若虚拟机的平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal,则返回S1步继续监控;
若虚拟机的平均资源使用速度resourcerate超过资源使用速度安全值resourcetotal则进入S6步;
S6,计算虚拟机的平均资源使用速度resourcerate超过安全值的超过量Δ;
Δ=resourcerate-resourcetotal
S7,选出VM[]集合中最大资源使用速度为resourcek,其中1≤k≤n,记虚拟机中最大资源使用速度max_rate=resourcek;
S8,设定第k台虚拟机的调整速度限定值为new_limitk,其中
若new_limitk<min_resourcek,则new_limitk=min_resourcek,其中min_resourcek为最小资源使用速度需求集合min_resource[]中第k台虚拟机的最小资源使用速度需求值;
将调整速度限定值new_limitk存储到调整速度限定值集合new_limit[]中;
设定超过量Δ为Δ=Δ-(max_rate-new_limitk);
移除VM[]集合中的resourcek,同时将resourcek加入高负荷值集合FULL_RATE[]中;
判断超过量Δ是否大于0,若Δ>0返回S7步;
S9,逐个检测VM[]集合中虚拟机资源使用速度,选出resourcej>limitj×XD的虚拟机,其中1≤j≤n,XD为第一限定系数,取值为0.6-1,针对不对的平台,第一限定系统可以在0.6-1之间进行选择,将第j台虚拟机资源使用速度resourcej加入到高负荷值集合FULL_RATE[]中,将第j台资源使用速度限定值limitj加入到调整速度限定值集合new_limit[]中;
S10,找出高负荷值FULL_RATE[]集合中的非零值,对资源使用速度限定值集合limit[]中相应值进行更新,
其中,0<p<n,p为FULL_RATE[]非零值编号;
S11,控制模块将limit[]集合中的限定值逐个下发到对应虚拟机所在主机上的工作模块中;返回S1步。
作为一种改进,在S5步中,虚拟机的平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal时,表明当前虚拟机的资源使用量还没达到物理资源提供的能力,物理资源仍然有空闲资源,可以调节受到当前配额上限限制的虚拟机,将基上限调大,以满足其需求,可以不影响整体运行稳定的情况下,尽量满足个别资源需求大的虚拟机,进一步提高使用效率。
具体为S5步中,虚拟机的平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal进行以下步骤,
S51,计算虚拟机资源闲置量ΔA,
ΔA=resourcetotal-resourcerate
S52,逐个检测VM[]集合中虚拟机资源使用速度,选出resourcej>limitj×XE的虚拟机,其中1≤j≤n,XE为第二限定系数,取值为0.6-1,针对不对的平台,第二限定系统可以在0.6-1之间进行选择,将第j台虚拟机资源使用速度resourcej加入到高负荷值集合FULL_RATE[]中;
S53,当ΔA小于等于零时,控制模块将limit[]集合中的限定值逐个下发到对应虚拟机所在主机上的工作模块中;返回S1步;
当大于零时,进入S54步,
S54,选出高负荷值集合FULL_RATE[]中非零值FULL_RATEq,将VM[]集合和min_resource[]集合中相应值进行除法计算得速度比较值集合A[],其中0<q<n,q为FULL_RATE[]非零值编号;选出系列速度比较值中最小值为Ar;
对标记最小值minA赋值,其中minA=resourcer,其中r为速度比较值A中的最小值所对应的下标编号;
S55,更新资源使用速度限定值集合limit[]中第r台虚拟机资源使用速度限定值limitr,
当ΔA<minA×2时,limitr=ΔA+minA;
否则,limitr=minA×2
更新超过量ΔA,ΔA=ΔA-(limitr-minA),移除高负荷值集合FULL_RATE[]中的FULL_RATEr;
返回S53步;
针对不同的使用场合,本发明的资源使用速度值resource为,磁盘读取速度、磁盘写入速度、读取IOPS、写入IOPS、网络入流量速度或网络出流量速度之一。
本发明的云环境下服务器资源分配方法,当虚拟机平均资源使用速度resourcerate超过资源使用速度安全值resourcetotal时,对于资源使用速度较高的虚拟机进行调节,调节其资源使用速度限定值,逐步动态降低资源使用速度限定值,用以使每台虚拟机可以顺畅运行。
当虚拟机平均资源使用速度resourcerate没有超过资源使用速度安全值resourcetotal时,选出资源使用速度受到资源使用速度限定值限制的虚拟机,适当提高资源使用限定值,使整个服务器资源得以更有效利用,同时不影响其它虚拟机顺畅运行。