一种针对Linux容器的资源部署方法及系统与流程

文档序号:17318552发布日期:2019-04-05 21:24阅读:200来源:国知局
一种针对Linux容器的资源部署方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种针对linux容器的资源部署方案。



背景技术:

作为实现linux内核功能的一项重要技术,linux容器技术(lxc)距今已有十几年的发展历史。该技术通过构建工具包使得不同进程间彼此隔离,这样的隔离不需要借助硬件虚拟化。这里参考图1对linux容器技术的原理进行解释说明,如图所示,通过容器作为隔离机制,将宿主机(即物理机实体)的资源分割为不同区域,多个容器共享同一个linux内核,每个容器中容纳一个应用,使得针对不同应用的程序的执行彼此独立。可以认为,容器是在现有的操作系统上进行了一层软件的虚拟化,容器之间共享内核,虚拟化层次很少,使其相比于虚拟机的虚拟化而言具有更小的开销和资源消耗量。由于容器技术具有轻便、简洁的优点,其受到了各大云服务提供商的青睐,是目前火热的虚拟化技术。

比较典型的linux容器技术包括:docker、openvz、freebsdjails、solariscontainers。基于这些技术的大多数开源系统对资源的部署策略都非常简单,往往只考虑针对cpu和内存的匹配。然而,集群中的资源通常都是多维的,例如cpu、内存、网络带宽,gpu,blocki/o带宽、存储等,若是在进行资源部署时没能保证多维资源的均衡使用,则容易造成集群中出现资源碎片。假设仅考虑集群中的三维资源,cpu、内存和存储,基于现有的策略可能会出现cpu用完而内存还剩余很多的情况,这样会造成资源的浪费。因而,需要一种能够均衡各类资源的部署策略,来充分利用集群中的多维资源。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种针对linux容器的资源部署方法,包括:

1)针对每一个物理主机,根据要搭建的容器对n维资源的需求情况以及所述物理主机能提供所述n维资源的情况,计算所述物理主机在每一维度的资源上与所述容器的匹配度,n>1;

2)在n维空间内,基于由设置的可行域边界值m所确定的可行域范围,筛选出在每一维度的资源上与所述容器的匹配度均处于所述可行域范围内的一个或多个物理主机,m>0。

优选地,根据本发明的方法,其中步骤1)包括:将所述物理主机在各个维度的资源上与所述容器的匹配度均转换到统一的数值区间。

优选地,根据本发明的方法,其中通过下式将所述物理主机在各个维度的资源上与所述容器的匹配度均转换到统一的数值区间:

scored(p,c)=(used+γd)/td*100

其中,scored为物理主机p在第d维资源上与所述容器c的匹配度,used是物理主机p针对所述第d维资源的使用量,td是物理主机p针对所述第d维资源的总量,γd是容器c对所述第d维资源的需求量。

优选地,根据本发明的方法,其中步骤2)中所述可行域范围是在n维空间内与最优解的距离小于m的区域,所述最优解为在n维空间内每个维度的值均相等的解。

优选地,根据本发明的方法,其中步骤2)中采用下式判断一个物理主机是否满足在每一维度的资源上与所述容器的匹配度均处于所述可行域范围内:

其中,xi为第i维的资源匹配度,n为资源的维度数量,m为设置的可行域边界值。

优选地,根据本发明的方法,其中步骤2)中所述可行域范围是在n维空间内与原点的距离小于m的区域,所述原点为在n维空间内每个维度的值均为0的点。

优选地,根据本发明的方法,其中,还包括:

3)针对筛选出的每一个物理主机,计算用于表示在将其分配给所述容器后全部主机集群的资源均衡情况的资源均衡因子;

4)根据所述资源均衡因子,选择使得全部主机集群的资源均衡情况最优的物理主机分配给所述容器。

优选地,根据本发明的方法,其中步骤3)以下式计算将当前容器部署在备选主机k上时的所述资源均衡因子:

其中,hostk_used是备选主机k在维度d上已经使用资源情况,hosti_used是其他备选主机i在维度d上已经使用资源情况。γd是当前容器对所述第d维资源的需求量,n是资源的维度数量,m是集群中物理主机的数量。

