一种容器云的资源调度方法及设备与流程

文档序号:17158494发布日期:2019-03-20 00:19阅读:221来源:国知局
一种容器云的资源调度方法及设备与流程

本发明涉及计算机技术领域,更具体地,涉及一种容器云的资源调度方法及设备。



背景技术:

随着云计算技术的快速发展,和容器化技术的成熟,在业界内得到了广泛使用。同时业务的更代迭替,新业务对数据中心的资源需求也发生了巨大的变化。中国移动一些在线业务的规律特性,如手厅、营业厅系统的业务流量每天的高峰和低谷、月初月末的高峰和低谷等。在高峰时,必须快速响应业务需求,同时在低谷时,能够在保证业务不受影响的情况下,回收资源,供其他业务使用。所以数据中心的建设及资源的智能调度对于业务的正常运行起着非常关键的作用。一些业务的优惠活动及导致应用会面临高并发,突发流量或高流量等情况,如果使用传统的数据中心中资源的分配方式基本不可行,在高并发,突发流量或高流量的情况时,数据中心无法准确的响应业务资源需求,造成业务的不稳定运行。为了解决这类问题,业内现在通用的做法是采用开源的调度框架(marathononmesos、k8s等)来实现业务实例的快速扩展,可以满足业务实例简便纵向和横向扩展的需求。在业务压力来临之前,不操作底层资源的前提下,通过快速启动实例来应对业务。可保证业务的连续性。系统架构图1所示。

如图1所示,采用了master-slave架构,slave节点表示执行任务的节点,为了保证业务的正常运行,数据中心管理员会尽量扩大应用的配置,即业务实例的配置参数,如cpu和内存参数,给其分配足够的资源,使其能够应对足够大的业务流量。同时在有活动进行时,可以快速的通过一些调度框架或平台来快速的横向扩展。避免传统虚机式的复杂审核流程,减少人力浪费。避免高峰时段,由于不能快速扩展应用而导致的业务压力和业务不可连续性。

虽然可以通过mesos或k8s来对数据中心中的cpu和内存来进行资源调度,保证业务的稳健性,但在多数情况下,对业务的运行状况和资源需求分析不够准确。同时一些现存的开源组件存在一些悲观锁机制,如mesos在给多个框架进行资源要约时,资源的offer同时只会分派给一个框架,这就造成了一种悲观机制,资源被单独框架独占,除非框架主动的汇报超时或释放资源。同时一些现有技术框架在共享调度时,频繁的调度,发生冲突的几率增大,对整体调度的性能造成影响。在以下情况下会导致数据中心的业务运行出现故障:1)上层应用框架的增多,底层资源调度框架的负载加重,同时处理效率降低,资源的需求响应减慢;会导致业务出现响应慢,影响客户感知。2)弹性扩缩频繁时,资源不停地发送和回收,造成业务的不稳定性和不连续性。在发生以上问题时,数据中心只能预先或后期维护,预先给应用分配足够多的资源,这样造成数据中心的资源利用率大幅度降低,事后为过载的业务进行分配资源。在业务来临时,导致业务系统宕机,需要重新启动,这对于核心系统来说是不可接受的。

基于上述系统架构的现有技术的主要缺点如下:

(1)随着集群规模的扩大和业务的重要程度区分,导致集群存在多个框架,而资源池在进行资源要约的时候,同时只会与一个框架进行交互,这样就造成一种悲观锁,存在分配调度的瓶颈,不能迅速响应资源需求,造成业务资源短缺,影响其业务的稳健性,使各系统业务不能稳定运行。

(2)部分技术实现了共享调度,但是共享调度时冲突发生的频率,直接影响了整体调度器的性能。同时由于没有集中的调度模块,难以对所有资源分组(namespace)或用户的资源使用量做精确限制。上层调度器数量仍然不能很多,并行分发完整的集群状态的开销较大,对业务的连续性造成影响。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的容器云的资源调度方法及设备。

根据本发明的一个方面,提供一种容器云的资源调度方法,包括:

s1,获取当前调度任务,基于容器云的资源监控结果进行调度计算,获取所述当前调度任务的部署位置;

s2,基于所述部署位置,利用容器云资源池的宿主机进行实时调度,以将所述部署位置对应的资源分配给所述当前调度任务。

进一步,所述s1之前还包括:

s0,获取实时调度任务,并将所述调度任务写入调度请求队列中;

