一种容器的负载均衡调度方法和装置与流程

文档序号:12034440阅读:287来源:国知局
一种容器的负载均衡调度方法和装置与流程

本发明涉及互联网技术领域,特别是涉及一种容器的负载均衡调度方法和装置。



背景技术:

容器技术为网络服务商的应用程序提供了隔离的运行空间,具体为每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境;此外,容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,系统内存的使用效率会得到提升。

目前容器技术基本上是基于静态数据、或者在容器构建时的实时数据将相应的容器调度到适当的机器上,当某个容器经过长时间的运行后,由于实际负载的变化、其他容器或网络服务器的资源被抢占而导致其服务能力受到影响,从而对其所服务的应用程序的运行质量造成不利影响。



技术实现要素:

有鉴于此,本发明提供了一种容器的负载均衡调度方法和装置,以避免容器的服务能力因资源被抢占而影响应用程序的运行质量。

为了解决上述问题,本发明公开了一种容器的负载均衡调度方法,应用于网络服务器,所述方法具体包括步骤:

在所述网络服务器的应用程序运行过程中,对所述应用程序的当前容器的服务能力进行计算;

根据所述服务能力确定所述当前容器的服务权重;

根据所述服务权重向所述当前容器导入业务流量。

可选的,所述对所述应用程序的当前容器的服务能力进行计算,包括:

对所述网络服务器的其他容器所占用的资源进行计算,确定为第一相关因素;

对所述网络服务器本身所使用的资源进行计算,确定为第二相关因素;

根据预设公式对所述第一相关因素和所述第二相关因素进行计算,得到所述当前容器的服务能力。

可选的,所述对所述网络服务器的其他容器所占用的资源进行计算,确定为第一相关因素,包括:

根据每个其他容器的实际服务能力和所占用的资源计算所述第一相关因素。

可选的,所述对所述网络服务器本身所使用的资源进行计算,确定为第二相关因素,包括:

根据所述网络服务器的多种资源的利用率占比和每种资源的权重计算所述第二相关因素。

可选的,所述方法还包括步骤:

当所述容器数量无法满足所述应用程序的需要时,根据所述容器的服务能力新建预设数量的新容器。

相应的,为了保证上述方法的实施,本发明还提供了一种容器的负载均衡调度装置,应用于网络服务器,所述装置包括:

服务能力计算模块,用于在所述网络服务器的应用程序运行过程中,对所述应用程序的当前容器的服务能力进行计算;

服务权重确定模块,用于根据所述服务能力确定所述当前容器的服务权重;

业务流量导入模块,用于根据所述服务权重向所述当前容器导入业务流量。

可选的,所述服务能力计算模块包括:

第一计算单元,用于对所述网络服务器的其他容器所占用的资源进行计算,确定为第一相关因素;

第二计算单元,用于对所述网络服务器本身所使用的资源进行计算,确定为第二相关因素;

第三计算单元,用于根据预设公式对所述第一相关因素和所述第二相关因素进行计算,得到所述当前容器的服务能力。

可选的,所述第一计算单元具体用于根据每个其他容器的实际服务能力和所占用的资源计算所述第一相关因素。

可选的,所述第二计算单元具体用于根据所述网络服务器的多种资源的利用率占比和每种所述资源的权重计算所述第二相关因素。

可选的,所述装置还包括:

容器新增模块,用于当所述容器数量无法满足所述应用程序的需要时,根据所述容器的服务能力新建预设数量的新容器。

从上述技术方案可以看出,本发明提供了一种容器的负载均衡调度方法和装置,应用于网络服务器,具体为在网络服务器的应用程序运行过程中,对该应用程序的当前容器的服务能力进行计算;根据当前容器的服务能力确定其服务权重;最后根据其服务权重向当前容器导入业务流量,以确保不同服务能力的容器在导入流量的时候,服务权重有所不同。这样一来,虽然当前容器的服务能力由于其他容器或网络服务器的资源被抢占而受影响,但是通过上述的负载均衡调度使当前容器被导入的流量与其服务能力相匹配,从而能够避免对其服务的应用程序的运行质量造成影响。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种容器的负载均衡调度方法实施例的步骤流程图;

图2为本发明提供的另一种容器的负载均衡调度方法实施例的步骤流程图;

图3为本发明提供的一种容器的负载均衡调度装置实施例的结构框图;

