一种业务访问方法和设备转让专利

申请号 : CN201410311856.0

文献号 : CN104092751B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡国华

申请人 : 新华三技术有限公司

摘要 :

本发明公开了一种业务访问方法和设备,该方法包括:负载均衡设备在接收到DNS请求报文时,利用所述DNS请求报文中携带的域名信息查询DNS地址表;如果所述DNS地址表中记录有所述域名信息,则将所述域名信息对应的服务器标识发送给终端设备;在接收到携带有所述服务器标识的业务访问报文时,将所述业务访问报文发送给对应的服务器,并将来自对应服务器的业务响应报文发送给终端设备。本发明实施例中,可以使负载均衡设备能够决策出最优的ISP链路,进而提高用户体验。

权利要求 :

1.一种业务访问方法,其特征在于,该方法应用于包括至少一个终端设备、负载均衡设备和至少两个服务器的系统中,所述负载均衡设备分别通过互联网服务提供商ISP网络与每个服务器交互,所述方法包括:所述负载均衡设备在接收到来自任一终端设备的域名系统DNS请求报文时,利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表;

如果所述DNS地址表中记录有所述域名信息,则将所述DNS地址表中所述域名信息对应的服务器标识发送给该终端设备;

在接收到来自该终端设备的携带有所述服务器标识的业务访问报文时,将其通过所述服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给该终端设备;

其中,所述负载均衡设备利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表之后,还包括:如果所述DNS地址表中没有记录所述域名信息,则所述负载均衡设备从与自身交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识;

如果所述负载均衡设备从不同的DNS服务器获取到的服务器标识不相同,则所述负载均衡设备从本地的DNS地址段中选择一个未被占用的DNS地址,将所述DNS地址携带在DNS响应报文中发送给该终端设备,并在本地预置的DNS关联表中记录所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系;

在接收到来自该终端设备的携带有所述DNS地址的业务访问报文时,从所述DNS关联表中查询所述DNS地址对应的服务器标识,将所述业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文;

分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将接收到的第一个业务响应报文发送给该终端设备。

2.如权利要求1所述的方法,其特征在于,所述负载均衡设备从与自身交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识,包括:所述负载均衡设备将所述DNS请求报文发送至与自身交互的ISP网络内的DNS服务器;

接收对应的DNS服务器返回的DNS响应报文,所述DNS响应报文中携带有对应的DNS服务器解析所述DNS请求报文后得到的服务器标识。

3.如权利要求1或2所述的方法,其特征在于,所述负载均衡设备将接收到的第一个业务响应报文发送给该终端设备之后,所述方法还包括:所述负载均衡设备清空所述DNS关联表中所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系;

在所述DNS地址表中记录所述域名信息与所述第一个业务响应报文的来源服务器标识之间的对应关系。

4.如权利要求1所述的方法,其特征在于,所述服务器标识具体包括:

服务器的IP地址;其中,该IP地址为IPv4地址或者IPv6地址。

5.一种负载均衡设备,其特征在于,应用于包括至少一个终端设备、所述负载均衡设备和至少两个服务器的系统中,所述负载均衡设备分别通过互联网服务提供商ISP网络与每个服务器交互,所述负载均衡设备具体包括:查询模块,用于在接收到来自任一终端设备的域名系统DNS请求报文时,利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表;

发送模块,用于在所述查询模块查询出所述DNS地址表中记录有所述域名信息时,将所述DNS地址表中所述域名信息对应的服务器标识发送给该终端设备;

在接收到来自该终端设备的携带有所述服务器标识的业务访问报文时,将其通过所述服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给该终端设备;

其中,所述负载均衡设备还包括:获取模块,用于在所述查询模块利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表之后,如果所述查询模块查询出所述DNS地址表中没有记录所述域名信息,则从与所述负载均衡设备交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识;

所述发送模块,还用于在所述获取模块从不同的DNS服务器获取到的服务器标识不相同时,从所述负载均衡设备本地的DNS地址段中选择一个未被占用的DNS地址,将所述DNS地址携带在DNS响应报文中发送给该终端设备;

所述负载均衡设备还包括:存储模块,用于在本地预置的DNS关联表中记录所述域名信息、所述发送模块从DNS地址段中选择的所述DNS地址、及所述获取模块获取到的服务器标识之间的对应关系;