并且,步骤4)包括:选择所述资源均衡因子最小的物理主机作为分配给所述容器的物理主机。

优选地,根据本发明的方法,,其中步骤4)包括:在多个物理主机的资源均衡因子相同时,根据所述容器中要运行的应用所侧重的资源,调整物理主机的资源均衡因子中各个维度资源所占的比例。

优选地,根据本发明的方法,在步骤1)之前还包括:

0-1)确定系统中需要搭建的多个容器;

0-2)根据所述多个容器之间的依赖关系、每个容器所需的资源量的大小,选择进行资源部署时每个容器的优先顺序,以根据所述优先顺序为各个容器分配物理主机。

优选地,根据本发明的方法,其中步骤0-2)包括:为被其他容器依赖的容器、和/或需要硬件资源的容器和/或所需资源量大的容器设置更高的优先级。

一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现上述任意一项所述的方法。

一种用于针对linux容器的资源部署系统,包括:

存储装置、以及处理器;

其中,所述存储装置用于存储计算机程序,所述计算机程序在被所述处理器执行时用于实现上述任意一项所述的方法。

与现有技术相比,本发明的优点在于:

利用多维空间的可行域来筛选在每一维度的资源上与容器的匹配度均处于可行域范围内的物理主机,使得筛选出的物理主机不会在任何一个维度上出现资源过多或过少的情况,从而避免在容器运行程序的过程中出现资源碎片化的情况。在计算物理主机在每一维度的资源上与容器的匹配度时,将每个维度的匹配度均转换到统一的数值区间,使得在n维空间内的筛选变得更简便。将可行域范围定义为是在n维空间内与最优解的距离小于设置的m值的区域,将最优解定义为在n维空间内每个维度的值均相等的解,可以准确地将所筛选的物理主机限制在使得各个维度的资源的均衡情况最优的解的附近。对于所采用的m值较大的情况下,可能筛选出不止一个可分配给当前容器的物理主机,此时进一步判断每个物理主机能否改善整个物理主机集群的资源均衡情况,使得可以找到改善整个物理主机集群的资源均衡情况的资源分配方案。本发明的方案对传统贪心算法进行改进,其计算量相对较小,且可以有效地减少资源碎片、提高主机在接近满负荷情况下的资源使用率,避免资源浪费。经测试本部署策略相较于贪心策略部署在资源均衡度方面提高了约100%。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是linux容器技术的原理示意图;

图2是根据本发明的一个实施例的针对linux容器的资源部署的方法的流程图;

图3a是根据本发明的一个实施例在二维空间内针对内存和cpu资源的可行域范围的示意图;

图3b是根据本发明的一个实施例在三维空间内针对内存、cpu、和网络带宽资源的可行域范围的示意图;

图4示出了采用本发明的方案与采用传统的贪心算法的方案进行资源部署时的资源均衡因子的仿真结果;

图5示出了采用本发明的方案与采用传统的贪心算法的方案进行资源部署时的物理主机集群的综合资源利用率的仿真结果。

具体实施方式

由于针对linux容器的资源部署需要考虑从大量的物理主机中筛选出分别针对多个容器的部署策略,而每个物理主机所需考虑的资源类别也是多维的,通过遍历每个物理主机以及每个容器,对每个容器的每一维度的资源都进行匹配,其计算量和耗时往往难以满足搭建系统的要求。因而,现有技术在执行针对linux容器的资源部署时通常采用贪心算法,即仅执行有限计算量的搜索,在搜索范围内确定优选的资源部署方案。

发明人通过研究后发现,基于传统的采用贪心算法的资源部署方案,在主机资源接近饱和的情况下存在许多无法利用的碎片资源,即当大部分的主机资源已被占用的情况下通过继续搜索合适的资源部署方案也难以进一步提高资源的平均利用率。并且,这种情况还体现在现有的资源部署方案难以均衡地部署多个维度的资源,即如背景技术中所介绍地,可能存在某一维度的资源用尽时而另一维度的资源还有剩余的情况。而容器中的应用程序一般都需要同时满足多个维度的资源才可运行,出现上述资源剩余的情况则会浪费物理主机的资源、减少系统可同时部署的容器数量。