相应地,s1中所述获取当前调度任务,进一步包括:从所述调度请求队列中获取当前调度任务。

进一步,所述s1中,所述基于容器云的资源监控结构进行调度计算,获取所述当前调度任务的部署位置,进一步包括:

s1.1,利用超卖机制和/或分散策略过滤掉部分主机,获取可部署主机列表;

s1.2,基于所述可部署主机列表,根据容器云的资源监控结果获得的主机负载、主机性能指标和对应的权重,进行资源排序,以获取所述当前调度任务的部署位置。

进一步,所述s1.1,利用超卖机制和/或分散策略过滤掉部分主机,获取可部署主机列表,进一步包括:

设置超卖开关,且对于不同的调度任务设置不同的超卖系数;

基于所述超卖机制和/或分散策略获取所述容器云资源池的主机列表;

基于所述主机列表,选择满足预设条件的主机加入所述可部署主机列表。

进一步,所述s1.2,基于所述可部署主机列表,根据容器云的资源监结果控获得的主机负载、主机性能指标和对应的权重,进行资源排序,进一步包括:

基于所述可部署主机列表,获取主机负载小于第一预设阈值的主机作为备选主机;

基于所述备选主机,利用下式获取每个主机的负载分值scorei:

scorei=k1×mericscpu+k2×mericsmem+k3×mericsio,

其中,mericscpu为cpu负载、mericsmem为memory负载和mericsio为io负载,k1、k2和k3分别为cpu负载、memory负载和io负载的权重;

基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置。

进一步,所述s2中,基于所述部署位置,利用容器云资源池的宿主机进行实时调度,以将所述部署位置对应的资源分配给所述当前调度任务,进一步包括:

基于容器云的资源监控结果,扩展实例数和/或调整实例的资源配置;

容器云资源池的宿主机将所述当前调度任务的部署位置对应的实例资源分配给所述当前调度任务。

进一步,所述基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置,包括:

基于所述每个主机的负载分值进行资源排序,获取负载分值较高的前n个主机作为所述当前调度任务的部署位置,其中n为整数,n大于等于1;

所述基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置,之后还包括:依次向所述n个主机对应的宿主机申请资源;若宿主机全部拒绝,则根据所述容器云资源池的全局资源重新进行调度计算。

进一步,调度任务包括在线任务、离线任务、定时任务和批处理任务中的一种或多种;

所述基于容器云的资源监控结果,扩展实例数和/或调整实例的资源配置,进一步包括:

宿主机根据所述资源监控结果,利用本机群资源扩展实例数;

若所述在线任务处于流量峰值或宿主机负载超过第二预设阈值,则调整所述宿主机上的批处理任务或离线任务的内存或cpu配额。

根据本发明的另一个方面,还提供一种容器云的资源调度设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例一种容器云的资源调度方法及其任一可选实施例的方法。

本发明实施例提出一种容器云的资源调度方法及设备,基于容器云资源池的整体资源的监控结果进行调度计算,不局限于某个框架;根据计算获得的部署位置,利用容器云资源池的宿主机进行实时调度,由于使用了宿主机作为集中调度模块,可以对所有资源分组(namespace)或用户的资源使用量做精确限制,解决了共享调度时冲突发生的频率;基于整体资源的调度计算和集中调度机制,可支持的上层调度的数量大大增加,可以使整体资源池的负载更为均衡。

附图说明

图1为现有技术调度框架系统结构示意图;

图2为本发明实施例一种容器云的资源调度方法流程图;

图3为本发明实施例一种容器云的资源调度方法的框架示意图;

图4为本发明实施例利用超卖机制和/或分散策略过滤主机的流程示意图;

图5为本发明实施例根据主机负载分值进行排序的流程示意图;

图6为本发明实施例一种容器云的资源调度设备的结构框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

本发明实施例所述的一种容器云的资源调度方法及设备,其中容器云为一种计算机资源。通常,如果要在一台服务器上运行多个任务,传统的方法是将其划分为多个虚拟机,使用每个虚拟机来运行一个任务。但是虚拟机启动很慢,因为它们必须启动整个操作系统,这要花上几分钟的时间。而且这会占用大量资源,因为每个虚拟机都需要运行一个完整的操作系统实例。容器则提供了某种类似的行为,是一个完整的执行环节,不依赖外部,但是速度更快一些,因为启动一个容器就像启动一个进程,所以非常适合服务的构建和重组。容器云(caas)以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建、发布和运行分布式应用的平台。当容器云专注于资源共享与隔离、容器编排与部署时,它更接近传统的云主机(iaas);当容器云渗透到应用支撑与运行时环境时,它更接近传统的平台服务(paas)。

