一种基于IPV6机制的负载均衡方法及系统与流程

文档序号:22506133发布日期:2020-10-13 09:44阅读:110来源:国知局
一种基于IPV6机制的负载均衡方法及系统与流程

本申请涉及网络数据处理技术领域,特别是涉及一种基于ipv6机制的负载均衡方法及系统。



背景技术:

负载均衡业务,是在分布式文件系统中,基于pdns提供可控的轮询策略、连接策略域名解析均衡的一种服务。如何实现负载均衡,是本领域技术人员关注的问题。

目前的负载均衡策略主要包括:轮询法、加权轮询法、最小连接数法等,配置文件中既有服务端节点的虚拟ipv4,又包括虚拟ipv6,算法主要是根据客户端的域名解析请求分配后端服务器,最终达到负载均衡目的。

然而目前的负载均衡策略中,由于配置文件中对服务端节点的虚拟ip不进行分类,无论客户端的ip类型为ipv4还是ipv6,均无法预测服务端将要返回的虚拟ip类型,从而导致客户端接收到与自身类型不同的虚拟ip,进而造成客户端访问失败的情况,无法正确地进行域名访问。因此,目前的负载均衡策略使得客户端的访问效率较低。



技术实现要素:

本申请提供了一种基于ipv6机制的负载均衡方法,以解决现有技术中负载均衡策略导致客户端的域名访问效率较低的问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

一种基于ipv6机制的负载均衡方法,所述方法包括:

在配置文件中增加ipv6机制开关,且所述配置文件的虚拟ip地址池中包括三个结构体,定义结构体1用于保存虚拟ipv4和虚拟ipv6,结构体2用于保存虚拟ipv4,结构体3用于保存虚拟ipv6;

判断所述ipv6机制开关是否处于开启状态;

如果是,根据客户端的域名解析请求,识别客户端的物理ip类型;

根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端的物理ip类型相匹配的虚拟ip,其中,服务端节点地址池中每个服务端节点设置有一个物理ip和多个虚拟ip;

判断所述虚拟ip是否存在于配置文件的虚拟ip地址池中;

如果是,将所述虚拟ip返回至客户端;

客户端根据所述虚拟ip访问服务器集群。

可选地,所述在配置文件中增加ipv6机制开关,包括:

设置每个域名对应一个ipv6机制开关;

定义域名1对应的ipv6机制开关为开启状态;

定义域名2对应的ipv6机制开关为关闭状态。

可选地,所述根据客户端的域名解析请求,识别客户端的物理ip类型,包括:

根据客户端的域名解析请求,判断所述域名解析请求中的域名是否存在于配置文件中;

如果是,获取内存中保存的域名以及所述域名下的参数;

根据内存中保存的域名以及域名下的参数,确定客户端的物理ip类型。

可选地,所述根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端的物理ip类型相匹配的虚拟ip,包括:

根据客户端的物理ip类型,从内存中获取ip对应表;

判断所述ip对应表是否为空;

如果否,根据当前的负载均衡策略获取与当前的负载均衡策略相匹配的服务端物理ip;

根据所述参数,判断当前域名是否已开启ipv6机制开关;

如果是,根据客户端的物理ip类型,获取所述物理ip类型对应的虚拟ip地址;

如果否,根据ip对应表获取与当前的负载均衡策略相匹配的服务端物理ip,获取所述服务端物理ip对应的虚拟ip地址。

可选地,根据客户端的域名解析请求,判断所述域名解析请求中的域名是否存在于配置文件中之前,所述方法还包括:

在服务端集群中选取一个节点作为dns(domainnamesystem,域名系统)节点;

服务端集群中所有节点采集自身的性能参数,并将所述性能参数发送至dns节点;

所述dns节点将所有节点的性能参数保存至内存中。

一种基于ipv6机制的负载均衡系统,所述系统包括:

开关设置模块,用于在配置文件中增加ipv6机制开关,且配置文件的虚拟ip地址池中包括三个结构体,定义结构体1用于保存虚拟ipv4和虚拟ipv6,结构体2用于保存虚拟ipv4,结构体3用于保存虚拟ipv6;

第一判断模块,用于判断ipv6机制开关是否处于开启状态;

识别模块,用于当ipv6机制开关处于开启状态时,根据客户端的域名解析请求,识别客户端的物理ip类型;

解析模块,用于根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端的物理ip类型相匹配的虚拟ip,其中,服务端节点地址池中每个服务端节点设置有一个物理ip和多个虚拟ip;