对此,本发明提出了一种针对linux容器的资源部署方法,下面结合附图和具体实施方式对本发明作详细说明。

参考图2,根据本发明的一个实施例,所述方法包括:

步骤1.根据系统搭建环境的具体需求确定需要部署的容器及其镜像地址、容器之间的依赖关系、容器所需的各类软硬件资源。这里容器之间的依赖关系指的是,容器a的运行需以容器b作为条件,例如容器a在运行时需要调用容器b或者需要触发容器b等。表1示出了根据本发明的一个实施例所需确定的容器信息。

表1

其中,容器名称用于标识各个容器;镜像地址用于创建容器;绑定硬件用于记录容器需要绑定的硬件资源(例如gpu,网卡,vcpu等),对于绑定了硬件资源的容器则需要优先考虑满足其要求;n个维度的资源可以是容器的应用所需的各类资源,例如cpu、gpu、内存、存储、网络带宽、blocki/o带宽等。

步骤2.根据各个容器之间的依赖关系、每个容器所需的资源量的大小,选择进行资源部署时每个容器的优先顺序,以根据所述优先顺序为各个容器分配物理主机。根据本发明的一个实施例,在此步骤中确定每个容器的优先顺序的原则在于,优先为被其他容器依赖的容器以及所需资源量大的容器分配物理主机。这样做的原因在于,为了防止在已经为资源占用量相对较小的容器分配完物理主机之后,所剩余的资源不足以供资源占用量大的容器所使用。基于容器之间的依赖关系进行部署也是出于类似的考虑,以防止出现部署在容器上的应用不能顺利执行的情况。

根据本发明的其他实施例,在此步骤中,可以人为地选择进行资源部署时每个容器的优先顺序。根据本发明的另一实施例,也可以采用下述方式确定每个容器的优先顺序:

步骤2-1:比较两个容器之间是否存在依赖关系,若是则继续步骤2-2,若否则继续步骤2-3;

步骤2-2:根据容器之间的依赖关系,若是容器a中的应用需要依赖容器b中的应用,则将b的优先级设置为高于a的优先级,并继续步骤2-4;

步骤2-3:针对容器判断其是否绑定有硬件资源,将绑定有硬件资源的容器设置为具有更高的优先级,并继续步骤2-4;

步骤2-4:对于存在多个容器具有相同优先级的情况,将所需的某一维度的资源量大的容器设置为具有更高的优先级。

由此,确定按照何种顺序为多个容器分配物理主机。

步骤3.针对当前待分配物理主机的容器,遍历所有可供选择的物理主机,针对每一个物理主机,根据要搭建的容器对全部多维资源的需求量、以及所述物理主机针对所述多维资源的总量和使用量,计算每一个物理主机在每一维度资源上与所述容器的匹配度。根据本发明的一个实施例,可以根据待分配的容器的具体条件,将明显不符合要求的物理主机排除出可供选择的物理主机。

这里可以采用任意恰当的方式计算一个物理主机在任意一个维度的资源上与所述容器的匹配度,例如所述物理主机针对该维度的资源的总量是否满足所述容器的需求量,或者所述物理主机针对该维度的资源的未使用量是否满足所述容器的需求量,等等。

由于在本发明的随后步骤中将采用多个维度的可行域来判断一个物理主机是否可供所述容器使用,为了方便处理、减少计算量,根据本发明的一个实施例,优选地在此步骤中通过归一化的方式计算所述物理主机在每一维度资源上与所述容器的匹配度,将不同维度的匹配度的数值统一到相同的数量级。例如,可以采用下式来进行归一化计算:

scored(p,c)=(used+γd)/td*100

其中,scored为物理主机p在第d维资源上与容器c的匹配度,used是物理主机p针对所述第d维资源的使用量,td是物理主机p针对所述第d维资源的总量,γd是容器c对所述第d维资源的需求量。

通过这样的计算式可以计算获得一个物理主机在每一维度资源上与所述容器的归一化的匹配度。

