一种资源分配方法和资源分配装置与流程

文档序号:21406743发布日期:2020-07-07 14:40阅读:182来源:国知局
一种资源分配方法和资源分配装置与流程

本发明涉及网络通信技术领域,尤其涉及一种资源分配方法和资源分配装置。



背景技术:

nat(networkaddresstranslation)负载均衡技术是在客户端和多台服务器(例如一个服务器集群)之间设置有nat负载均衡设备。nat负载均衡设备将该多台服务器的地址映射为一个虚拟ip地址,并将该虚拟ip地址开放给客户端。在客户端需要与该多台服务器建立连接时,客户端先与nat负载均衡设备上的虚拟ip地址建立连接,通过该虚拟ip地址将与服务器的连接建立请求发送到nat负载均衡设备,由nat负载均衡设备对该连接建立请求进行nat转换后,按照负载均衡策略,将转换后的连接建立请求发送到该多台服务器的其中一台服务器上,例如将转换后的连接发送到负载压力较小的一台服务器上,如此,可以解决每台服务器之间的负载不均衡问题。nat负载均衡设备对连接进行nat转换时,nat负载均衡设备会分配一个nat负载均衡设备上的空闲的回源地址作为转换后的连接的源地址,将客户端与虚拟ip地址之间的连接,转换为回源地址与服务器之间的连接,如此,客户端与服务器之间达到相互隐藏地址的目的,提高网络安全性。

多实例负载均衡技术是指在客户端与多组服务器(例如多个服务器集群)之间设置有nat负载均衡设备,nat负载均衡设备开放了多个虚拟ip地址和多个负载均衡实例,每个虚拟ip地址对应一组服务器,一个或多个虚拟ip地址对应一个负载均衡实例,客户端需要与其中一组服务器建立连接时,先与nat负载均衡设备上该组服务器对应的虚拟ip地址建立连接,将与服务器的建立连接的请求发送到nat负载均衡设备,通过nat负载均衡设备上与该虚拟ip地址对应的负载均衡实例将连接建立请求发送到对应服务器组的其中一台服务器上。

一些多实例负载均衡技术中,nat负载均衡设备上的回源地址为多个负载均衡实例共用,在回源地址个数有限的情况下,如果其中一个负载均衡实例同时有大量并发连接时(例如该业务遭受连接型攻击),该负载均衡实例的连接可能会将nat负载均衡设备上的回源地址全部占满,导致其他负载均衡实例的连接无法被分配到空闲的回源地址来进行nat转换,从而影响业务。



技术实现要素:

本申请提供一种改进的资源分配方法和资源分配装置。

本申请第一方面提供一种资源分配方法,应用于nat负载均衡设备,所述方法包括:

接收连接建立请求;

确定所述连接建立请求对应的负载均衡实例;

检查所述负载均衡实例对应的基础资源中是否有空闲资源,若有,在所述负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立;若无,

检查公共资源中是否有空闲资源,若有,在所述公共资源中选择一条空闲的资源用于连接建立。

本申请的第二方面提供一种资源分配装置,所述资源分配装置包括:

请求接收单元,用于接收连接建立请求;

请求匹配单元,用于确定所述连接建立请求对应的负载均衡实例;

资源管理单元,用于检查所述负载均衡实例对应的基础资源中是否有空闲资源,若有,在所述负载均衡实例对应的所述基础资源中选择一条空闲的资源用于连接建立;若无,

检查公共资源中是否有空闲资源,若有,在所述公共资源中选择一条空闲的资源用于连接建立。

本申请提供的资源分配方法和资源分配装置,通过将nat负载均衡设备上的资源划分为基础资源和公共资源,每个负载均衡实例有对应的基础资源,使得在某个负载均衡实例出现大量的并发连接时,每个负载均衡实例可使用基础资源来建立连接,保证了基本的业务处理能力。

附图说明

图1为一示例性实施例提供的nat负载均衡系统的示意图;

图2是本申请一个示例性实施例提供的资源分配方法的流程图;

图3是图2中的步骤s13在一个示例性实施例中的流程图;

图4是图2中的步骤s13在另一个示例性实施例中的流程图;

图5是本申请一个示例性实施例提供的令牌初始化方法的流程图;

图6是本申请一个示例性实施例提供的资源分配方法的分配交互过程图;

图7是本申请另一个示例性实施例提供的资源分配方法的分配交互过程图;

图8是本申请另一个示例性实施例提供的资源分配方法的分配交互过程图;

图9是本申请一个示例性实施例提供的资源分配装置。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