第二判断模块,用于判断虚拟ip是否存在于配置文件的虚拟ip地址池中;

返回模块,用于当虚拟ip存在于配置文件的虚拟ip地址池中时,将虚拟ip返回至客户端;

访问模块,设置于客户端,用于根据虚拟ip访问服务器集群。

可选地,所述识别模块包括:

解析请求判断单元,用于根据客户端的域名解析请求,判断所述域名解析请求中的域名是否存在于配置文件中;

参数获取单元,用于当所述域名解析请求中的域名存在于配置文件中时,获取内存中保存的域名以及所述域名下的参数;

ip类型确定单元,用于根据内存中保存的域名以及域名下的参数,确定客户端的物理ip类型。

可选地,所述解析模块包括:

ip对应表获取单元,用于根据客户端的物理ip类型,从内存中获取ip对应表;

第一判断单元,用于判断所述ip对应表是否为空;

服务端物理ip获取单元,用于当所述ip对应表不为空时,根据当前的负载均衡策略获取与当前的负载均衡策略相匹配的服务端物理ip;

第二判断单元,用于根据所述参数,判断当前域名是否已开启ipv6机制开关;

第一虚拟ip地址获取单元,用于当前域名已开启ipv6机制开关时,根据客户端的物理ip类型,获取所述物理ip类型对应的虚拟ip地址;

第二虚拟ip地址获取单元,用于当前域名未开启ipv6机制开关时,根据ip对应表获取与当前的负载均衡策略相匹配的服务端物理ip,获取所述服务端物理ip对应的虚拟ip地址。

可选地,所述识别模块中还包括:

dns节点单元,用于在服务端集群中选取一个节点作为dns节点;

节点性能参数采集单元,用于控制服务端集群中所有节点采集自身的性能参数,并将所述性能参数发送至dns节点;

保存单元,用于将所有节点的性能参数保存至内存中。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请提供一种基于ipv6机制的负载均衡方法,该方法首先在配置文件中增加ipv6机制开关,然后当ipv6机制开关处于开启状态时根据客户端的域名解析请求,识别客户端的物理ip类型,其次根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略解析获取到相应的虚拟ip,然后判断该虚拟ip是否存在与配置文件的虚拟ip地址池中,如果存在于虚拟地址池中,则将该虚拟ip返回至客户端,否则说明不是正确的域名地址,不返回。最后,客户端根据存在与虚拟地址池中的虚拟ip访问服务器集群。本实施例通过在配置文件中增加ipv6机制开关,并采用不同的域名匹配不同的开关状态,利用不同的结构体保存不同的虚拟ip,从而使用户能够接收到与自身业务需求相匹配的虚拟ip,正确地进行域名访问,有利于提高客户端的域名访问效率。

本申请还提供一种基于ipv6机制的负载均衡系统,该系统主要包括:开关设置模块、第一判断模块、识别模块、解析模块、第二判断模块、返回模块和访问模块。通过开关设置模块,在配置文件中增加ipv6机制开关,并采用不同的结构体保持不同的ip虚拟地址,便于后续准确调用不同的虚拟ip,满足用户需求,提高域名访问的正确性。解析模块的设置,能够根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端物理ip地址相匹配的虚拟ip,有利于进一步提高域名访问的正确性,进而提高客户端的域名访问效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

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

图1为本申请实施例所提供的一种基于ipv6机制的负载均衡方法的流程示意图;

图2为本申请实施例所提供的一种基于ipv6机制的负载均衡系统的结构示意图。

具体实施方式

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

为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。

实施例一

参见图1,图1为本申请实施例所提供的一种基于ipv6机制的负载均衡方法的流程示意图。由图1可知,本实施例中基于ipv6机制的负载均衡方法,主要包括如下过程:

s1:在配置文件中增加ipv6机制开关,且配置文件的虚拟ip地址池中包括三个结构体,定义结构体1用于保存虚拟ipv4和虚拟ipv6,结构体2用于保存虚拟ipv4,结构体3用于保存虚拟ipv6。

具体地,步骤s1包括:

s11:设置每个域名对应一个ipv6机制开关。

s12:定义域名1对应的ipv6机制开关为开启状态。

s13:定义域名2对应的ipv6机制开关为关闭状态。

根据以上步骤s11-s13,以实际应用为例,服务端配置文件中参数表示通常为:

<domainnamename=“www.test1.com”>表示域名为www.test1.com;

<policyvalue=“round-robin”>表示该域名为轮询策略,负载均衡策略还有link、cpu、memory、bandwidth等,分别表示连接数、平均cpu、内存、带宽等负载均衡策略;