所述查询模块,还用于在接收到来自该终端设备的携带有所述DNS地址的业务访问报文时,从DNS关联表中查询所述DNS地址对应的服务器标识;

所述发送模块,还用于将所述业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文,分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将接收到的第一个业务响应报文发送给该终端设备。

6.如权利要求5所述的负载均衡设备,其特征在于,

所述获取模块,具体用于将所述DNS请求报文发送至与所述负载均衡设备自身交互的ISP网络内的DNS服务器;

接收对应的DNS服务器返回的DNS响应报文,所述DNS响应报文中携带有对应的DNS服务器解析所述DNS请求报文后得到的服务器标识。

7.如权利要求5或6所述的负载均衡设备,其特征在于,还包括:

维护模块,用于在所述发送模块将接收到的第一个业务响应报文发送给该终端设备之后,清空所述DNS关联表中所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系,并在所述DNS地址表中记录所述域名信息与所述第一个业务响应报文的来源服务器标识之间的对应关系。

8.如权利要求5所述的负载均衡设备,其特征在于,所述发送模块发送给该终端设备的服务器标识具体包括:服务器的IP地址;其中,该IP地址为IPv4地址或IPv6地址。

说明书 :

一种业务访问方法和设备

技术领域

[0001] 本发明涉及通信技术领域,尤其是涉及一种业务访问方法和设备。

背景技术

[0002] 如图1所示,为链路负载均衡的组网示意图,企业内网的终端设备(例如PC)通过域名访问Internet上服务器的业务时,例如通过email.sina.com.cn访问新浪邮箱业务,PC发出的DNS(Domain Name System,域名系统)请求报文,被负载均衡设备拦截,并按照预先配置的策略从多条ISP(Internet Service Provider,互联网服务提供商,图1中仅示出两条)链路中选择一条ISP链路,假设选择ISP链路2,负载均衡设备通过ISP链路2将DNS请求报文发送给ISP2网络内的DNS服务器2,DNS服务器2将解析DNS请求报文,以得到新浪邮箱服务器的公网IP地址,并将该公网IP地址携带在DNS响应报文中,通过负载均衡设备返回给PC,由PC依据此公网IP地址,经过负载均衡设备、ISP2网络向新浪邮箱服务器发送业务访问报文,来实现新浪邮箱业务的访问。
[0003] 目前,为了进一步保证业务可靠性和响应性能,通常会在不同的ISP网络内部署相同业务功能的服务器(如新浪邮箱服务器),并且不同的ISP网络内部署的服务器的IP地址不同,例如,如图2所示,ISP1网络内部署新浪邮箱服务器1,ISP2网络内部署新浪邮箱服务器2。假设PC访问新浪邮箱业务,通过email.sina.com.cn访问经负载均衡设备分发给了ISP链路2,那么,PC只能够通过ISP2网络访问ISP2网络内的新浪邮箱服务器2,但是,有可能此时通过ISP1网络访问ISP1网络内的新浪邮箱服务器1更快。所以,目前的负载均衡设备还无法保证决策出的ISP链路为最优链路,进而导致用户体验较低。

发明内容