图1为一示例性实施例提供的nat负载均衡系统的示意图。请参照图1,本实施例提供的nat负载均衡系统可以包括客户端901、服务器组902以及设置于客户端901与服务器组902之间的nat负载均衡设备903。每个服务器组902包括至少一个服务器。每个服务器组902可以为集群部署。不同服务器组902可用于处理不同的业务。客户端901与其中一个服务器组902建立连接后,该服务器组902中的任一服务器可以接收并处理客户端901送的业务请求,并将处理结果返回对应的客户端901。

为了实现每个服务器组902的负载均衡,以及提高网络安全性,达到客户端901和服务器组902中的服务器之间相互隐藏地址的目的,nat负载均衡设备903上设置有回源地址资源池9031,回源地址资源池9031中设置有若干条资源,每一条资源包括一个回源ip地址与一个端口的组合。在客户端901需要与一个服务器组902建立连接时,客户端901先通过nat负载均衡设备提供的地址,将连接建立请求发送到nat负载均衡设备903,由nat负载均衡设备903对连接建立请求进行nat转换后,再按照负载均衡策略,将nat转换后的连接建立请求转发到对应服务器组902的其中一台服务器上,如此,客户端901通过nat负载均衡设备903与对应服务器组902建立连接。而nat负载均衡设备903对连接建立请求进行nat转换的过程,可以是nat负载均衡设备903从回源地址资源池9031中选择一条空闲的资源,将该条资源中的回源ip地址替换连接建立请求中的源地址的ip地址,将该条资源中的端口替换连接建立请求中的源地址的端口。如此,在服务器接收到连接建立请求后,通过连接建立请求中的源地址判断该连接建立请求来自nat负载均衡设备903,而客户端901发送的连接建立请求中的目的地址,则是nat负载均衡设备903提供的地址。因此,从服务器组902中的服务器和客户端901看来,均是与nat负载均衡设备903交互,客户端901与服务器组902中的服务器达到相互隐藏地址的目的。

为了将客户端901发送的与不同服务器组902连接建立的请求,转发到对应服务器组902中的服务器上,nat负载均衡设备903将每个服务器组902中的全部服务器地址映射为一个虚拟ip地址vip,并将每个服务器组902的虚拟ip地址vip开放给客户端901。客户端901需要与其中一个服务器组902建立连接时,可以先与nat负载均衡设备903上该服务器组902对应的虚拟ip地址vip建立连接,将与该服务器组902建立连接的请求发送到nat负载均衡设备903。nat负载均衡设备903上设置有负载均衡实例,每个负载均衡实例至少与一个nat负载均衡设备903上的虚拟ip地址vip对应,用于将nat负载均衡设备903通过对应虚拟ip地址vip接收到的连接建立请求进行nat转换,再将转换后的连接建立请求按照负载均衡策略,转发到虚拟ip地址vip对应的服务器组902的其中一台服务器上。

nat负载均衡设备903通过每个负载均衡实例进行nat转换时,全部的负载均衡实例共用nat负载均衡设备上的回源地址资源池9031中的资源,这使得回源地址资源池9031中的资源条数较为有限的情况下(例如nat负载均衡设备903与服务器组902不在一个局域网内,回源地址资源池9031中适合用于该场景下的nat转换的资源中的回源ip地址,需要是公有ip地址,而公有ip地址的数量有限,因此回源地址资源池9031中适合用于该场景下的nat转换资源条数最多为回源ip地址数量*65536),如果nat负载均衡设备903上其中某个负载均衡实例同时有大量的并发连接时(例如该业务遭受连接性攻击),该负载均衡实例对应的连接可能会将回源地址资源池9031中的全部资源占满,导致其他负载均衡实例的连接无法获取到空闲的资源进行nat转换,从而影响业务。而一种解决方法是对每个负载均衡实例进行连接数限制,例如每个负载均衡实例只允许建立5000个连接,在每个负载均衡实例的连接建立数量超过阈值后,该负载均衡实例的新的连接建立请求都会被拒绝,这种方案下,虽然可以防止nat负载均衡设备903在某个负载均衡实例在出现大量的并发连接时,将回源地址资源池9031中的全部资源都分配给该负载均衡实例,但在其他负载均衡实例的连接数较少,回源地址资源池9031中空闲的资源较多时,回源地址资源池9031中的空闲资源不能得到有效利用,从而造成资源浪费。

图2是本申请一个示例性实施例提供的资源分配方法的流程图。资源分配方法可应用于nat负载均衡设备。参见图2,本申请提供的资源分配方法,可以包括:

步骤s11,接收连接建立请求。

在一些实施例中,nat负载均衡设备分别连接第一设备(例如客户端)和第二设备(例如服务器),nat负载均衡设备将多个第二设备的地址映射为一个或多个虚拟ip地址,并将该一个或多个虚拟ip地址开放给第一设备,该连接建立请求可以表示nat负载均衡设备通过该一个或多个虚拟ip地址接收到的第一设备发送的与第二设备建立连接的请求。