本发明实施例为解决现有技术的不足,提供一种容器云的资源调度方法,可以在大规模的物理机群上运行成百上千的业务,在多项业务出现请求高峰时,能够并发的处理资源请求,能够快速响应,实现秒级提供资源,保障系统的稳定运行,大大缩短业务请求资源时间。针对多业务、频调度的业务,数据中心能够很好的进行应对,保障业务正常运行,如图2所示,所述一种容器云的资源调度方法包括:

s1,获取当前调度任务,基于容器云的资源监控结果进行调度计算,获取所述当前调度任务的部署位置;

本发明实施例中的调度任务包括在线任务、离线任务、定时任务和批处理任务中的一种或多种。容器云的资源监控主要是监控容器云资源池的全部主机的负载情况、性能指标等。

s2,基于所述部署位置,利用容器云资源池的宿主机进行实时调度,以将所述部署位置对应的资源分配给所述当前调度任务。所述部署位置可以是一个或多个备选的目标资源。

本发明实施例所述方法,可以在包括资源层、平台层和应用层的系统结构中实施。其中调度任务来自应用层,包括在线任务、离线任务、定时任务和批处理任务;容器云的资源监控和调度计算位于平台层;实时调度位于资源层,资源层为大规模的物理机群组成的主机系统。

本发明实施例基于容器云资源池的整体资源的监控结果进行调度计算,不局限于某个框架;根据计算获得的部署位置,利用容器云资源池的宿主机进行实时调度,由于使用了宿主机作为集中调度模块,可以对所有资源分组(namespace)或用户的资源使用量做精确限制,解决了共享调度时冲突发生的频率;基于整体资源的调度计算和集中调度机制,可支持的上层调度的数量大大增加,可以使整体资源池的负载更为均衡。其中,所述部署位置是指应用所部署的机房、机架、集群以及集群中的主机,即应用所部署在哪个机房、在该机房的哪个机架、在该机架的哪个集群以及在该集群中的哪个主机中。

在一个可选的实施例中,所述s1之前还包括:

s0,获取实时调度任务,并将所述调度任务写入调度请求队列中;由于应用层的调度任务一般是并发的,会同时收到多个调度任务,因此可以将实时收到的调度任务放入调度请求队列中进行排队处理,可以提高资源调度的有序性。

若首先将调度任务放入调度请求队列中了,则s1中所述获取当前调度任务,进一步包括:从所述调度请求队列中获取当前调度任务。所述当前调度任务是调度请求队列的出口的第一个调度任务。

基于调度请求队列的容器云的资源调度方法的框架示意图如图3所示,来自应用层的调度请求进人调度请求队列,即将调度任务id写入调度请求队列中;调度请求队列中的调度请求依次取出,并进行调度计算,决策出备选的部署位置;将备选的部署位置后通过容器云资源池的宿主机(host)执行实时调度,全部主机资源会整合为一个资源池提供给所有调度任务共享,资源池中每个宿主机都有一个对应的executor来负责管理。

在一个可选的实施例中,所述s1中,所述基于容器云的资源监控结果进行调度计算,获取所述当前调度任务的部署位置,进一步包括:

s1.1,利用超卖机制和/或分散策略过滤掉部分主机,获取可部署主机列表;

s1.2,基于所述可部署主机列表,根据容器云的资源监控结果获得的主机负载、主机性能指标和对应的权重,进行资源排序,以获取所述当前调度任务的部署位置。

本发明实施例通过步骤s1.1对主机进行预筛选(pre-screen),通过超卖、分散限制策略,提前过滤掉一部分不符合需求的主机,这样可以降低资源调度计算时的复杂度,加快调度速度;通过步骤s1.2进行排序,排序是针对上一步预筛选过程的又一次筛选,是一个优中选优的概念,通过主机负载和主机性能指标和对应权重,最终计算出一个rank值,根据rank值排序最终得出最优部署位置。

本发明实施例的底层为调度资源池中共享的宿主机集群,支持pool级别硬隔离,如在线服务与数据库/缓存的实例部署在不同的物理机集群中;支持资源软隔离,如在线服务离线任务混布部署,通过cgroups等机制隔离,并根据各主机的当前负载设置权重。