[0004] 本发明提出了一种业务访问方法和设备,有效解决了现有的业务访问方式无法保证决策出的ISP链路为最优链路进而导致用户体验较低的问题。
[0005] 本发明实施例提供一种业务访问方法,该方法应用于包括至少一个终端设备、负载均衡设备和至少两个服务器的系统中,所述负载均衡设备分别通过ISP网络与每个服务器交互,所述方法包括:
[0006] 所述负载均衡设备在接收到来自任一终端设备的域名系统DNS请求报文时,利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表;
[0007] 如果所述DNS地址表中记录有所述域名信息,则将所述DNS地址表中所述域名信息对应的服务器标识发送给该终端设备;
[0008] 在接收到来自该终端设备的携带有所述服务器标识的业务访问报文时,将其通过所述服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给该终端设备。
[0009] 所述负载均衡设备利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表之后,还包括:
[0010] 如果所述DNS地址表中没有记录所述域名信息,则所述负载均衡设备从与自身交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识;
[0011] 如果获取到的服务器标识不相同,则所述负载均衡设备从本地的DNS地址段中选择一个未被占用的DNS地址,将所述DNS地址携带在DNS响应报文中发送给该终端设备,并在本地预置的DNS关联表中记录所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系;
[0012] 在接收到来自该终端设备的携带有所述DNS地址的业务访问报文时,从所述DNS关联表中查询所述DNS地址对应的服务器标识,将所述业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文;
[0013] 分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将接收到的第一个业务响应报文发送给该终端设备。
[0014] 所述负载均衡设备从与自身交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识,包括:
[0015] 所述负载均衡设备将所述DNS请求报文发送至与自身交互的ISP网络内的DNS服务器;
[0016] 接收对应的DNS服务器返回的DNS响应报文,所述DNS响应报文中携带有对应的DNS服务器解析所述DNS请求报文后得到的服务器标识。
[0017] 所述负载均衡设备将接收到的第一个业务响应报文发送给该终端设备之后,所述方法还包括:
[0018] 所述负载均衡设备清空所述DNS关联表中所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系;
[0019] 在所述DNS地址表中记录所述域名信息与所述第一个业务响应报文的来源服务器标识之间的对应关系。
[0020] 所述服务器标识具体包括:
[0021] 服务器的IP地址;其中,该IP地址为IPv4地址或者IPv6地址。
[0022] 本发明实施例提供一种负载均衡设备,应用于包括至少一个终端设备、所述负载均衡设备和至少两个服务器的系统中,所述负载均衡设备分别通过互联网服务提供商ISP网络与每个服务器交互,所述负载均衡设备具体包括:
[0023] 查询模块,用于在接收到来自任一终端设备的域名系统DNS请求报文时,利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表;
[0024] 发送模块,用于在所述查询模块查询出所述DNS地址表中记录有所述域名信息时,将所述DNS地址表中所述域名信息对应的服务器标识发送给该终端设备;
[0025] 在接收到来自该终端设备的携带有所述服务器标识的业务访问报文时,将其通过所述服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给该终端设备。
[0026] 所述负载均衡设备还包括:获取模块,用于在所述查询模块利用所述DNS请求报文中携带的域名信息查询本地预置的DNS地址表之后,如果所述查询模块查询出所述DNS地址表中没有记录所述域名信息,则从与所述负载均衡设备交互的ISP网络内的DNS服务器获取所述域名信息对应的服务器标识;
[0027] 所述发送模块,还用于在所述获取模块获取到的服务器标识不相同时,从所述负载均衡设备本地的DNS地址段中选择一个未被占用的DNS地址,将所述DNS地址携带在DNS响应报文中发送给该终端设备;
[0028] 所述负载均衡设备还包括:存储模块,用于在本地预置的DNS关联表中记录所述域名信息、所述发送模块从DNS地址段中选择的所述DNS地址、及所述获取模块获取到的服务器标识之间的对应关系;
[0029] 所述查询模块,还用于在接收到来自该终端设备的携带有所述DNS地址的业务访问报文时,从DNS关联表中查询所述DNS地址对应的服务器标识;
[0030] 所述发送模块,还用于将所述业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文,分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将接收到的第一个业务响应报文发送给该终端设备。
[0031] 所述获取模块,具体用于将所述DNS请求报文发送至与所述负载均衡设备自身交互的ISP网络内的DNS服务器;
[0032] 接收对应的DNS服务器返回的DNS响应报文,所述DNS响应报文中携带有对应的DNS服务器解析所述DNS请求报文后得到的服务器标识。
[0033] 还包括:维护模块,用于在所述发送模块将接收到的第一个业务响应报文发送给该终端设备之后,清空所述DNS关联表中所述域名信息、所述DNS地址、以及获取到的服务器标识之间的对应关系,并在所述DNS地址表中记录所述域名信息与所述第一个业务响应报文的来源服务器标识之间的对应关系。
[0034] 所述发送模块发送给该终端设备的服务器标识具体包括:服务器的IP地址;其中,该IP地址为IPv4地址或IPv6地址。
[0035] 基于上述技术方案,本发明实施例中,当在不同的ISP网络内部署相同业务功能的服务器时,不管终端设备在哪个时间段访问哪种业务,负载均衡设备都能够让响应最快的服务器为之提供业务服务,即负载均衡设备通过本发明的处理流程能够决策出最优的ISP链路,进而提高了用户体验。