步骤s12,确定连接建立请求对应的负载均衡实例。

在一些实施例中,nat负载均衡设备上的一个或多个虚拟ip地址对应nat负载均衡设备上一个负载均衡实例,对于nat负载均衡设备通过某个虚拟ip地址接收到的连接建立请求,可以将该虚拟ip地址对应的负载均衡实例确定为该连接建立请求对应的负载均衡实例。

步骤s13,检查负载均衡实例对应的基础资源中是否有空闲资源,若是,执行步骤s14;如否,执行步骤s15。

步骤s14,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立。

步骤s15,检查公共资源中是否有空闲资源,若有,执行步骤s16。

步骤s16,在公共资源中选择一条空闲的资源用于连接建立。

在一些实施例中,每个负载均衡实例对应的基础资源为该负载均衡实例所独享,公共资源为nat负载均衡设备上的全部负载均衡实例所共享。每个负载均衡实例对应的基础资源中的空闲资源,可用于该负载均衡实例对应的连接建立请求进行连接建立,公共资源中的空闲资源可用于全部负载均衡实例对应的连接建立请求进行连接建立。公共资源和每个负载均衡实例对应的基础资源分别包括至少一条资源。每一条资源为回源ip地址和一个端口的组合。每个回源ip地址最大可构成65536条资源。如果某个条资源中的端口未被占用,可以确定该资源为空闲资源。

在一些实施例中,nat负载均衡设备上设置有基础资源池和公共资源池,基础资源池用于放置每个负载均衡实例对应的基础资源,公共资源池用于放置公共资源。每个负载均衡实例对应的基础资源包括基础资源池中该负载均衡实例对应的基础资源和/或该负载均衡实例已被分配的基础资源,该已被分配的基础资源包括负载均衡实例初始化的基础资源和/或从基础资源池中分配给负载均衡实例的基础资源。每个负载均衡实例对应的基础资源数量可根据每个负载均衡实例对应的连接建立请求数量进行设置。

本申请一些实施例中,将nat负载均衡设备上的资源划分为基础资源和公共资源,一方面,每个负载均衡实例有对应的独占的基础资源,使得在某个负载均衡实例出现大量的并发连接时,每个负载均衡实例可使用独占的基础资源来建立连接,保证基本的业务处理能力;另一方面,每个负载均衡实例优先使用对应的基础资源来建立连接,在基础资源使用完后,才在公共资源中获取空闲的资源来建立连接,这使得在负载均衡实例对应的连接建立请求较少时,负载均衡实例通过所对应的基础资源即可完成该负载均衡实例下全部连接的建立,公共资源中的资源则处于空闲状态,此时如果其中某个负载均衡实例出现大量并发连接时,在使用完独占的基础资源后,可继续使用公共资源中的资源来建立连接,提高了资源利用率。

在一些实施例中,至少一条负载均衡实例对应的基础资源设置于一个基础令牌中,基础令牌与负载均衡实例相对应。负载均衡实例对应的部分或全部基础资源,以基础令牌为最小单位进行管理。负载均衡实例对应的基础资源以基础令牌为最小单位保存于基础资源池中,使得每从基础资源池获取一次资源,即可获取到若干条与负载均衡实例对应的基础资源,从而减少了从基础资源获取资源的次数,可防止多个负载均衡实例同时频繁从基础资源池中获取基础资源造成的冲突。

图3是图2中的步骤s13在一个示例性实施例中的流程图。参见图3,检查负载均衡实例对应的基础资源是否有空闲资源,可以包括:

步骤s131,检查负载均衡实例是否已被分配基础令牌,若是,执行步骤s132;若否,执行步骤s133。

在一些实施例中,负载均衡实例已被分配的基础令牌包括负载均衡实例初始化的基础令牌和/或从基础资源池中分配给负载均衡实例的基础令牌。

步骤s132,检查已被分配的基础令牌包括的基础资源中是否有空闲资源,若是,执行步骤134;若否,执行步骤s133。

步骤s133,检查基础资源池中是否有负载均衡实例对应的基础令牌,若有,执行步骤134。

一些实施例中,基础令牌包括实例id,该实例id用于标识基础令牌所对应的负载均衡实例,在检查基础资源池中是否有负载均衡实例对应的基础令牌时,可以检查基础资源池中是否存在实例id与负载均衡实例对应的基础令牌,若有,确定基础资源池中有负载均衡实例对应的基础令牌。

步骤134,确定负载均衡实例对应的基础资源中有空闲资源。

如此,通过步骤s131至步骤134,可检查负载均衡实例对应的基础资源是否有空闲资源。