<checkiptypecheckiptype=“true”>“checkiptype”表示ipv6机制优化开关;checkiptype为true,即开启ipv6机制优化功能;checkiptype为false,即关闭ipv6机制优化功能。

通常checkiptype配置项在domainname配置项的下方,即checkiptype是domainname的子元素;每个域名都对应一个ipv6机制优化开关,如域名1对应ipv6机制优化开关为开启状态;域名2对应ipv6机制优化开关为关闭状态;这样可以充分利用负载均衡的功能,有利于提高网络的灵活性和可用性。

s2:判断ipv6机制开关是否处于开启状态。

如果ipv6机制开关处于开启状态,执行步骤s3:根据客户端的域名解析请求,识别客户端的物理ip类型。否则,流程结束。

具体地,步骤s3又包括如下过程:

s34:根据客户端的域名解析请求,判断域名解析请求中的域名是否存在于配置文件中。

如果域名解析请求中的域名存在于配置文件中,执行步骤s35:获取内存中保存的域名以及域名下的参数。

s36:根据内存中保存的域名以及域名下的参数,确定客户端的物理ip类型。

进一步地,在步骤s34之前,步骤s3中还包括:

s31:在服务端集群中选取一个节点作为dns节点。

s32:服务端集群中所有节点采集自身的性能参数,并将性能参数发送至dns节点。

本实施例中的性能参数包括:连接数的个数、平均cpu使用率、内存使用率、带宽使用率。其需要注意的是,轮询负载均衡策略和哈希负载均衡策略不需要采集性能参数。

s33:dns节点将所有节点的性能参数保存至内存中。

继续参见图1可知,识别客户端的物理ip类型之后,执行步骤s4:根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端的物理ip类型相匹配的虚拟ip,其中,服务端节点地址池中每个服务端节点设置有一个物理ip和多个虚拟ip。

其中,步骤s4包括如下过程:

s41:根据客户端的物理ip类型,从内存中获取ip对应表。

s42:判断ip对应表是否为空。

如果ip对应表不为空,执行步骤s43:根据当前的负载均衡策略获取与当前的负载均衡策略相匹配的服务端物理ip。

如果ip对应表为空,流程结束。

s44:根据参数,判断当前域名是否已开启ipv6机制开关。

也就是,根据步骤s11-s13中的规则,以及步骤s35内存中保存的域名下的参数,来判断当前域名是否已经开启ipv6机制开关。

如果当前域名已开启ipv6机制开关,执行步骤s45:根据客户端的物理ip类型,获取物理ip类型对应的虚拟ip地址。

如果当前域名未开启ipv6机制开关,执行步骤s46:根据ip对应表获取与当前的负载均衡策略相匹配的服务端物理ip,获取服务端物理ip对应的虚拟ip地址。

由图1可知,无论当前域名是否已开启ipv6机制开关,均执行步骤s5:判断虚拟ip是否存在于配置文件的虚拟ip地址池中。

如果虚拟ip存在于配置文件的虚拟ip地址池中,执行步骤s6:将虚拟ip返回至客户端。

s7:客户端根据虚拟ip访问服务器集群。

由以上步骤s3-s7可知,实际应用中,dnns根据域名下的ipv6机制开关及负载均衡策略计算虚拟ip的过程如下:

(1)dns收到客户端的域名解析请求,dns判断请求的域名是否在配置文件中存在,若存在,则获取内存中保存的该域名及域名下的参数。

(2)dns获取收到数据的各节点的物理ip,从内存中取出ip对应表,该ip对应表为1个物理ip对应三个虚拟ip地址池的表。若ip对应表为空,则流程结束。

(3)若ip对应表不为空,则根据相应策略得到符合策略的那个物理ip。如若为轮询策略,则依次获取物理ip;若为连接数策略,则计算出连接数最小的那个节点的物理ip;若为平均cpu策略,则计算出平均cpu使用率最小的那个节点的物理ip等;若为内存策略,则计算出内存使用率最小的那个节点的物理ip等;若为带宽策略,则计算出带宽使用率最小的那个节点的物理ip等。

(4)通过步骤(1)中域名下的参数,即判断该域名是否开启了ipv6机制优化功能。

若没有开启ipv6机制优化,则根据ip对应表获取符合策略的物理ip对应的虚拟ip地址池,也就是结构体1保存的虚拟ip,获取一个虚拟ip,判断该虚拟ip是否在配置文件地址池中存在,若存在,则将该虚拟ip返回给客户端。

