DNS授权系统中基于别名记录的负载均衡方法及系统
技术领域
本发明属于负载均衡技术领域,具体涉及一种DNS授权系统中基于别名记录的负载均衡方法及系统。
背景技术
CDN(内容分发网络,Content Distribution Network)是一种新型网络内容服务体系,实质为:在现有互联网基础之上增加一层由多个CDN节点所组成的智能虚拟网络,各个CDN节点和CDN服务器构成CDN系统,CDN系统能够实时地根据网络流量和各CDN节点的连接、负载状态以及到用户的距离和响应时间等综合信息,而将用户的请求重新导向到离用户最近的CDN节点上,从而提高用户访问速度。
CDN服务商是指提供上述CDN服务的服务商,主要服务模式为:接受某一业务网站的委托,对该业务网站提供加速缓存服务,从而提高用户访问该业务网站的速度。
现在技术中,以中国为例,存在多家CDN服务商,例如:蓝汛、快网、网宿等。当用户需要将某一业务网站委托给某一CDN服务商时,例如,如果需要将域名为:www.sina.com的业务网站委托给CDN服务商快网时,设快网域名为:www.sina.com.cloudcdn.net;则常规配置方法为:在sina的授权DNS服务器的DNS记录中增加CNAME(别名指向)记录,将域名www.sina.com别名指向www.sina.com.cloudcdn.net;然后,即可由快网对sina业务网站提供加速缓存服务。
上述方法存在的主要问题为:由于按照现有DNS系统规范标准,同一区域,一个域名只能别名指向唯一另一个域名。因此,同一区域,一个业务网站只能委托一家CDN服务商提供加速缓存服务,无法满足用户因业务需求而需要同时委托多家CDN服务商的需要。
目前解决此类问题的方法为:在用户网站域名的DNS系统中,根据不同地域或运营商划分不同VIEW,将各个VIEW分别匹配至不同的CDN服务商。例如:将北京联通客户端划分为VIEW1,将北京移动客户端划分为VIEW2;然后,将VIEW1对sina业务网站的访问请求委托给CDN服务商1处理;将VIEW2对sina业务网站的访问请求委托给CDN服务商2处理。上述方法虽然实现了同一业务网站同时委托多家CDN服务商提供服务,但只能实现不同VIEW接入不同的CND服务商,却不能实现同一个VIEW中的各个用户接入不同的CDN服务商,仍然具有较大的局限性。
发明内容
针对现有技术存在的缺陷,本发明提供一种DNS授权系统中基于别名记录的负载均衡方法及系统,可实现同一VIEW中同一业务网站域名接入多家CDN服务商进行加速,且本发明为CNAMEX记录增加了流量负载的权重指标,使用户根据CDN服务商性能和承载能力,合理分担流量到不同CDN服务商,优化CDN应用服务的质量。
本发明采用的技术方案如下:
本发明提供一种DNS授权系统中基于别名记录的负载均衡方法,包括以下步骤:
S1,在请求域名的授权DNS服务器上配置多条CNAMEX记录;各条CNAMEX记录分别用于记录同一请求域名与别名指向的不同的CDN服务商域名的映射关系,还用于记录同一请求域名别名指向的各个CDN服务商域名的权重值;
S2,当所述请求域名的授权DNS服务器接收到来自LDNS请求端的对所述请求域名的域名解析请求时,所述请求域名的授权DNS服务器查询所配置的多条CNAMEX记录,获得与所述请求域名对应的各个CDN服务商域名及其权重值;
S3,然后,所述请求域名的授权DNS服务器从各条CNAMEX记录中基于与权重值相关的负载均衡策略筛选得到与本次请求域名对应的目标CDN服务商域名,以及,从各条CNAMEX记录中筛选出包含所述目标CDN服务商域名的特定CNAMEX记录,将所述特定CNAMEX记录转化成特定CNAME记录后,将所述特定CNAME记录封装为DNS响应包后,将所述DNS响应包返回给所述LDNS请求端;其中,所述DNS响应包携带有所述目标CDN服务商域名;
S4,所述LDNS请求端向与目标CDN服务商域名对应的目标CDN服务商的授权DNS服务器发起域名解析请求,由所述目标CDN服务商的授权DNS服务器进行域名解析。
优选的,S3中,所述请求域名的授权DNS服务器从各条CNAMEX记录中基于与权重值相关的负载均衡策略筛选得到与本次请求域名对应的目标CDN服务商域名,具体为:
设共配置m条CNAMEX记录,则共有m个CDN服务商域名,分别记为:CDN-1、CDN-2…CDN-m;则依次为各个CDN服务商域名分配随机数范围区间,分别对应记为:随机数范围区间1、随机数范围区间2…随机数范围区间m;其中,随机数范围区间1区间长度:随机数范围区间2区间长度…:随机数范围区间m区间长度=CDN-1权重值:CDN-2权重值…CDN-m权重值;
将随机数范围区间1包括的随机数、随机数范围区间2包括的随机数…随机数范围区间m包括的随机数组成随机数集合;
然后,每当接收到域名解析请求时,即在所述随机数集合中随机挑选一个随机数,然后计算挑选到的随机数属于的具体的随机数范围区间,该计算得到的随机数范围区间所对应的CDN服务商域名,即为本次筛选得到的目标CDN服务商域名。
优选的,S3中,将所述特定CNAMEX记录转化成特定CNAME记录后,将所述特定CNAME记录封装为DNS响应包,具体为:
将所述特定CNAMEX记录中的权重值删除,即转化为特定CNAME记录,然后将所述特定CNAME记录封装为DNS响应包。
本发明还提供一种DNS授权系统中基于别名记录的负载均衡系统,应用于请求域名的授权DNS服务器上,包括:
CNAMEX记录配置模块,用于配置多条CNAMEX记录;各条CNAMEX记录分别用于记录同一请求域名与别名指向的不同的CDN服务商域名的映射关系,还用于记录同一请求域名别名指向的各个CDN服务商域名的权重值;
接收模块,用于接收来自LDNS请求端的对所述请求域名的域名解析请求;
查询模块,用于查询所述CNAMEX记录配置模块所配置的多条CNAMEX记录,获得与所述请求域名对应的各个CDN服务商域名及其权重值;
负载均衡模块,用于根据所述查询模块所查询到的各个CDN服务商域名及其权重值,基于与权重值相关的负载均衡策略筛选得到与本次请求域名对应的目标CDN服务商域名;进而获得包含所述目标CDN服务商域名的特定CNAMEX记录;
转化模块,用于将所述特定CNAMEX记录转化成特定CNAME记录;
封装模块,用于将所述转化模块转化到的特定CNAME记录封装为DNS响应包;
发送模块,用于将所述封装模块封装到的DNS响应包返回给所述LDNS请求端;其中,所述DNS响应包携带有所述目标CDN服务商域名。
本发明提供的DNS授权系统中基于别名记录的负载均衡方法及装置具有以下优点:
实现同一VIEW中同一业务网站域名接入多家CDN服务商进行加速,且本发明为CNAMEX记录增加了流量负载的权重指标,使用户根据CDN服务商性能和承载能力,合理分担流量到不同CDN服务商,优化CDN应用服务的质量。
附图说明
图1为应用本发明提供的DNS授权系统中基于别名记录的负载均衡方法的拓扑图;
图2为本发明提供的DNS授权系统中基于别名记录的负载均衡方法的流程示意图;
图3为本发明提供的DNS授权系统中基于别名记录的负载均衡系统的结构示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
如图1和图2所示,本发明提供一种DNS授权系统中基于别名记录的负载均衡方法,包括以下步骤:
S1,在请求域名的授权DNS服务器上配置多条CNAMEX记录;各条CNAMEX记录分别用于记录同一请求域名与别名指向的不同的CDN服务商域名的映射关系,还用于记录同一请求域名别名指向的各个CDN服务商域名的权重值;
为方便说明,CNAMEX记录可简记为CX记录,CX记录遵守DNS协议规范,可实现同一请求域名别名指向到多个其他域名,如多个CDN服务商域名,从而使用户可同时接入多家CDN服务商。另外,CX记录在资源记录五元组中添加了负载权重值,用户可根据不同CDN服务商的服务质量及带宽情况,灵活配置CX记录所记录的各CDN服务商权重值。
例如,对于请求域名为sina的sina授权DNS服务器,如需要将其接入到三个CDN服务商,分别为CDN服务商1、CDN服务商2和CDN服务商3;并且,用户根据自己需求,将30%的业务量分配给CDN服务商1,将20%的业务量分配给CDN服务商2,将50%的业务量分配给CDN服务商3,则可配置以下三条CX记录,分别为CX记录1、CX记录2以及CX记录3;其中,CX记录1用于记录别名指向的CDN服务商域名1以及权重值30%;CX记录2用于记录别名指向的CDN服务商域名2以及权重值20%;CX记录3用于记录别名指向的CDN服务商域名3以及权重值50%。
另外,需要说明的是,分配给各个CDN服务商的权重值,即可由用户手动配置,也可由请求域名的授权DNS服务器根据各CDN服务商的实时负载状态,而动态调整所设置的权重值。
S2,当所述请求域名的授权DNS服务器接收到来自LDNS请求端的对所述请求域名的域名解析请求时,所述请求域名的授权DNS服务器查询所配置的多条CNAMEX记录,获得与所述请求域名对应的各个CDN服务商域名及其权重值;
S3,然后,所述请求域名的授权DNS服务器从各条CNAMEX记录中基于与权重值相关的负载均衡策略筛选得到与本次请求域名对应的目标CDN服务商域名,以及,从各条CNAMEX记录中筛选出包含所述目标CDN服务商域名的特定CNAMEX记录,将所述特定CNAMEX记录转化成特定CNAME记录后,将所述特定CNAME记录封装为DNS响应包后,将所述DNS响应包返回给所述LDNS请求端;其中,所述DNS响应包携带有所述目标CDN服务商域名。
本步骤中,筛选目标CDN服务商域名的具体方法可以为:
设共配置m条CNAMEX记录,则共有m个CDN服务商域名,分别记为:CDN-1、CDN-2…CDN-m;则依次为各个CDN服务商域名分配随机数范围区间,分别对应记为:随机数范围区间1、随机数范围区间2…随机数范围区间m;其中,随机数范围区间1区间长度:随机数范围区间2区间长度…:随机数范围区间m区间长度=CDN-1权重值:CDN-2权重值…CDN-m权重值;
将随机数范围区间1包括的随机数、随机数范围区间2包括的随机数…随机数范围区间m包括的随机数组成随机数集合;
然后,每当接收到域名解析请求时,即在所述随机数集合中随机挑选一个随机数,然后计算挑选到的随机数属于的具体随机数范围区间,该计算得到的随机数范围区间所对应的CDN服务商域名,即为本次筛选得到的目标CDN服务商域名。
可配置以下三条CX记录,分别为CX记录1、CX记录2以及CX记录3;其中,CX记录1用于记录别名指向的CDN服务商域名1以及权重值30%;CX记录2用于记录别名指向的CDN服务商域名2以及权重值20%;CX记录3用于记录别名指向的CDN服务商域名3以及权重值50%。
例如,设共配置3条CX记录,分别为CX记录1、CX记录2以及CX记录3;其中,CX记录1用于记录别名指向的CDN服务商域名为CDN-1,且权重值30%;CX记录2用于记录别名指向的CDN服务商域名为CDN-2,且权重值20%;CX记录3用于记录别名指向的CDN服务商域名为CDN-3,且权重值50%。则,为CDN-1分配的随机自然数范围区间为1-30这30个自然数;为CDN-2分配的随机自然数范围区间为31-50这20个自然数;为CDN-3分配的随机自然数范围区间为51-100这50个自然数;则随机数集合即为1-100这100个自然数;
然后,每当接收到域名解析请求时,即从1-100这100个随机数集合中随机挑选一个随机数,如果挑选的随机数为15,则本次筛选得到的目标CDN服务商域名即为CDN-1;如果挑选的随机数为40,则本次筛选得到的目标CDN服务商域名即为CDN-2;如果挑选的随机数为51,则本次筛选得到的目标CDN服务商域名即为CDN-3。
另外,本步骤中,可采用以下方法封装DNS响应包:
将所述特定CNAMEX记录中的权重值删除,即转化为特定CNAME记录,然后将所述特定CNAME记录封装为DNS响应包。
通过该步骤,使本发明提供的方法即实现了同一域名别名指向到多个其他域名的效果,又使其符合现有DNS协议,不需要对现有DNS协议变化,因此,本发明具有易布署实现的优点。
S4,所述LDNS请求端向与目标CDN服务商域名对应的目标CDN服务商的授权DNS服务器发起域名解析请求,由所述目标CDN服务商的授权DNS服务器进行域名解析。
如图3所示,本发明还提供一种DNS授权系统中基于别名记录的负载均衡系统,应用于请求域名的授权DNS服务器上,包括:
CNAMEX记录配置模块,用于配置多条CNAMEX记录;各条CNAMEX记录分别用于记录同一请求域名与别名指向的不同的CDN服务商域名的映射关系,还用于记录同一请求域名别名指向的各个CDN服务商域名的权重值;
接收模块,用于接收来自LDNS请求端的对所述请求域名的域名解析请求;
查询模块,用于查询所述CNAMEX记录配置模块所配置的多条CNAMEX记录,获得与所述请求域名对应的各个CDN服务商域名及其权重值;
负载均衡模块,用于根据所述查询模块所查询到的各个CDN服务商域名及其权重值,基于与权重值相关的负载均衡策略筛选得到与本次请求域名对应的目标CDN服务商域名;进而获得包含所述目标CDN服务商域名的特定CNAMEX记录;
转化模块,用于将所述特定CNAMEX记录转化成特定CNAME记录;
封装模块,用于将所述转化模块转化到的特定CNAME记录封装为DNS响应包;
发送模块,用于将所述封装模块封装到的DNS响应包返回给所述LDNS请求端;其中,所述DNS响应包携带有所述目标CDN服务商域名。
综上所述,本发明提供的DNS授权系统中基于别名记录的负载均衡方法及系统,根据DNS协议规范,修订并添加CNAMEX记录,实现同一域名别名指向到多个其他域名,从而可实现同一VIEW中同一业务网站域名接入多家CDN服务商进行加速,且本发明为CNAMEX记录增加了流量负载的权重指标,使用户根据CDN服务商性能和承载能力,合理分担流量到不同CDN服务商,优化CDN应用服务的质量。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。