参见图2和图3,在一些实施例中,通过图3中的步骤s131、步骤132和步骤s134,确定负载均衡实例已被分配的基础令牌中有空闲资源后,图2中的步骤s14,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立,包括:在已被分配的基础令牌包括的空闲资源中,选择一条空闲的资源用于连接建立。在确定负载均衡实例已被分配的基础令牌中有空闲资源的情况下,优先使用已被分配的基础令牌中的基础资源,减少了从基础资源池中获取资源的过程,效率较高。

在一些实施例中,通过图3中的步骤s131和步骤133确定基础资源池存在负载均衡实例对应的基础令牌后,图2中的资源分配方法还包括:从基础资源池中分配一个与负载均衡实例对应的基础令牌给负载均衡实例。从基础资源池中分配一个和负载均衡实例对应的基础令牌给负载均衡实例后,图2中的步骤s14,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立,包括:在被分配的基础令牌包括的基础资源中选择一条空闲的资源用于连接建立。

参见图2,如果在步骤s13中检查到负载均衡实例对应的基础资源中没有空闲资源,则执行步骤s15。在一些实施例中,至少一条公共资源设置于一个公共令牌中,公共资源以公共令牌为最小单位进行管理,其原理类似于基础资源设置于基础令牌中,可参见基础令牌相关的描述。基于以上描述,图2中的步骤s15,检查公共资源中是否有空闲资源,可以包括:检查是否有可用的公共令牌,若有,确定公共资源中有空闲资源。

在一些实施例中,公共令牌包括实例id,公共令牌的实例id为第一取值时,用于标识公共令牌为可用,检查是否有可用的公共令牌,可以包括:检查公共令牌的实例id的取值是否为第一取值,若是,确定公共资源中有空闲资源。公共令牌的实例id的取值为“0”时,表示该公共令牌为可用。

在一些实施例中,公共令牌设置于公共资源池中,在确定公共资源中有空闲资源后,图2中的资源分配方法还包括:分配一个可用的公共令牌给负载均衡实例。在分配一个可用的公共令牌给负载均衡实例后,图2中的步骤s16,在公共资源中选择一条空闲的资源用于连接建立,可以包括:在被分配的公共令牌中选择一条空闲的资源用于连接建立。

在一些实施例中,在一个可用的公共令牌分配给一个负载均衡实例后,图2中的资源分配方法还包括:修改被分配的公共令牌的实例id为第二取值,第二取值与该负载均衡实例对应,用于标识被分配的公共令牌至少为该负载均衡实例独占。一个公共令牌被分配给一个负载均衡实例后,该公共令牌包括的资源可描述为该负载均衡实例对应的基础资源,第二取值可以与负载均衡实例对应的基础令牌的实例id相同。基于此,在负载均衡实例被分配的令牌包括从基础资源池中分配给负载均衡实例的与负载均衡实例对应的基础令牌,以及从公共资源池中分配给负载均衡实例的公共令牌时,负载均衡实例对应的基础资源中,还包括从公共资源池中分配给负载均衡实例的公共令牌所包括的资源。

基于以上描述,图4是图2中的步骤s13在另一个示例性实施例中的流程图。参见图4,检查负载均衡实例对应的基础资源是否有空闲资源,可以包括:

步骤s231,检查负载均衡实例是否已从基础资源池中被分配与负载均衡实例对应的基础令牌,和/或是否已从公共资源池中被分配公共令牌,若是,执行步骤s232;若否,执行步骤s233。

步骤s232,检查负载均衡实例已被分配的令牌包括的资源中是否有空闲资源,若是,执行步骤234;若否,执行步骤s233。

此处的令牌包括从基础资源池中分配给负载均衡实例的基础令牌和/或从公共资源池中分配给负载均衡实例的公共令牌。

步骤s233,检查基础资源池中是否有负载均衡实例对应的基础令牌。

步骤s234,确定负载均衡实例对应的基础资源中有空闲资源。

参见图2和图4,在一些实施例中,通过图4中的步骤s231、步骤s232和步骤s234,确定负载均衡实例已被分配的令牌中有空闲资源后,图2中的步骤s14,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立,包括:在已被分配的令牌包括的空闲资源中,选择一条空闲的资源用于连接建立。优先使用负载均衡实例已被分配的令牌(包括基础令牌和/或公共令牌)包括的空闲的资源,减少了到资源池(基础资源池和/或公共资源池)获取资源的过程,效率较高,可以提高nat负载均衡设备的性能。

在一些实施例中,如果负载均衡实例对应的基础资源中没有空闲资源,且公共资源中也没有空闲资源,负载均衡实例拒绝新的连接建立请求。