本发明实施例所述超卖机制,是指汇报资源时,所汇报的资源超出自己的实际资源量;假如,一个节点的cpu,是8c,通过超卖,汇报资源时,汇报16c等。所述分散策略是指根据节点的位置,进行跨机房、跨机架部署,是一种分散的部署。

在一个可选的实施例中,所述s1.1,利用超卖机制和/或分散策略过滤掉部分主机,获取可部署主机列表,进一步包括:

设置超卖开关,且对于不同的调度任务设置不同的超卖系数;

基于所述超卖机制和/或分散策略获取所述容器云资源池的主机列表;

基于所述主机列表,选择满足预设条件的主机加入所述可部署主机列表。其中,所述预设条件可根据具体的应用需求而设置,本发明实施例对此不作限定。

本发明实施例在预筛选阶段采用超卖机制,通过设定超卖开关和超卖系数来保证系统业务的稳定性。在生产中大部分应用对于资源的需求,可以分为两类资源,动态资源(cpu和io等)和静态资源(内存和磁盘等)。针对不同业务设置不同的超卖系数,对于核心系统,设置较高权重系数。

同时,为了保证业务的高可用性,采用分散部署的方式保证应用跨机房、跨机架、跨主机部署,可以有效提高应用业务的高可用性。随着物理集群规模的扩大,宿主机故障频次也会相应提高。如果一个在线服务的所有实例都部署在同一个宿主机上、同一个机架等,很可能出现宿主机宕机后服务整体不可用,这是我们不能接受的。在进行应用部署时,在相同的交换机或者机架下,限制实例的数量来避免网络问题导致的服务不可用。预筛选阶段的调度流程图如图4所示。

在一个可选的实施例中,所述s1.2,基于所述可部署主机列表,根据容器云的资源监控结果获得的主机负载、主机性能指标和对应的权重,进行资源排序,进一步包括:

基于所述可部署主机列表,获取主机负载小于第一预设阈值的主机作为备选主机;通过设置第一预设阈值,进行比较,将负载较低的主机直接加入备选列表。

基于所述备选主机,利用下式获取每个主机的负载分值scorei:

icorei=k1×mericscpu+k2×mericsmem+k3×mericsio,

其中,mericscpu为cpu负载、mericsmem为memory负载和mericsio为io负载,k1、k2和k3分别为cpu负载、memory负载和io负载的权重;

基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置。

本发明实施例综合考虑多项指标,如主机平均负载、cpu、内存等因素。资源弹性调度系统会从监控系统中获取宿主机的系统监控数据,包括了cpu、memory、io等指标。针对负载较低的宿主机会优先考虑,若负载较低会直接加入备选列表。一些负载较高的宿主机,性能下降,处理能力变弱,对服务的可连续性不能保证。其次再对cpu、memory、io因素进行综合考虑。在计算个主机的负载分值时,cpu负载、memory负载和io负载的权重可根据实际情况或处理策略而灵活设置。优选的,可采用等比权值,即k1=k2=k3=1/3,则上式可表示为:

由于本发明实施例中的负载数据是根据容器云的资源监控得到,因此mericsi表示该指标在当前时间的百分比。其中排序阶段的调度流程图如图5所示。

在一个可选的实施例中,所述s2中,基于所述部署位置,利用容器云资源池的宿主机进行实时调度,以将所述部署位置对应的资源分配给所述当前调度任务,进一步包括:

基于容器云的资源监控结果,扩展实例数和/或调整实例的资源配置;

容器云资源池的宿主机将所述当前调度任务的部署位置对应的实例资源分配给所述当前调度任务。

本发明实施例所述实例是指应用实例。在容器云领域,应用实例就是启动的一些封装了应用的docker容器。

本发明实施例中,在调度任务混布情况下,宿主机上的exector可以监控宿主机资源的一些波动,动态的调度业务部署,保证在线业务的正常的前提下,通过扩展应用实例的数量,来动态的增加在线业务的资源。容器云资源池的宿主机将所述当前调度任务的部署位置对应的实例资源分配给所述当前调度任务。

如前所述,调度任务包括在线任务、离线任务、定时任务和批处理任务中的一种或多种;

所述基于容器云的资源监控结果,扩展实例数和/或调整实例的资源配置,进一步包括:

宿主机根据所述资源监控结果,利用本机群资源扩展实例数;

若所述在线任务处于流量峰值或宿主机负载超过第二预设阈值,则调整所述宿主机上的批处理任务或离线任务的内存或cpu配额。

由于各调度任务处理优先级的可能不同,例如在线任务比离线任务的优先级更高,需要更快速更优先的获取资源,因此在线任务处于流量峰值或宿主机负载超过第二预设阈值时,调整所述宿主机上的批处理任务或离线任务的内存或cpu配额。

在一个可选的实施例中,所述基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置,包括:

基于所述每个主机的负载分值进行资源排序,获取负载分值较高的前n个主机作为所述当前调度任务的部署位置,其中n为整数,n大于等于1;

所述基于所述每个主机的负载分值进行资源排序,获取负载分值较高的主机作为所述当前调度任务的部署位置,之后还包括:依次向所述n个主机对应的宿主机申请资源;若宿主机全部拒绝,则根据所述容器云资源池的全局资源重新进行调度计算。

在一个具体实施例中,如果两个调度任务基于共享资源状态同时申请某个宿主机上同一块资源,则宿主机executor会告知根据自身的消息队列中消息的顺序来处理,资源先到先得。当消息队列长度超过上限,宿主机executor会主动告知调度任务,队列已满;此时调度任务会继续向下一个备选资源的宿主机executor尝试申请,加大并发力度。当调度计算过程决策出一个根据调度rank权重排序好的资源可部署位置列表后,调度任务会取负载分值排序的前n个元素,依次向对应的宿主机executor申请资源,直到宿主机executor返回批准(调度成功);如果取出的前n个均被拒绝,调度任务需要根据新的全局资源池共享状态再次调度计算。

本发明实施例所述一种容器云的资源调度方法,可以获得以下用途或效果:

1)当集群规模过大,资源调度可能会更频繁,采用预筛选和rank评分机制可以减少资源请求冲突,提高调度系统的并发处理能力,及时对资源请求予以相应。

2)动态的资源分配,在采用混合部署模式中,针对不同的业务类型进行实时调度,检查宿主机上的资源使用情况。对一些在线业务或核心的业务系统,宿主机资源出现告警时,可以动态减少离线业务或非核心业务的资源占比,保证在线业务和核心业务的正常运行。大幅提升数据中心的资源使用率。

本发明实施例能够快速响应业务资源需求,保证业务正常运行的前提下,提高整体数据中心的资源利用率。将每个宿主机上请求队列长度作为参考值,以并行的方式来处理高并发资源请求,能够加快计算效率,并根据主机负载等情况,得出局部最优解的主机。同时超卖和分散的机制,降低计算的复杂度。在离线和在线服务混布的场景中,可以实时的调度不同任务的资源配额,优先保证在线服务的正常运行。具有很强的实用性和扩展性,是技术亮点,应予以保护。

本发明实施例从生产实际需求考虑,弥补了传统数据中心中不能快速动态分配资源及整体资源利用率偏低的缺陷。大大提高了数据中心的稳健性,在大规模集群和大规模应用的场景中,能够对高并发,高流量或突发流量而引起的资源短缺问题,快速保证业务的正常运行。同时本方案中所提到的智能调度算法采用超卖和分散机制,进行底层资源主机的预筛选,减少在请求资源时一些不必要的计算复杂度,加快调度速度,及时响应资源需求。大大提高了数据中心中的稳健性,并具有很强的实用性和扩展性。

图6示出了本发明实施例一种容器云的资源调度设备的结构框图。

参照图6,所述设备,包括:处理器(processor)501、存储器(memory)502和总线503;

其中,所述处理器501和存储器502通过所述总线503完成相互间的通信;

所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取当前调度任务,基于容器云的资源监控进行调度计算,获取所述当前调度任务的部署位置;基于所述当前调度任务的部署位置,利用容器云资源池的宿主机进行实时调度。

本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取当前调度任务,基于容器云的资源监控进行调度计算,获取所述当前调度任务的部署位置;基于所述当前调度任务的部署位置,利用容器云资源池的宿主机进行实时调度。

本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取当前调度任务,基于容器云的资源监控进行调度计算,获取所述当前调度任务的部署位置;基于所述当前调度任务的部署位置,利用容器云资源池的宿主机进行实时调度。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的容器云的资源调度设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1