图4为本发明提供的另一种容器的负载均衡调度装置实施例的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1为本发明提供的一种容器的负载均衡调度方法实施例的步骤流程图。

参照图1所示,本实施例提供的负载均衡调度方法应用于网络服务器,用于对运行在该网络服务器的应用程序的多个容器的负载进行均衡调度,具体的负载均衡调度方法包括如下步骤:

s101:对应用程序的当前容器的服务能力进行计算。

在应用程序运行于相应网络服务器的时候,容器技术为其分配有多个容器,以满足其服务能力的需求,为便于描述,这里将为该应用程序服务的容器称为当前容器。为了能够对应用程序的服务能力进行评价,需要对每个当前容器的服务能力进行计算,所谓容器的服务能力,是指相应容器针对应用程序的某个业务所能支持的请求和流量。

在具体对相应容器的服务能力进行计算时,一般可以通过如下步骤实现:

首先,鉴于当前容器的服务能力与网络服务器上的其他容器的占用资源相关,因此这里先对网络服务器的其他容器所占用的资源进行计算。这里所占用的资源描述为第一相关因素r1:

wi表示每个容器的实际服务能力权重[0,1]之间

ci表示每个容器占用的资源,比如vcpu的核数(个),内存的大小(gb)。

然后,对网络服务器本身所使用的资源进行加,将其确定为第二相关因素r2:

r2=1-((cpu*a+mem*b+bdth*c+lnk*d)/(a+b+c+d))

其中,cpu、mem、bdth和lnk分别表示服务器本身四种主要资源的利用率占比,比如90%;而a、b、c、和d分别表示当前容器在做上线前期的压力测试时候,对于特定服务能力,比如2000并发数,确定的和cpu,mem,bdth,lnk之间的四种资源关系权重,这个数据在上线前压力测试中可以获取到。每个大小在[0,1]之间,1表示非常依赖这个资源,如(1,0,0,0)表示该容器是cpubound的应用,(1,1,0,0)表示既是cpubound又是membound的应用。

最终,每个容器的服务能力由r来表示,r由上述两个相关因素决定,具体服务能力公式如下:

r=avg(r1+r2)。

s102:根据当前容器的服务能力确定其服务权重。

通过上述服务能力公式,计算应用程序的所有当前容器的服务能力后,将服务能力归一化处理,即将服务能力确定为每个当前容器的服务权重,每个服务权重在[0,1]之间。

s103:根据当前容器的服务权重向其导入业务流量。

在确定应用程序的每个当前容器的服务权重后,在运行上述应用程序时,根据每个当前容器的服务权重向相应当前容器导入与服务权重相匹配的业务流量。即修改应用程序的负载均衡,确保不同服务能力的容器在导入流量的时候,服务权重有所不同。

从上述技术方案可以看出,本发明提供了一种容器的负载均衡调度方法,应用于网络服务器,具体为在网络服务器的应用程序运行过程中,对该应用程序的当前容器的服务能力进行计算;根据当前容器的服务能力确定其服务权重;最后根据其服务权重向当前容器导入业务流量,以确保不同服务能力的当前容器在导入流量的时候,服务权重有所不同。这样一来,虽然当前容器的服务能力由于其他容器或网络服务器的资源被抢占而受影响,但是通过上述的负载均衡调度使当前容器被导入的流量与其服务能力相匹配,从而能够避免对其服务的应用程序的运行质量造成影响。

实施例二

图2为本发明提供的另一种容器的负载均衡调度方法实施例的步骤流程图。

参照图2所示,本实施例提供的负载均衡调度方法应用于网络服务器,用于对运行在该网络服务器的应用程序的多个容器的负载进行均衡调度,具体的负载均衡调度方法包括如下步骤:

s201:对应用程序的当前容器的服务能力进行计算。

在应用程序运行于相应网络服务器的时候,容器技术为其分配有多个当前容器,以满足其服务能力的需求。为了能够对应用程序的服务能力进行评价,需要对每个当前容器的服务能力进行计算,所谓容器的服务能力,是指相应容器针对应用程序的某个业务所能支持的请求和流量。

在具体对相应容器的服务能力进行计算时,一般可以通过如下步骤实现:

首先,鉴于当前容器的服务能力与网络服务器上的其他容器的占用资源相关,因此这里先对网络服务器的其他容器所占用的资源进行计算。这里所占用的资源描述为第一相关因素r1:

wi表示每个容器的实际服务能力权重[0,1]之间

ci表示每个容器占用的资源,比如vcpu的核数(个),内存的大小(gb)。

然后,对网络服务器本身所使用的资源进行加,将其确定为第二相关因素r2:

r2=1-((cpu*a+mem*b+bdth*c+lnk*d)/(a+b+c+d))

其中,cpu、mem、bdth和lnk分别表示服务器本身四种主要资源的利用率占比,比如90%;而a、b、c、和d分别表示当前容器在做上线前期的压力测试时候,对于特定服务能力,比如2000并发数,确定的和cpu,mem,bdth,lnk之间的四种资源关系权重,这个数据在上线前压力测试中可以获取到。每个大小在[0,1]之间,1表示非常依赖这个资源,如(1,0,0,0)表示该容器是cpubound的应用,(1,1,0,0)表示既是cpubound又是membound的应用。

最终,每个容器的服务能力由r来表示,r由上述两个相关因素决定,具体服务能力公式如下:

r=avg(r1+r2)。

s202:根据当前容器的服务能力确定其服务权重。

通过上述服务能力公式,计算应用程序的所有容器的服务能力后,将服务能力归一化处理,即将服务能力确定为每个容器的服务权重,每个服务权重在[0,1]之间。

s203:根据当前容器的服务权重向其导入业务流量。

在确定应用程序的每个当前容器的服务权重后,在运行上述应用程序时,根据每个当前容器的服务权重向相应当前容器导入与服务权重相匹配的业务流量。即修改应用程序的负载均衡,确保不同服务能力的容器在导入流量的时候,服务权重有所不同。

s204:当前容器数量较少时,根据当前容器的服务能力新增容器。

容器数量较少指的是服务于应用程序的当前容器的数量无法满足应用程序的需求,这时根据当前运行的当前容器的服务能力新建一个或多个新容器。

如果应用程序的当前容量5.8个,但是经过上述计算后,变成4.8个,那么需要新建一个新容器,达到5以上来确保服务的整体稳定。

在新建容器时,需要考虑当前容器的服务能力。例如:网络服务器上已经运行有一个同样类型的容器d1,占用cpu10%,lnk10%,在新构建一个容器的时候,新建一个高并发容器(1,0,0,1),

r1=d1*1/1=1;

r2=1–(0.1*1+0.1*1)/(1+1)=0.9

r=(1+0.9)/2=0.95

所以,需要新构建的容器的服务能力是d0.95

从上述技术方案可以看出,本发明提供了一种容器的负载均衡调度方法,应用于网络服务器,具体为在网络服务器的应用程序运行过程中,对该应用程序的当前容器的服务能力进行计算;根据当前容器的服务能力确定其服务权重;最后根据其服务权重向容器导入业务流量,以确保不同服务能力的当前容器在导入流量的时候,服务权重有所不同。这样一来,虽然当前容器的服务能力由于其他容器或网络服务器的资源被抢占而受影响,但是通过上述的负载均衡调度使当前容器被导入的流量与其服务能力相匹配,从而能够避免对其服务的应用程序的运行质量造成影响。且在容器数量较少时根据实际需要新建容器,以确保服务的整体稳定。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例三

图3为本发明提供的一种容器的负载均衡调度装置实施例的结构框图。

参照图3所示,本实施例提供的负载均衡调度装置应用于网络服务器,用于对运行在该网络服务器的应用程序的多个容器的负载进行均衡调度,具体的负载均衡调度装置包括服务能力计算模块10、服务权重确定模块20和业务流量导入模块30。

服务能力计算模块10用于对应用程序的当前容器的服务能力进行计算。

在应用程序运行于相应网络服务器的时候,容器技术为其分配有多个容器,以满足其服务能力的需求。,为便于描述,这里将为该应用程序服务的容器称为当前容器。为了能够对应用程序的服务能力进行评价,需要对每个当前容器的服务能力进行计算,所谓容器的服务能力,是指相应容器针对应用程序的某个业务所能支持的请求和流量。

该模块具体包括第一计算单元11、第二计算单元12和第三计算单元。