在一些实施例中,任一连接建立后,图2中的资源分配方法还包括:在检测到连接断开时,释放连接对应的资源;对于任一令牌,当令牌包括的全部资源均被释放时,将该令牌放回对应的资源池。此处的令牌包括基础令牌和公共令牌。令牌包括令牌id,可通过令牌id对基础令牌和公共令牌进行区分,例如可将令牌id在[0-255]范围内的令牌设置为基础令牌,将令牌id在[256-503]范围内的令牌设置为公共令牌。此处的数值范围[0-255]可描述为第一数值范围,此处的数值范围[256-503]可描述为第二数据值范围。将该令牌放回对应的资源池,可以包括:

将令牌id位于第一数值范围的令牌放回基础资源池;将令牌id位于第二数值范围的令牌放回公共资源池。

在一些实施例中,令牌包括实例id,将令牌id位于第二数值范围的令牌放回公共资源池后,图2中的资源分配方法还包括:修改被放回令牌的实例id为第一取值,用于标识公共令牌为可用。如此,任一基础资源已被全部占用的负载均衡实例,可以及时分配可用的公共令牌给该负载均衡实例。

在一些实施例中,负载均衡实例接收到新的连接请求时,如果通过图4中的步骤s232检查到从基础资源池中分配给负载均衡实例的基础令牌和从公共资源池中分配给负载均衡实例的公共令牌均包括空闲的资源时,图2中的步骤s14包括:用于连接建立的资源优先从基础资源池中分配给负载均衡实例的基础令牌中选择。如此,在负载均衡实例被分配的基础令牌中的资源可以满足该负载均衡实例当前的连接请求时,待公共令牌中的全部资源被全部释放后,该公共令牌即可被放回公共资源池,使得任一基础资源已被全部占用的负载均衡实例,可以及时分配可用的公共令牌给该负载均衡实例。

在一些实施例中,基于图3中的步骤s131和图4中的步骤231确定负载均衡实例已被分配基础令牌后,已被分配的基础令牌包括令牌id,上述在已被分配的基础令牌包括的空闲资源中,选择一条空闲的资源用于连接建立,还包括:在已被分配的基础令牌中,选择令牌id最小的基础令牌包括的一条空闲的资源用于连接建立。可将基础资源池中的基础令牌的令牌id设置为小于公共资源池中的公共令牌的令牌id,如此,当负载均衡实例已被分配的基础令牌包括从基础资源池中分配给负载均衡实例的与负载均衡实例对应的基础令牌,以及从公共资源池中分配给负载均衡实例的公共令牌时,按照令牌id从小到大的原则在载均衡实例已被分配的令牌中,选择最先检查到包括空闲资源的令牌,并在该令牌包括的空闲资源中选择一条资源用于连接建立,如此,用于连接建立的资源优先从基础资源池中分配给负载均衡实例的基础令牌中选择,从基础资源池中分配给负载均衡实例的基础令牌中没有空闲资源时,再从被分配的公共令牌中选择。

在一些实施例中,基础资源池中的基础令牌包括令牌id,基于图3中的步骤s133或图4中的步骤233,确定基础资源池中有负载均衡实例对应的基础令牌后,上述从基础资源池中分配一个与负载均衡实例对应的基础令牌给负载均衡实例,还包括:在基础资源池中,基于与负载均衡实例对应的基础令牌的令牌id,从与负载均衡实例对应的基础令牌中分配令牌id最小的基础令牌给负载均衡实例。同时,公共令牌包括令牌id,基于图2中的步骤s15,确定公共资源池中有可用的公共令牌后,上述分配一个可用的公共令牌给负载均衡实例,还包括:分配令牌id最小的可用的公共令牌给负载均衡实例。基于如前的基础资源池中的基础令牌的令牌id小于公共资源池中的公共令牌的令牌id,将基础资源池中负载均衡实例对应的基础令牌以及公共资源池中的公共令牌分别按照令牌id从小到大的顺序,依次分配给负载均衡实例,一方面使得负载均衡实例被分配到的令牌(包括从基础资源池中分配的与负载均衡实例对应的基础令牌以及从公共资源池分配的公共令牌时),令牌id最小的基础令牌为基础资源池中分配的与负载均衡实例对应的基础令牌,这部分基础令牌中的空闲资源优先使用,另一方面,使得从基础资源池中分配的与负载均衡实例对应的基础令牌的过程以及从公共资源池分配公共令牌的逻辑比较简单,效率较高。