步骤4.根据设置的可行域边界值m所确定的针对n维资源的可行域范围,筛选出每一维度资源上的匹配度均处于所述可行域范围内的一个或多个物理主机。这里的可行域边界值m是用于确定可行域范围的参数,m大于0,可以根据经验值或由用户通过测试而确定。较大的m对应于较大的可行域范围,有利于筛选出更多符合要求的物理主机,使得搜索结果更接近于遍历搜索,也对应于更大的计算量。较小的m对应于较小的可行域范围,其可以减少筛选出的可分配给容器使用的物理主机的数量,其搜索过程更接近贪心算法,计算量也更小。

根据本发明的一个实施例,对于已将所述物理主机在各个维度的资源上与所述容器的匹配度均转换到统一的数值区间,例如基于前述归一化的计算式将各个维度的匹配度均转换为百分比的情况,可以根据需要将可行域范围确定为是在n维空间内与原点的距离小于m的区域。

根据本发明的又一个实施例,还可以将可行域范围确定为是在n维空间内与最优解的距离小于m的区域,这里的最优解指的是在n维空间内每个维度的均衡程度相当的解。这样做的目的是出于筛选出资源更均衡的分配方案的考虑,在理想情况下物理主机在每一维度上与容器的匹配度完全相等时,资源的均衡度最优。然而,对于绝大多数情况,物理主机在各个维度的资源上的匹配度并不相等。在一些解决资源均衡的技术中采用诸如标准差、方差计算的方式来筛选出均衡度最好的方案,然而发明人认为这样的方式并不能完全避免出现资源碎片化。这是由于,尽管标准差和方差可以给出整体上偏离均值的程度,然而并不体现出是否存在某一个或几个维度的资源偏离了理想范围,以这样的方式筛选出的物理主机可能会出现在某一个或几个维度上资源过多或过少的情况。相比之下,采用可行域范围则可以有效地避免这一情况的发生。

下面将通过两个具体的实例来说明如何基于设置的可行域边界值m确定n维的可行域范围。

图3a示出了根据本发明的一个实施例,针对2维资源的可行域范围,其中所述2维资源分别为内存和cpu。参考图3a,当内存匹配度与cpu匹配度相等时资源的均衡度最优,满足这一条件的物理主机的内存匹配度与cpu匹配度在图中由点(0,0)和点(100,100)所确定的直线上。由可行域边界值m确定的范围指的是,由主机的内存匹配度与cpu匹配度所确定的点与最优解的直线之间的最短距离小于m。以图3a为例,点(0,d)表示cpu匹配度为0且内存匹配度为d,假设该点到达最优解直线的距离为m,则由此可以确定可行域范围(feasibleregion),即在图3a的两条虚线之间的区域,其中一条虚线由点(0,d)和点(100-d,100)所确定,另一条虚线由点(d,0)和点(100,100-d)所确定,又或者将其表示为|cpu匹配度-内存匹配度|其余区域为边缘区域(edgeregion)。

在确定了可行域范围之后,可以将一个主机在全部n个维度资源上与容器的匹配度与该可行域范围进行比较,若是全部落入该可行域范围内,则认为该物理主机符合资源均衡的筛选标准。

以上述2维资源为例,假设可行域边界值m为0.3,若是一个主机的cpu匹配度和内存匹配度分别为0.65和0.7,这两者之差小于则该主机符合筛选标准,若是一个主机的cpu匹配度和内存匹配度分别为0.4和0.9,这两者之差大于则该主机不符合筛选标准。

图3b示出了根据本发明的一个实施例,针对3维资源的可行域范围,其中所述3维资源分别为内存、cpu、和网络带宽。由可行域边界值m确定的范围指的是,由主机的内存匹配度、cpu匹配度和网络带宽匹配度所确定的三维空间上的点与最优解的直线之间的最短距离小于m。如图3b所示,可行域范围为以内存匹配度、cpu匹配度和网络带宽匹配度均相等的直线作为中轴线、以m作为半径的一个圆柱体,在该圆柱体以外的空间区域均属于边缘区域。上述可行域范围可以通过以下计算式表示:(scorecpu-scoremem)2+(scorecpu-scorenet)2+(scorenet-scoremem)2<3m2

其中,scorecpu、scoremem、scorenet分别表示cpu匹配度、内存匹配度和网络带宽匹配度。即符合上式的主机符合筛选标准。