若开启了ipv6机制优化,则dns判断客户端ip类型,若客户端的ip类型为ipv4,则根据ip对应表获取符合策略的物理ip对应的虚拟ipv4地址池,也就是结构体2保存的虚拟ipv4,获取一个虚拟ipv4,判断该虚拟ipv4是否在配置文件地址池中存在,即结构体2中保存的虚拟ipv4,若存在,则将该虚拟ipv4返回给客户端。若客户端的ip类型为ipv6,则根据ip对应表获取符合策略的物理ip对应的虚拟ipv6地址池,即结构体3保存的虚拟ipv6,获取一个虚拟ipv6,判断该虚拟ipv6是否在配置文件地址池中存在,即结构体3中保存的虚拟ipv6,若存在,则将该虚拟ipv6返回给客户端。

综上所述,本实施例中,当该开关为开启状态下,负载均衡dns节点的pdns收到客户端的域名解析请求,将该请求转发至服务器端,服务器端识别客户端的ip类型,根据配置文件中域名对应的均衡策略进行解析,返回相应类型的虚拟ip给pdns,pdns将其返回给客户端,客户端通过该相应类型的虚拟ip访问服务器集群。

实施例二

在图1所示实施例的基础之上参见图2,图2为本申请实施例所提供的一种基于ipv6机制的负载均衡系统的结构示意图。由图2可知,本实施例中基于ipv6机制的负载均衡系统,主要包括:开关设置模块、第一判断模块、识别模块、解析模块、第二判断模块、返回模块和访问模块。

其中,开关设置模块,用于在配置文件中增加ipv6机制开关,且配置文件的虚拟ip地址池中包括三个结构体,定义结构体1用于保存虚拟ipv4和虚拟ipv6,结构体2用于保存虚拟ipv4,结构体3用于保存虚拟ipv6。第一判断模块,用于判断ipv6机制开关是否处于开启状态。识别模块,用于当ipv6机制开关处于开启状态时,根据客户端的域名解析请求,识别客户端的物理ip类型。解析模块,用于根据客户端的物理ip类型和配置文件中域名对应的负载均衡策略,解析得到与客户端的物理ip类型相匹配的虚拟ip,其中,服务端节点地址池中每个服务端节点设置有一个物理ip和多个虚拟ip。第二判断模块,用于判断虚拟ip是否存在于配置文件的虚拟ip地址池中。返回模块,用于当虚拟ip存在于配置文件的虚拟ip地址池中时,将虚拟ip返回至客户端。访问模块,设置于客户端,用于根据虚拟ip访问服务器集群。

进一步地,识别模块包括:解析请求判断单元、参数获取单元和ip类型确定单元。其中,解析请求判断单元,用于根据客户端的域名解析请求,判断域名解析请求中的域名是否存在于配置文件中。参数获取单元,用于当域名解析请求中的域名存在于配置文件中时,获取内存中保存的域名以及域名下的参数。ip类型确定单元,用于根据内存中保存的域名以及域名下的参数,确定客户端的物理ip类型。

识别模块中还包括:dns节点单元、节点性能参数采集单元和保存单元。其中,dns节点单元,用于在服务端集群中选取一个节点作为dns节点;节点性能参数采集单元,用于控制服务端集群中所有节点采集自身的性能参数,并将性能参数发送至dns节点;保存单元,用于将所有节点的性能参数保存至内存中。

进一步地,解析模块包括:ip对应表获取单元、第一判断单元、服务端物理ip获取单元、第二判断单元、第一虚拟ip地址获取单元和第二虚拟ip地址获取单元。其中,ip对应表获取单元,用于根据客户端的物理ip类型,从内存中获取ip对应表;第一判断单元,用于判断ip对应表是否为空;服务端物理ip获取单元,用于当ip对应表不为空时,根据当前的负载均衡策略获取与当前的负载均衡策略相匹配的服务端物理ip;第二判断单元,用于根据参数,判断当前域名是否已开启ipv6机制开关;第一虚拟ip地址获取单元,用于当前域名已开启ipv6机制开关时,根据客户端的物理ip类型,获取物理ip类型对应的虚拟ip地址;第二虚拟ip地址获取单元,用于当前域名未开启ipv6机制开关时,根据ip对应表获取与当前的负载均衡策略相匹配的服务端物理ip,获取服务端物理ip对应的虚拟ip地址。

该实施例中基于ipv6机制的负载均衡系统的工作原理和工作方法,在图1所示的实施例中已经详细阐述,在此不再赘述。

以上仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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