首先,鉴于当前容器的服务能力与网络服务器上的其他容器的占用资源相关,因此,第一计算单元首先对网络服务器的其他容器所占用的资源进行计算。这里所占用的资源描述为第一相关因素r1:

wi表示每个容器的实际服务能力权重[0,1]之间

ci表示每个容器占用的资源,比如vcpu的核数(个),内存的大小(gb)。

第二计算单元12则对网络服务器本身所使用的资源进行加,将其确定为第二相关因素r2:

r2=1-((cpu*a+mem*b+bdth*c+lnk*d)/(a+b+c+d))

其中,cpu、mem、bdth和lnk分别表示服务器本身四种主要资源的利用率占比,比如90%;而a、b、c、和d分别表示当前容器在做上线前期的压力测试时候,对于特定服务能力,比如2000并发数,确定的和cpu,mem,bdth,lnk之间的四种资源关系权重,这个数据在上线前压力测试中可以获取到。每个大小在[0,1]之间,1表示非常依赖这个资源,如(1,0,0,0)表示该容器是cpubound的应用,(1,1,0,0)表示既是cpubound又是membound的应用。

第三计算单元则用于计算容器的服务能力,这里每个容器的服务能力由r来表示,r由上述两个相关因素决定,具体服务能力公式如下:

r=avg(r1+r2)。

服务权重确定模块20用于根据当前容器的服务能力确定其服务权重。

通过上述服务能力公式,计算应用程序的所有容器的服务能力后,将服务能力归一化处理,即将服务能力确定为每个容器的服务权重,每个服务权重在[0,1]之间。

业务流量导入模块30用于根据当前容器的服务权重向其导入业务流量。

在确定应用程序的每个当前容器的服务权重后,在运行上述应用程序时,根据每个当前容器的服务权重向相应当前容器导入与服务权重相匹配的业务流量。即修改应用程序的负载均衡,确保不同服务能力的容器在导入流量的时候,服务权重有所不同。

从上述技术方案可以看出,本发明提供了一种容器的负载均衡调度装置,应用于网络服务器,具体为在网络服务器的应用程序运行过程中,对该应用程序的当前容器的服务能力进行计算;根据当前容器的服务能力确定其服务权重;最后根据其服务权重向当前容器导入业务流量,以确保不同服务能力的当前容器在导入流量的时候,服务权重有所不同。这样一来,虽然当前容器的服务能力由于其他容器或网络服务器的资源被抢占而受影响,但是通过上述的负载均衡调度使当前容器被导入的流量与其服务能力相匹配,从而能够避免对其服务的应用程序的运行质量造成影响。

实施例四

图4为本发明提供的另一种容器的负载均衡调度装置实施例的结构框图。

参照图4所示,本实施例提供的负载均衡调度装置是在上一实施例的基础上增设了容器新增模块40。

容器新增模块40用于在当前容器数量较少时,根据当前容器的服务能力新增容器。

容器数量较少指定的是服务于应用程序的容器的数量无法满足应用程序的需求,这时根据当前运行的容器的服务能力新建一个或多个新容器。

如果应用程序的当前容量5.8个,但是经过上述计算后,变成4.8个,那么需要新建一个新容器,达到5以上来确保服务的整体稳定。

在新建容器时,需要考虑当前容器的服务能力。例如:网络服务器上已经运行有一个同样类型的容器d1,占用cpu10%,lnk10%,在新构建一个容器的时候,新建一个高并发容器(1,0,0,1),

r1=d1*1/1=1;

r2=1–(0.1*1+0.1*1)/(1+1)=0.9

r=(1+0.9)/2=0.95

所以,需要新构建的容器的服务能力是d0.95

从上述技术方案可以看出,本发明提供了一种容器的负载均衡调度装置,应用于网络服务器,具体为在网络服务器的应用程序运行过程中,对该应用程序的当前容器的服务能力进行计算;根据当前容器的服务能力确定其服务权重;最后根据其服务权重向当前容器导入业务流量,以确保不同服务能力的当前容器在导入流量的时候,服务权重有所不同。这样一来,虽然当前容器的服务能力由于其他容器或网络服务器的资源被抢占而受影响,但是通过上述的负载均衡调度使当前容器被导入的流量与其服务能力相匹配,从而能够避免对其服务的应用程序的运行质量造成影响。且在容器数量较少时根据实际需要新建容器,以确保服务的整体稳定。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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