附图说明

[0036] 图1和图2是现有技术中的链路负载均衡的组网示意图;
[0037] 图3和图4是本发明实施例提供的业务访问方法流程示意图;
[0038] 图5是本发明实施例提供的一种负载均衡设备结构示意图。

具体实施方式

[0039] 针对现有技术中存在的问题,本发明实施例提供一种业务访问方法,应用于包括至少一个终端设备、负载均衡设备和至少两个服务器的系统中。终端设备可以为企业内网的PC,PC通过域名访问服务器的业务。为保证业务可靠性和响应性能,在不同的ISP网络内部署相同业务功能的服务器,不同ISP网络内部署服务器的服务器标识不同;负载均衡设备通过不同的ISP链路连接到不同的ISP网络,并分别通过ISP网络与ISP网络内的服务器交互。
[0040] 以图2为本发明实施例的应用场景示意图,本应用场景下,以两个ISP网络为例进行说明,在实际应用中ISP网络的数量还可以大于两个,本发明实施例中对此不再赘述。其中,ISP1网络内部署新浪邮箱服务器1和DNS服务器1,该新浪邮箱服务器1的服务器标识为标识A;ISP2网络内部署新浪邮箱服务器2和DNS服务器2,该新浪邮箱服务器2的服务器标识为标识B。负载均衡设备通过ISP链路1连接到ISP1网络,并通过ISP1网络分别与新浪邮箱服务器1和DNS服务器1交互;负载均衡设备通过ISP链路2连接到ISP2网络,并通过ISP2网络分别与新浪邮箱服务器2和DNS服务器2交互。
[0041] 基于上述应用场景,以终端设备(如企业内网的PC)通过域名(如新浪邮箱服务器对应的域名email.sina.com.cn)访问新浪邮箱服务器的新浪邮箱业务为例,如图3所示,本发明实施例提出的业务访问方法可以包括以下步骤:
[0042] 步骤301,负载均衡设备在接收到来自任一终端设备的DNS请求报文时,利用该DNS请求报文中携带的域名信息查询本地预置的DNS地址表。
[0043] 本发明实施例中,当终端设备需要访问新浪邮箱服务器的新浪邮箱业务时,该终端设备会发出DNS请求报文,且该DNS请求报文中携带了新浪邮箱服务器对应的域名email.sina.com.cn。针对终端设备发出的DNS请求报文,负载均衡设备能够截获到该DNS请求报文,并利用该DNS请求报文中携带的域名信息(email.sina.com.cn)查询本地预置的DNS地址表。
[0044] 其中,DNS地址表中记录有域名信息与服务器标识之间的对应关系,此对应关系中的服务器标识为之前响应新浪邮箱业务最快的服务器的标识。对于DNS地址表的生成过程,将在本发明实施例的后续过程中详细说明。
[0045] 如表1所示,为一种DNS地址表的示例情况,当负载均衡设备利用域名信息(email.sina.com.cn)查询表1所示的DNS地址表时,可以得知当前DNS地址表中记录有该域名信息(email.sina.com.cn)。
[0046] 表1
[0047]域名信息 服务器标识
email.sina.com.cn 标识A
… …
[0048] 步骤302,如果本地预置的DNS地址表中记录有域名信息,则负载均衡设备将DNS地址表中域名信息对应的服务器标识发送给终端设备。其中,该域名信息为DNS请求报文中携带的域名信息,该终端设备为向负载均衡设备发出DNS请求报文的终端设备。
[0049] 在此步骤中,在负载均衡设备利用域名信息(email.sina.com.cn)查询表1所示的DNS地址表之后,负载均衡设备确定出DNS地址表中域名信息(email.sina.com.cn)对应的服务器标识为标识A,此时,负载均衡设备可以通过DNS响应报文将标识A发送给相应的终端设备。
[0050] 步骤303,负载均衡设备在收到来自终端设备的携带有服务器标识的业务访问报文时,将业务访问报文通过服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给终端设备。
[0051] 具体的,当终端设备收到来自负载均衡设备的携带了标识A的DNS响应报文之后,终端设备获知自身能够访问标识A对应的新浪邮箱服务器,后续终端设备需要访问新浪邮箱服务器的新浪邮箱业务时,会发出携带有标识A的业务访问报文。
[0052] 针对终端设备发出的业务访问报文,负载均衡设备能够截获到该业务访问报文,并通过标识A对应的新浪邮箱服务器1所在的ISP1网络,将业务访问报文发送给新浪邮箱服务器1。这样,新浪邮箱服务器1在收到业务访问报文,并对其进行相关处理之后,通过负载均衡设备向终端设备返回业务响应报文。由于此次终端设备对新浪业务的访问,是由负载均衡设备经过上述处理后,转发给了响应时间最快的新浪邮箱服务器进行处理,因此,使用终端设备的用户很快收到相关业务回复,提高了用户体验。
[0053] 进一步地,在本发明实施例中,负载均衡设备执行步骤301之后,如果查询出本地预置的DNS地址表中没有记录域名信息,在这种情况下,如图4所示,该业务访问方法还包括以下步骤:
[0054] 步骤401,负载均衡设备从与自身交互的ISP网络内的DNS服务器获取域名信息对应的服务器标识。
[0055] 此步骤中,上述服务器标识具体包括但不限于:服务器的IP地址(即公网IP地址);其中,该IP地址可以为IPv4地址或者IPv6地址。
[0056] 负载均衡设备利用DNS请求报文中携带的域名信息(email.sina.com.cn)查询DNS地址表之后,如果DNS地址表中没有记录该域名信息,即表1所示的DNS地址表中没有记录域名信息(email.sina.com.cn),则负载均衡设备需要从与自身交互的ISP网络内的DNS服务器获取域名信息对应的服务器标识。如:负载均衡设备从ISP1网络内的DNS服务器1获取域名信息(email.sina.com.cn)对应的服务器标识为标识A,并从ISP2网络内的DNS服务器2获取域名信息(email.sina.com.cn)对应的服务器标识为标识B。
[0057] 本发明实施例中,负载均衡设备从与自身交互的ISP网络内的DNS服务器获取域名信息对应的服务器标识,具体包括但不限于如下方式:负载均衡设备将DNS请求报文发送至与自身交互的ISP网络内的DNS服务器,并接收对应的DNS服务器返回的DNS响应报文,且该DNS响应报文中携带有对应的DNS服务器解析DNS请求报文后得到的服务器标识。
[0058] 具体的,负载均衡设备分别将DNS请求报文发送至ISP1网络内的DNS服务器1,及ISP2网络内的DNS服务器2。DNS服务器1对DNS请求报文中携带的域名信息(email.sina.com.cn)进行解析,得到域名信息(email.sina.com.cn)对应的服务器标识为标识A,并通过DNS响应报文将标识A返回给负载均衡设备。DNS服务器2对DNS请求报文中携带的域名信息(email.sina.com.cn)进行解析,得到域名信息(email.sina.com.cn)对应的服务器标识为标识B,并通过DNS响应报文将标识B返回给负载均衡设备。
[0059] 进一步地,负载均衡设备接收来自DNS服务器1的DNS响应报文,得到域名信息(email.sina.com.cn)对应的服务器标识为标识A,并接收来自DNS服务器2的DNS响应报文,得到域名信息(email.sina.com.cn)对应的服务器标识为标识B。基于此,负载均衡设备获取到的服务器标识不相同。
[0060] 步骤402,如果获取到的服务器标识不相同,则负载均衡设备从本地的DNS地址段中选择一个未被占用的DNS地址,并将该DNS地址携带在DNS响应报文中发送给终端设备。
[0061] 负载均衡设备在获得域名信息(email.sina.com.cn)对应的服务器标识分别为标识A和标识B之后,得知服务器标识不相同,此时,从本地的DNS地址段中选择一个未被占用的DNS地址1,并可以通过DNS响应报文将DNS地址1发送给相应的终端设备。
[0062] 需要说明的是,负载均衡设备会预先配置DNS地址段(一般为私网IP地址,由用户手动配置),针对DNS地址段内的DNS地址,如果该DNS地址被占用,则标识该DNS地址已经被占用;针对已经被占用的DNS地址,如果该DNS地址被释放,则清除该DNS地址已经被占用的标识。基于此,负载均衡设备能够从DNS地址段中选择出未被占用的DNS地址。
[0063] 进一步地,本发明实施例中,负载均衡设备从本地的DNS地址段中选择一个未被占用的DNS地址之后,还在本地预置的DNS关联表中记录域名信息、DNS地址、以及获取到的服务器标识之间的对应关系,以便后续处理业务访问报文时使用。如表2所示,为记录了域名信息、DNS地址、服务器标识之间的对应关系的DNS关联表的一种示例。
[0064] 表2
[0065]
[0066] 在这里,对于负载均衡设备来说,之所以要选择出一个未被占用的DNS地址携带在DNS响应报文中,主要是因为,系统中的终端设备仅能识别响应报文中的一个IP地址,这样一来,在负载均衡设备获得多个服务器标识(即服务器的公网IP地址)的情况下,如果全部携带在DNS响应报文中,终端设备后续无法全部识别,进而无法确定出响应时间最短的服务器。基于此,负载均衡设备采用选择一个DNS地址,将其与获得的多个服务器标识相对应的方式,便于后续找出响应时间最短的服务器。
[0067] 更进一步地,在本发明实施例中,为了便于负载均衡设备能够及时根据网络变化更新DNS服务器标识,负载均衡设备在表2所示的DNS关联表中设置此条记录的老化时间。基于此,从DNS关联表的生成时间开始,当该DNS关联表存在的时间超过该老化时间时,由负载均衡设备主动删除此条记录。在这里,具体的老化时间可由负载均衡设备根据实际的网络情况来设定。
[0068] 步骤403,负载均衡设备在接收到来自终端设备的携带有DNS地址的业务访问报文时,从DNS关联表中查询该DNS地址对应的服务器标识,将业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文,并分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,将接收到的第一个业务响应报文发送给终端设备。
[0069] 具体的,当终端设备收到来自负载均衡设备的携带了DNS地址1的DNS响应报文之后,终端设备获知自身能够访问DNS地址1对应的新浪邮箱服务器,这样,终端设备在自身需要访问新浪邮箱服务器时,会向负载均衡设备发出携带有DNS地址1的业务访问报文。
[0070] 负载均衡设备在接收到携带有DNS地址1的业务访问报文(即业务访问报文的目的地址为DNS地址1)时,由于DNS地址1为负载均衡设备本地的DNS地址段内的DNS地址,因此负载均衡设备确定该业务访问报文的目的地址为本负载均衡设备的地址,此时,负载均衡设备需要对该业务访问报文进行如下处理:
[0071] 负载均衡设备通过DNS地址1查询表2所示的DNS关联表,从DNS关联表中查询到DNS地址1对应的服务器标识分别为标识A和标识B。此时,负载均衡设备再复制1份业务访问报文,之后,将其中一份业务访问报文中的DNS地址更改为标识A,并通过标识A对应的新浪邮箱服务器1所在的ISP1网络发送给新浪邮箱服务器1;将另一份业务访问报文中的DNS地址更改为标识B,并通过标识B对应的新浪邮箱服务器2所在的ISP2网络发送给新浪邮箱服务器2。
[0072] 这样,新浪邮箱服务器1和新浪邮箱服务器2在收到相应的业务访问报文并经过相关处理后,均向终端设备返回业务响应报文。基于此,负载均衡设备能够截获到新浪邮箱服务器1和新浪邮箱服务器2返回的业务响应报文。
[0073] 如果负载均衡设备先截获到新浪邮箱服务器1返回的业务响应报文,则说明第一个业务响应报文来自新浪邮箱服务器1,此时,负载均衡设备将来自新浪邮箱服务器1的业务响应报文发送给相应的终端设备,并删除来自新浪邮箱服务器2的业务响应报文。如果负载均衡设备先截获到新浪邮箱服务器2返回的业务响应报文,则说明第一个业务响应报文为来自新浪邮箱服务器2,此时,负载均衡设备将来自新浪邮箱服务器2的业务响应报文发送给相应的终端设备,并删除来自新浪邮箱服务器1的业务响应报文。
[0074] 进一步地,在本发明实施例中,负载均衡设备执行完将接收到的第一个业务响应报文发送给终端设备的操作之后,还要清空DNS关联表中域名信息、DNS地址、以及获取到的服务器标识之间的对应关系,以避免网络发生变化时提供的信息不准确。即,负载均衡设备清空表2所示的DNS关联表中记录的email.sina.com.cn、DNS地址、标识A、标识B之间的对应关系。
[0075] 与此同时,负载均衡设备还要在DNS地址表中记录域名信息(email.sina.com.cn)与第一个业务响应报文的来源服务器标识(即响应新浪邮箱业务最快的服务器的标识,例如标识A)之间的对应关系(如表1所示)。
[0076] 需要说明的是,在本发明实施例中,为了便于负载均衡设备能够及时根据网络变化确定最优的ISP链路,提高用户体验,负载均衡设备在表1所示的DNS地址表中设置此条记录的老化时间。基于此,针对DNS地址表中的域名信息(如email.sina.com.cn),如果负载均衡设备收到该域名信息的DNS请求报文,则负载均衡设备更新DNS地址表中的老化时间;如果负载均衡设备在老化时间超时之前,未收到该域名信息的DNS请求报文,则由负载均衡设备主动删除该域名信息对应的记录。
[0077] 或者,针对DNS地址表中的域名信息(如email.sina.com.cn),无论负载均衡设备是否收到该域名信息的DNS请求报文,负载均衡设备均不会更新DNS地址表中的老化时间,一直到该老化时间超时时,由负载均衡设备主动删除该域名信息对应的记录。在这里,具体的老化时间可由负载均衡设备根据实际的网络情况来设定。
[0078] 例如,负载均衡设备在8:00时确定出新浪邮箱服务器1响应最快(如表1所示),假设上述域名信息对应的记录的老化时间是2个小时,那么,对于系统中的终端设备来说,只要在10:00之前访问新浪邮箱业务,负载均衡设备均会依据表1让新浪邮箱服务器1进行相关响应;如果某个终端设备在10:30访问新浪邮箱业务,此时,该域名信息对应的记录已因老化时间超时而被删除,负载均衡设备需要重新执行上述步骤401-步骤403,来确定响应最快的服务器,假设确定出是新浪邮箱服务器2,此时的DNS地址表如下表3所示,那么,在12:00之前访问新浪邮箱业务,负载均衡设备均会依据表3让新浪邮箱服务器2进行相关响应。
[0079] 表3
[0080]域名信息 服务器标识
email.sina.com.cn 标识B
… …
[0081] 也就是说,负载均衡设备执行步骤301之后,有可能查询到本地预置的DNS地址表中没有记录域名信息,那么,在这种情况下,DNS地址表中为何没有此域名信息,实际上分为以下两种情形:
[0082] 第一种情形,负载均衡设备在收到携带有此域名信息的DNS请求报文之前,系统中没有任何终端设备发出过此DNS请求报文。即,当前发出携带有此域名信息的DNS请求报文的终端设备是首个访问此域名信息对应的业务的终端设备。
[0083] 第二种情形,负载均衡设备在收到携带有此域名信息的DNS请求报文之前,已收到过系统中的终端设备(包括当前发送此DNS请求报文的终端设备)发出的携带有此域名信息的DNS请求报文,并通过执行上述步骤401-步骤403协助该终端设备完成此域名信息对应的业务访问,只是,在收到此DNS请求报文时,此域名信息对应的记录因老化时间超时已被负载均衡设备删除掉。
[0084] 需要说明的是,不管在上述哪一种情形下,负载均衡设备均要继续执行上述步骤401-步骤403。
[0085] 更进一步地,在本发明实施例中,负载均衡设备执行上述步骤401之后,如果获取到的服务器标识相同,则执行下述流程:负载均衡设备将服务器标识发送给终端设备,并在收到来自终端设备的携带有服务器标识的业务访问报文时,按照现有配置策略确定ISP链路,将业务访问报文通过确定出的ISP链路发送给对应的服务器,并将来自对应的服务器的业务响应报文发送给终端设备。
[0086] 也就是说,如果获取到的服务器标识相同,则说明网络中只部署一个新浪邮箱服务器,此时,负载均衡设备可以从接收到的DNS响应报文中任选一个发送给终端设备,该DNS响应报文中携带新浪邮箱服务器的服务器标识(假设为标识A)。当终端设备收到携带了标识A的DNS响应报文之后,终端设备获知自身能够访问标识A对应的新浪邮箱服务器,后续终端设备需要访问新浪邮箱服务器的新浪邮箱业务时,会向负载均衡设备发出携带有标识A的业务访问报文。
[0087] 后续针对终端设备发出的业务访问报文,负载均衡设备截获之后,按照预先配置的策略从两条ISP链路中选择一条ISP链路(假设选择ISP链路2),并通过该ISP链路2将业务访问报文发送给新浪邮箱服务器。这样,新浪邮箱服务器在收到业务访问报文,并对其进行相关处理后,通过负载均衡设备向终端设备返回业务响应报文。
[0088] 基于上述技术方案,本发明实施例中,当在不同的ISP网络内部署相同业务功能的服务器时,不管终端设备在哪个时间段访问哪种业务,负载均衡设备都能够让响应最快的服务器为之提供业务服务,即负载均衡设备通过上述处理流程能够决策出最优的ISP链路,进而提高了用户体验。
[0089] 基于与上述方法同样的发明构思,本发明实施例中还提供了一种负载均衡设备,应用于包括至少一个终端设备、负载均衡设备和至少两个服务器的系统中,负载均衡设备分别通过互联网服务提供商ISP网络与每个服务器交互,如图5所示,负载均衡设备具体包括:
[0090] 查询模块11,用于在接收到来自任一终端设备的域名系统DNS请求报文时,利用DNS请求报文中携带的域名信息查询本地预置的DNS地址表;
[0091] 发送模块12,用于在查询模块11查询出DNS地址表中记录有域名信息时,将DNS地址表中域名信息对应的服务器标识发送给该终端设备;在接收到来自该终端设备的携带有服务器标识的业务访问报文时,将其通过服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将来自对应服务器的业务响应报文发送给该终端设备。
[0092] 负载均衡设备还包括:获取模块13,用于在查询模块11利用DNS请求报文中携带的域名信息查询本地预置的DNS地址表之后,如果查询模块11查询出DNS地址表中没有记录域名信息,则从与负载均衡设备交互的ISP网络内的DNS服务器获取域名信息对应的服务器标识;
[0093] 发送模块12,还用于在获取模块13获取到的服务器标识不相同时,从负载均衡设备本地的DNS地址段中选择一个未被占用的DNS地址,将DNS地址携带在DNS响应报文中发送给该终端设备;
[0094] 负载均衡设备包括:存储模块14,用于在本地预置的DNS关联表中记录域名信息、发送模块12从DNS地址段中选择的DNS地址、及获取模块13获取到的服务器标识之间的对应关系;
[0095] 查询模块11,还用于在接收到来自该终端设备的携带有DNS地址的业务访问报文时,从DNS关联表中查询DNS地址对应的服务器标识;
[0096] 发送模块12,还用于将业务访问报文复制为数量与对应的服务器标识的数量相同的业务访问报文,分别将每个业务访问报文中的DNS地址转换为对应的服务器标识后,通过对应的服务器标识对应的服务器所在的ISP网络发送给对应的服务器,并将接收到的第一个业务响应报文发送给该终端设备。
[0097] 获取模块13,具体用于将DNS请求报文发送至与负载均衡设备自身交互的ISP网络内的DNS服务器;
[0098] 接收对应的DNS服务器返回的DNS响应报文,DNS响应报文中携带有对应的DNS服务器解析DNS请求报文后得到的服务器标识。
[0099] 负载均衡设备还包括:维护模块15,用于在发送模块12将接收到的第一个业务响应报文发送给该终端设备之后,清空DNS关联表中域名信息、DNS地址、以及获取到的服务器标识之间的对应关系,并在DNS地址表中记录域名信息与第一个业务响应报文的来源服务器标识之间的对应关系。
[0100] 本发明实施例中,发送模块12发送给该终端设备的服务器标识具体包括:服务器的IP地址;其中,该IP地址为IPv4地址或IPv6地址。
[0101] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0102] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。