在一些实施例中,基础资源池中的基础令牌的令牌id可以大于公共资源池中的公共令牌的令牌id。基于图3中的步骤s131和图4中的步骤231确定负载均衡实例已被分配基础令牌后,上述在已被分配的基础令牌包括的空闲资源中,选择一条空闲的资源用于连接建立,还包括:在已被分配的基础令牌中,选择令牌id最大的基础令牌包括的一条空闲的资源用于连接建立。如此,当负载均衡实例已被分配的基础令牌包括从基础资源池中分配给负载均衡实例的与负载均衡实例对应的基础令牌,以及从公共资源池中分配给负载均衡实例的公共令牌时,用于连接建立的资源优先从基础资源池中分配给负载均衡实例的基础令牌中选择。基于基础资源池中的基础令牌的令牌id可以大于公共资源池中的公共令牌的令牌id,图3中的步骤s133或图4中的步骤233,确定基础资源池中有负载均衡实例对应的基础令牌后,上述从基础资源池中分配一个与负载均衡实例对应的基础令牌给负载均衡实例,还包括:在基础资源池中,基于与负载均衡实例对应的基础令牌的令牌id,从与负载均衡实例对应的基础令牌中分配令牌id最大的基础令牌给负载均衡实例。同时,基于图2中的步骤s15,确定公共资源池中有可用的公共令牌后,上述分配一个可用的公共令牌给负载均衡实例,还包括:分配令牌id最大的可用的公共令牌给负载均衡实例。

在一些实施例中,对基础资源池中的基础令牌和公共资源池中的公共令牌设置不同的标签属性,在负载均衡实例被分配的令牌包括基础令牌和公共令牌时,基于该标签属性,判断该负载均衡实例被分配的令牌中的基础令牌。

基于以上描述的资源分配方法,本申请提供一种令牌初始化方法,使得基础资源池中负载均衡实例对应的基础令牌的令牌id小于公共资源池中的公共令牌的令牌id。基础令牌的令牌id大于公共令牌的令牌id的实现情况同理可得。该令牌初始化方法基于已经创建好的多个令牌,每个令牌包括令牌id,该多个令牌的令牌id可以是从1开始并依次增加的整数。在一些实施例中,该多个创建好的令牌基于nat负载均衡设备上的多个回源ip地址(例如8个回源ip地址)创建。可以将每个回源ip地址对应的65536个端口(端口0-65535)中,剔除掉知名端口(端口0-1023),使用从端口1024开始的64512个端口,将一个回源ip地址分别与一个其对应的端口进行组合,其中,可以将一个回源ip地址与一个其对应的端口的组合,理解为一条资源。每个回源ip地址可组成64512条资源。此处以8个回源ip地址为例,可组成8*64512条资源。然后在每个令牌中设置一定数量(例如1024条)的资源。如此,完成多个令牌的创建。

图5是本申请一个示例性实施例提供的令牌初始化方法的流程图。参见图5,本申请提供的令牌初始化方法,可以包括:

步骤s31,将全部令牌按照令牌id按从小到大的顺序进行排序。

步骤s32,从最小的令牌id开始,按照令牌id从小到大的顺序拿出所需数量的令牌作为基础令牌。

基础令牌的个数可以根据nat负载均衡设备上的负载均衡实例个数、每个负载均衡实例需要配置的基础资源条数以及每个基础令牌中包括的资源条数进行计算得到。

步骤s33,根据负载均衡实例的个数n,将基础令牌划分为n份,每一份基础令牌对应一个负载均衡实例。

每一份基础令牌的个数可以不相等。每个负载均衡实例对应的基础令牌个数可以根据该负载均衡实例所需的基础资源条数以及每个基础令牌包括的资源条数进行计算得到。

步骤s34,将同一份基础令牌中的基础令牌的实例id初始化为与其对应的负载均衡实例相对应。

步骤s35,将初始化完成的基础令牌放入基础资源池中。

步骤s36,将基础令牌外的令牌作为公共令牌,并将公共令牌的实例id初始化为第一取值。

第一取值用于表示公共令牌可用,在一些实施例中,第一取值可以为“0”。

步骤s37,将初始化完成的公共令牌放入公共资源池中。

如此,完成令牌初始化。

图6是本申请一个示例性实施例提供的资源分配方法的分配交互过程图。

参见图6,本实施例中,nat负载均衡设备和服务器设置于同一个私网中,客户端通过公网和nat负载均衡设备建立连接。假设nat负载均衡设备上向客户端开放2个虚拟ip地址,分别为虚拟ip地址a和虚拟ip地址b。其中,虚拟ip地址a为图5中的服务器在nat负载均衡设备上的映射地址。nat负载均衡设备上设置有负载均衡实例a和负载均衡实例b,虚拟ip地址a与负载均衡实例a对应,虚拟ip地址b与负载均衡实例b对应,负载均衡实例a和负载均衡实例b分别对应2个基础令牌,同时,负载均衡实例a和负载均衡实例b共用2个公共令牌,每个令牌包括1024条资源。nat设备上设置有1个公有ip地址,分别为:10.0.0.2。表1以举例形式列举了nat负载均衡设备上的一种资源分配情况:

基于以上配置,可以按照如下步骤执行图6中的分配交互过程:

步骤s41,客户端通过虚拟ip地址a发送连接建立请求到nat负载均衡设备。

步骤s42,nat负载均衡设备确定连接建立请求对应的负载均衡实例a。

步骤s43_1,nat负载均衡设备确定负载均衡实例a对应的基础资源中有空闲资源。

a)检查到负载均衡实例a是否已被分配基础令牌。此处负载均衡实例a已被分配了基础令牌1和公共令牌1。

b)检查到基础令牌1和公共令牌1中是否有空闲的资源。此处基础令牌1包括两条空闲资源:10.0.0.2:2046和10.0.0.2:2047;公共令牌1包括一条空闲资源:10.0.0.2:6143

c)确定负载均衡实例a对应的基础资源中有空闲资源。

d)比较基础令牌1和公平令牌1的令牌id大小。此处基础令牌1的令牌id小于公共令牌1的令牌id。

步骤s43_2,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立。此处基础令牌1的令牌id最小,在其包括的两条空闲资源:10.0.0.2:2046和10.0.0.2:2047中,选择一条资源用于连接建立。

步骤s43_3,服务器接收到使用负载均衡实例对应的基础资源发送的连接建立请求。此处服务器接收到从10.0.0.2:2046或10.0.0.2:2047发送的连接建立请求。

图7是本申请另一个示例性实施例提供的资源分配方法的分配交互过程图。

图7的环境配置和图6相同,此处不赘述。

表2以举例形式列举了nat负载均衡设备上的另一种资源分配情况:

基于以上配置,可以按照如下步骤执行图7中的分配交互过程:

步骤s51,客户端通过虚拟ip地址a发送连接建立请求到nat负载均衡设备。

步骤s52,nat负载均衡设备确定连接建立请求对应的负载均衡实例a。

步骤s53_1,nat负载均衡设备确定负载均衡实例a对应的基础资源中有空闲资源。

a)检查到负载均衡实例a是否已被分配基础令牌。此处负载均衡实例a已被分配了基础令牌1和公共令牌1。

b)检查到已被分配的基础令牌中是否有空闲的资源。此处基础令牌1和公共令牌1包括的资源中没有空闲资源。

c)检查基础资源池中是否负载均衡实例对应的基础令牌。此处基础资源中的基础令牌2与负载均衡实例a对应。

d)确定负载均衡实例a对应的基础资源中有空闲资源。

e)从基础资源池中分配一个与负载均衡实例对应的基础令牌给负载均衡实例。此处将基础令牌2分配给负载均衡实例。

步骤s53_2,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立。此处基础令牌2包括的空闲资源列表10.0.0.2:2048至10.0.0.2:3071中,选择一条资源用于连接建立。

步骤s53_3,服务器接收到使用负载均衡实例对应的基础资源发送的连接建立请求。此处服务器接收到从10.0.0.2:2048至10.0.0.2:3071中任一地址发送的连接建立请求。

图8是本申请另一个示例性实施例提供的资源分配方法的分配交互过程图。

图8的环境配置和图6相同,此处不赘述。

表3以举例形式列举了nat负载均衡设备上的另一种资源分配情况:

基于以上配置,可以按照如下步骤执行图8中的分配交互过程:

步骤s61,客户端通过虚拟ip地址a发送连接建立请求到nat负载均衡设备。

步骤s62,nat负载均衡设备确定连接建立请求对应的负载均衡实例a。

步骤s63,nat负载均衡设备确定负载均衡实例a对应的基础资源中没有空闲资源。

a)检查到负载均衡实例a是否已被分配基础令牌。此处负载均衡实例a已被分配了基础令牌1和公共令牌1。

b)检查到已被分配的基础令牌中是否有空闲的资源。此处基础令牌1和公共令牌1包括的资源中没有空闲资源。

c)检查基础资源池中是否负载均衡实例对应的基础令牌。此处基础资源中没与负载均衡实例a对应的基础令牌。

d)确定负载均衡实例a对应的基础资源中没有空闲资源。

步骤s64_1,确定公共资源中有空闲资源。

a)确定公共资源池中有可用的公共令牌。此处公共资源池中有公共令牌2包括的资源列表范围为10.0.0.2:6144至10.0.0.2:7167。

b)确定公共资源中有空闲资源。

c)分配一个可用的公共令牌给负载均衡实例a。

步骤s64_2,在公共资源中选择一条空闲的资源用于连接建立。此处选择公共令牌2包括的空闲资源10.0.0.2:6144至10.0.0.2:7167中任一条资源,用于连接建立。

步骤s64_3,服务器接收到通使用负载均衡实例对应的基础资源发送的连接建立请求。此处服务器接收从10.0.0.2:6144至10.0.0.2:7167任一地址发送的连接建立请求。