与2维和3维资源类似地,也可以针对n维资源的可行域范围,并基于所述可行域范围和一个物理主机在每个维度的资源上与容器的匹配度来确定该物理主机是否符合筛选标准。对此,发明人对n维空间内的可行域范围进行了总结,其符合以下表达式:

其中,xi为第i维的资源匹配度,n为资源的维度数量,m为设置的可行域边界值。若是一个物理主机满足该表达式,则认为其符合筛选标准。

通过步骤4可以筛选出一个或多个符合当前容器需求的物理主机,并且该物理主机不会有任何一个维度的资源出现过多或过少的情况,即能够同时满足容器的需求以及资源均衡的标准。若是通过可行域范围恰好可以筛选出一个满足容器需求的物理主机,则可以直接将该物理主机分配给所述容器,若是筛选出的物理主机的数量大于1,则可以通过诸如随后的步骤进行进一步的选择。

步骤5.针对筛选出的每一个物理主机,计算用于表示在将其分配给所述容器后全部主机集群的资源均衡情况的资源均衡因子,以根据所述资源均衡因子,选择分配给所述容器的物理主机。如此实施此步骤的原因在于,一个物理主机往往可以同时支持部署多个容器,若是仅考虑物理主机与容器之间的匹配程度,则可能出现将大量的容器均部署在同一个物理主机上的情况,这可能会对全部物理主机集群的资源均衡情况造成影响。因而,在此步骤中,可以考虑若是将当前容器部署在不同的备选物理主机上对全部物理主机集群的资源均衡情况的影响,从而筛选出使得集群的整体均衡情况最优的分配结果。

根据本发明的一个实施例,可以基于下式计算将当前容器部署在备选主机k上时全部物理主机集群的资源均衡因子:

其中,hostk_used是备选主机k在维度d上已经使用资源情况,hosti_used是其他备选主机i在维度d上已经使用资源情况。γd是容器c对所述第d维资源的需求量,n是资源的维度数量,m是集群中物理主机的数量。

通过上述表达式可以看出,资源均衡因子被定义为集群的每个多维资源使用的方差的均值,该值越大则表示资源的使用越不均衡。因此,可以比较针对每一个备选主机的资源均衡因子,选择使得上述资源均衡因子最小的物理主机分配给所述容器。

若是发现存在不止一个物理主机的资源均衡因子相等的情况时,还可以根据当前容器中要运行的应用的需求,为每一维度资源设置不同的系数。例如,假设当前容器中运行的应用为视频转码类应用,该类应用对cpu、内存的要求较高,因此可以调高备选主机在cpu和内存这两个维度上与所述容器的匹配度的比例,例如将cpu的比例调整为将内存的比例调整为保持其他维度的资源的比例为又例如,假设当前容器中运行的应用为机器学习类应用,该类应用对gpu要求较高,可以将gpu的比例调整为保持其他维度的资源的比例为

步骤6.根据通过步骤2所确定的每个容器的优先顺序,确定下一个待分配物理主机的容器,并重复上述步骤3-5,直到完成资源部署。

为了验证根据本发明的部署策略所能达到的效果,发明人进行了如下的仿真实验,比较了采用本发明的均衡部署策略与传统的贪心策略的效果。在测试时,分别采用了由5-12个物理主机所构成的主机集群,针对每个集群进行十组实验并求取平均结果。

图4示出了针对全部物理主机的资源均衡因子的均值,其中带点的折线为传统的贪心策略,不带点的折线为本发明的结果。可以看到,无论主机集群中包含了多少物理主机,本发明的资源均衡因子均小于传统的现有技术,其取值大约为现有技术的一半。这说明采用本发明的方法可以使得整个主机集群具有非常良好的资源均衡情况。

图5示出了整个主机集群对多维资源的使用率的均值。在图5中,深色柱状表示本发明,浅色柱表示传统的贪心策略。可以看出,在对集群中的主机的利用接近饱和的情况下,采用本发明的方案可以获得更好的资源利用率,其相较于现有技术提高了约5%-10%。发明人认为产生这种效果的原因在于根据本发明的均衡部署策略考虑了多维资源的均衡使用,可以有效地克服资源碎片化,提高主机在接近满负荷情况下的资源使用率。可以预见到,本发明的方案尤其适用于诸如云计算等大规模大数据集环境。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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