图9是本申请一个示例性实施例提供的资源分配装置。参见图9,资源分配装置包括请求接收单元、请求匹配单元和资源管理单元。其中,请求接收单元用于接收连接建立请求;请求匹配单元,用于确定连接建立请求对应的负载均衡实例;资源管理单元,用于检查负载均衡实例对应的基础资源中是否有空闲资源,若有,在负载均衡实例对应的基础资源中选择一条空闲的资源用于连接建立;若无,检查公共资源中是否有空闲资源,若有,在公共资源中选择一条空闲的资源用于连接建立。

在一些实施例中,至少一条负载均衡实例对应的基础资源设置于一个基础令牌中,基础令牌与负载均衡实例相对应,资源管理单元包括资源校验模块资源校验模块用于检查负载均衡实例是否已被分配基础令牌,若是,检查已被分配的基础令牌包括的基础资源中是否有空闲资源,若有,确定负载均衡实例对应的基础资源中有空闲资源;若负载均衡实例未被分配基础令牌,或负载均衡实例已被分配的基础令牌包括的基础资源没有空闲资源,检查基础资源池中是否有负载均衡实例对应的基础令牌,若有,确定负载均衡实例对应的基础资源中有空闲资源。

在一些实施例中,资源管理单元包括资源分配模块,资源分配模块用于在已被分配的基础令牌包括的空闲资源中,选择一条空闲的资源用于连接建立。

在一些实施例,已被分配的基础令牌包括令牌id,资源校验模块具体用于比较已被分配的基础令牌的令牌id的大小,使得资源分配模块根据资源校验模块的校验结果,选择令牌id最大或最小的基础令牌包括的一条空闲的资源用于连接建立。

在一些实施例中,基础令牌包括实例id,实例id用于标识基础令牌所对应的负载均衡实例,资源校验模块具体用于检查基础资源池中是否存在实例id与负载均衡实例对应的基础令牌,若是,确定基础资源池中有负载均衡实例对应的基础令牌。

在一些实施例中,资源管理单元包括资源分配模块,在资源校验模块确定基础资源池中有负载均衡实例对应的基础令牌后,资源分配模块用于从基础资源池中分配一个与负载均衡实例对应的基础令牌给负载均衡实例。

在一些实施例中,基础资源池中的基础令牌包括令牌id,资源校验模块具体具体用于校验基础资源池中与负载均衡实例对应的基础令牌的令牌id的大小,使得资源分配模块根据资源校验模块的校验结果,在基础资源池中,基于与负载均衡实例对应的基础令牌的令牌id,从与负载均衡实例对应的基础令牌中分配令牌id最小的基础令牌给负载均衡实例。

在一些实施例中,资源分配模块具体还用于在已被分配的基础令牌包括的空闲资源中,选择一条空闲的资源用于连接建立。

在一些实施例中,至少一条公共资源设置于一个公共令牌中,资源校验模块具体用于检查是否有可用的公共令牌,若有,确定公共资源中有空闲资源。

在一些实施例中,公共令牌包括实例id,公共令牌的实例id为第一取值时,用于标识公共令牌为可用,资源校验模块具体用于检查公共令牌的实例id的取值是否为第一取值,若是,确定公共资源中有空闲资源。

在一些实施例中,公共令牌设置于公共资源池中,资源管理单元包括资源分配模块,在资源校验模块确定公共资源中有空闲资源后,资源分配模块用于分配一个可用的公共令牌给负载均衡实例。

在一些实施例中,公共令牌包括令牌id,资源校验模块还具体用于比较公共资源池中可用的公共令牌的令牌id的大小,使得资源分配模块分配令牌id最小的可用的公共令牌给负载均衡实例。

在一些实施例中,资源分配模块还具体用于在被分配的公共令牌中选择一条空闲的资源用于连接建立。

在一些实施例中,资源管理单元还包括实例id修改模块,在资源分配模块分配一个可用的公共令牌给负载均衡实例后,实例id修改模块用于修改被分配的公共令牌的实例id为第二取值,第二取值与负载均衡实例对应,用于标识被分配的公共令牌至少为负载均衡实例独占。

在一些实施例中,资源管理模块还包括资源释放模块,资源释放模块用于在检测到任一连接断开时,释放连接对应的资源;对于任一令牌,当令牌包括的全部资源均被释放时,资源释放模块将令牌放回对应的资源池。

在一些实施例中,令牌包括令牌id,资源释放模块具体用于将令牌id位于第一数值范围的令牌放回基础资源池;将令牌id位于第二数值范围的令牌放回公共资源池。

在一些实施例中,令牌包括实例id,资源释放模块将令牌id位于第二数值范围的令牌放回公共资源池后,实例id修改模块具体用于修改被放回令牌的实例id为第一取值,用于标识所公共令牌为可用。

以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

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