一种域名解析的方法和系统
技术领域
本申请涉及网络技术领域,特别是涉及一种域名解析的方法和系统。
背景技术
网络中的地址方案分为IP地址系统和域名地址系统两种,这两套地址系统是一一对应的关系。IP地址用于对每台服务器进行标记,用二进制数来表示,每个IP地址长32比特,由4个小于256的数字组成,数字之间用点间隔,例如100.10.0.1表示一个IP地址。由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。
用户习惯记忆域名,但服务器之间是以IP地址来识别的,域名与IP地址之间是对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器(DNS服务器)来完成。
网络平台的机房包括很多台应用服务器,用于直接或者间接地对外提供各种网络服务,同时机房会配置有一台或者多台DNS服务器,称为DNS服务器集群,用于接收机房内应用服务器的域名解析请求,并将解析结果返回给应用服务器。该机房内的应用服务器在配置文件中分别配置属于该机房的DNS服务器的IP,需要解析域名时,选择配置文件中排序最前的DNS服务器,将域名解析请求先发送给DNS服务器。请求在网络中传输时,会经过路由器的转发,最终到达DNS服务器。
以上现有技术中存在的问题是,各个应用服务器所配置的DNS服务器可能不同,因此,需要针对各个应用服务器,逐个建立配置文件;当机房内DNS服务器IP调整后,需要针对各个应用服务器,逐个修改配置文件,当机房内的应用服务器较多时,配置文件的配置和维护工作量和成本较大。
因此,目前需要本领域技术人员解决的一个技术问题就是,提供一种域名解析的机制,以降低对机房服务器配置DNS服务器,以及维护配置文件的工作量。
发明内容
本申请所要解决的技术问题是提供一种域名解析的方法,以降低对机房服务器配置DNS服务器,以及维护配置文件的工作量。
本申请还提供了一种域名解析的系统,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本申请公开了一种域名解析的方法,包括:
应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器;
路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台域名解析服务器,向其发送所述域名解析请求;其中,路由器根据预设的规则选择域名解析服务器,使得每次选择的域名解析服务器可能都不相同,以实现各域名解析服务器的负载均衡;
域名解析服务器对域名解析请求中的域名进行解析,得出相应的IP地址,经路由器返回到应用服务器。
本申请还提供了一种域名解析的系统,包括:
应用服务器、路由器和域名解析服务器;
所述应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器;
所述路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台域名解析服务器,向其发送所述域名解析请求;其中,路由器根据预设的负载均衡规则选择域名解析服务器,使得每次选择的域名解析服务器可能都不相同;
域名解析服务器对域名解析请求中的域名进行解析,得出相应的IP地址,经路由器返回到应用服务器。
与现有技术相比,本申请具有以下优点:
依据本申请,应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器后,路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台DNS服务器解析域名,由于虚拟IP地址和DNS服务器的对应关系保存在路由器和DNS服务器,修改虚拟IP地址和多个域名解析服务器的对应关系的时候,可以直接在路由器和DNS服务器上进行修改,相对于现有技术中保存在各个机房服务器上,可以降低对机房服务器配置DNS服务器,以及维护配置文件的工作量。
现有技术中,如果出现DNS服务器故障,会导致发送到这台服务器的查询失败,虽然可以重试其他DNS服务器,但是会导致DNS请求时延大大增加;本申请中,当某个DNS服务器发生故障时,可以与路由器进行通信,路由器停止向该DNS服务器发送域名解析请求,这样不会再有请求发送到这台服务器上,每个虚拟IP仍然可以正常提供服务。因此,只要还有一台DNS服务器能够正常工作,所有的VIP就可以正常服务。避免了DNS服务器故障带来了时延。
同时,如果有新的DNS服务器要加入服务,只需要在路由器上添加虚拟IP地址和该域名解析服务器的对应关系,请求会自动发送到这台服务器上。对外服务的VIP仍然不变,不需要修改使用者的任何配置。
此外,本申请对多个DNS服务器进行优先级排序,轮询各个DNS服务器,或是依据主机号和端口号来选择不同的DNS服务器,使得每次选择的DNS服务器可能都不相同,实现了各个DNS服务器负载均衡。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
附图说明
图1是本申请的一种域名解析的方法实施例1的流程图;
图2是本申请的一种域名解析的方法实施例2的流程图;
图3是本申请的一种域名解析的系统实施例的结构框图;
图4是本申请的多个域名解析服务器集群的示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参考图1,示出了本申请的一种域名解析的方法实施例1的流程图,具体可以包括以下步骤:
步骤101、应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器。
应用服务器(即网络平台机房服务器)有两类,一类是前端服务器,用于接收内网或是外网的各种访问请求,一类是后端服务器,用于依据访问请求提供相应的服务。
在具体的实现中,域名解析请求可以由前端服务器发送,例如,通过浏览器访问网页的过程可以包括如下几个步骤:
1.1、用户在浏览器端输入某个网页的URL地址,浏览器会将请求访问的网页的域名发送到网络供应商(例如网通,电信等)的DNS服务器;
1.2、网络供应商的DNS服务器上保存有域名与该网页内容的网络平台前端服务器IP地址的对应关系,解析得到域名对应的前端服务器IP地址后,返回给浏览器;
1.3、浏览器依据前端服务器IP地址将网页访问请求发送到对应的网络平台的前端服务器,前端服务器上保存有多个后台服务器的域名,前端服务器可以根据网页访问请求确定保存有网页内容的后端服务器的域名;
1.4、前端服务器将后端服务器的域名发送到网络平台的域名解析服务器进行解析,得到后端服务器的IP地址;
1.5、前端服务器依据后端服务器的IP地址,向后端服务器发送网页访问请求;
1.6、后端服务器提取请求访问的网页内容,并返回到浏览器端进行渲染。
在这种应用场景下,域名解析请求由前端服务器生成,请求解析的是后端服务器的域名,DNS服务器上保存的是后端服务器的域名和IP地址的对应关系。
在具体的实现中,域名解析请求也可以由后端服务器发送,例如,当某个后端服务器A需要访问另一台后端服务器B时(例如定时访问),具体的过程可以包括如下几个步骤:
2.1、后端服务器A上保存后端服务器B的域名,后端服务器A先把域名发送到DNS服务器;
2.2、DNS服务器上保存有后端服务器的域名和IP地址的对应关系,若后端服务器A和B是同属于一个网络平台,可以直接解析得到后端服务器B的IP地址,并返回给后端服务器A;
2.2、后端服务器A依据后端服务器B的IP地址访问后端服务器B。
在这种应用场景下,域名解析请求由后端服务器生成,请求解析的是后端服务器的域名,DNS服务器上保存的是后端服务器的域名和IP地址的对应关系。
现有技术中,前端服务器和后端服务器均保存有DNS服务器的配置文件,选择排序最前的DNS服务器发送域名解析请求。
本申请中,虚拟IP(VIP)也即是DNS服务器的虚拟互联地址,也即是路由器的真实IP地址,应用服务器可以按照虚拟IP地址将域名解析请求发送到路由器。
在本申请的一种优选实施例中,所述域名解析服务器的虚拟IP地址可以有一个或多个,当所述虚拟IP地址有多个时,应用服务器可以选择其中任意一个虚拟IP地址将域名解析请求发送到路由器,应用服务器上可以预置配置文件recolv.conf,其中指定了提供DNS解析服务的VIP,例如VIP1和VIP2。
步骤102、路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台域名解析服务器,向其发送所述域名解析请求。
在具体的实现中,可以在路由器上通过Zebra(路由协议模拟程序)模拟OSPF路由协议,OSPF路由协议的作用是按照预设规则选择一个DNS服务器,转发DNS请求到该DNS服务器上,执行选择域名解析服务器的功能。
在本申请的一种优选实施例中,所述步骤102可以包括:
子步骤S11、预先将各域名解析服务器进行排序,各域名解析服务器按照所述排序依次作为目标域名解析服务器,向所述目标域名解析服务器发送域名解析请求。
一个虚拟IP地址对应了多个域名解析服务器,可以按照轮询的方式,将所有的域名解析服务器组成一个队列,依次选择各域名解析服务器解析当次请求,当到达队列尾部后,下次请求从队列第一个开始作为优先级最高的服务器。
在具体的实现中,域名解析请求可以包括发送域名解析请求的应用服务器的IP地址和端口。在本申请的另一种优选实施例中,所述步骤102可以包括:
子步骤S21、将所述应用服务器的IP地址和端口合并,并取哈希值;
子步骤S22、确定所述虚拟IP地址所对应的域名解析服务器的个数;
子步骤S23、将所述哈希值除以域名解析服务器的个数,确定编号与余数相等的域名解析服务器,向其发送域名解析请求。
其中,虚拟IP地址对应的各域名解析服务器已进行编号,通过对发送域名解析请求的应用服务器IP地址和端口值进行哈希计算,可以得出对应的域名解析服务的编号,在此编号对应的域名解析服务器上进行域名解析。
步骤103、域名解析服务器对域名解析请求中的域名进行解析,得出相应的IP地址,经路由器返回到应用服务器。
域名解析服务器上预置了IP地址和域名的对应关系,解析域名就是将域名重新转换为IP地址的过程,解析结果先转发到路由器上,再由路由器返回到应用服务器。
参考图2,示出了本申请的一种域名解析的方法实施例2的流程图,具体可以包括以下步骤:
所述路由器包括一个或多个,一个虚拟IP地址对应一个或多个路由器;当所述虚拟IP地址对应有多个路由器时,所述方法还包括:
步骤201、按照域名解析服务器的虚拟IP地址,选择路由耗费最低的路由器,向其发送域名解析请求。
本申请除了可以在单个机房配置路由器进行域名解析请求的处理,还可以在多个机房集群之间配置多个路由器,所有的路由器对外发布相同的一个或多个虚拟IP,需要选择其中一个路由器发送域名解析请求,如图4所示,示出了本申请多个域名解析服务器集群的示意图。
选择路由耗费最低的路由器向其发送域名解析请求,路由耗费即cost值,是指到达某个路由所指的目的地址的代价,在具体实现中,通常以10的8次方除以带宽作为cost值。
由此,当一个机房的DNS集群不能提供服务时(如路由器故障),可以根据cost值,自动选取其他机房的集群提供服务而不需要修改任何配置。机房内的服务器不用关心使用的DNS在哪个机房,是否发生了变化,从而达到一种云的模式。
步骤202、应用服务器按照所述域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器。
步骤203、路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台域名解析服务器,向其发送所述域名解析请求。
步骤204、域名解析服务器判断是否可以解析所述域名解析请求中的域名,若是,则执行步骤205;若否,则执行步骤206。
步骤205、域名解析服务器接收域名解析请求,并依据该域名解析服务器的IP地址和虚拟IP地址的对应关系,判断目标地址是否在对应的虚拟IP地址中,若是,则对该域名解析请求中的域名进行解析。
步骤206、将所述域名解析请求,发送到所述域名对应网络中的域名解析服务器。
域名解析请求中的域名可能是和应用服务器在同一个内网(内部网络),也可能是公网(外部网络)。内网的域名可以直接在该内网的域名解析服务器上进行解析,公网的域名需要发送到该公网对应的域名解析服务器进行解析。在上面的例子中,若后端服务器A和后端服务器B不在同一个网络平台,即访问的是外网的后端服务器B,那么,可以将域名发送到对应的后端服务器的网络平台的DNS服务器进行解析。
具体的实现中,各域名解析服务器上可以预置域名列表,域名解析服务器接收到请求解析的域名时,判断该域名存在于预置列表上,若是,则可以说明该域名解析服务器可以解析该域名,若否,则不能解析。
在本实施例中,所述域名解析请求中的目标地址为虚拟IP地址,因此,所述域名解析服务器上需要保存有,该域名解析服务器和虚拟IP地址的对应关系,域名解析服务器依据对应关系,可以确定该域名解析请求是发送给本域名解析服务器的,进而对域名进行解析。
步骤207、域名解析服务器对域名解析请求中的域名进行解析,得出相应的IP地址,经路由器返回到应用服务器。
步骤208、域名解析服务器发生故障时,与路由器通信,路由器停止向该域名解析服务器发送域名解析请求。
通过访问路由器的网络接口,可以修改虚拟IP地址和多个域名解析服务器的对应关系,或删除发生故障的域名解析服务器,或启动/关闭域名解析服务器。
在具体的实现中,每个DNS服务器可以包括2个网络接口,分别为Eth0和Eth1。
通过访问Eth0,可以与路由器进行通信,例如,通过路由器发布虚拟IP地址,或者在DNS服务器出现故障时,通过Eth0与路由器通信,路由器停止向该DNS服务器发送域名解析请求,这样就不会再有请求发送到这台服务器上,每个虚拟IP仍然可以正常提供服务。只要还有一台DNS服务器能够正常工作,所有的VIP就可以正常服务。避免了DNS服务器故障带来了时延。
通过访问Eth1,可以对域名解析服务器进行基本的管理,例如,
可以修改虚拟IP地址和域名解析服务器的对应关系,或是添加新的域名解析服务器,关闭不再使用的域名解析服务器。
综上所述,依据本申请,应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器后,路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台DNS服务器解析域名,由于虚拟IP地址和DNS服务器的对应关系保存在路由器和DNS服务器,修改虚拟IP地址和多个域名解析服务器的对应关系的时候,可以直接在路由器和DNS服务器上进行修改,相对于现有技术中保存在各个机房服务器上,可以降低对机房服务器配置DNS服务器,以及维护配置文件的工作量。
现有技术中,如果出现DNS服务器故障,会导致发送到这台服务器的查询失败,虽然可以重试其他DNS服务器,但是会导致DNS请求时延大大增加;本申请中,当某个DNS服务器发生故障时,可以与路由器进行通信,路由器停止向该DNS服务器发送域名解析请求,这样不会再有请求发送到这台服务器上,每个虚拟IP仍然可以正常提供服务。因此,只要还有一台DNS服务器能够正常工作,所有的VIP就可以正常服务。避免了DNS服务器故障带来了时延。
同时,如果有新的DNS服务器要加入服务,只需要在路由器上添加虚拟IP地址和该域名解析服务器的对应关系,请求会自动发送到这台服务器上。对外服务的VIP仍然不变,不需要修改使用者的任何配置。
此外,本申请对多个DNS服务器进行优先级排序,轮询各个DNS服务器,或是依据主机号和端口号来选择不同的DNS服务器,使得每次选择的DNS服务器可能都不相同,实现了各个DNS服务器负载均衡。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参考图3,示出了本申请的一种域名解析的系统实施例的结构框图,具体可以包括以下结构:
应用服务器301、路由器302和域名解析服务器303;
所述应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器;
所述路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台域名解析服务器,向其发送所述域名解析请求;
域名解析服务器对域名解析请求中的域名进行解析,得出相应的IP地址,经路由器返回到应用服务器。
在本申请的一种优选实施例中,所述域名解析服务器的虚拟IP地址可以有一个或多个,当所述虚拟IP地址有多个时,应用服务器可以选择其中一个虚拟IP地址将域名解析请求发送到路由器。
在本申请的一种优选实施例中,所述路由器可以包括一个或多个,一个虚拟IP地址对应一个或多个路由器;当所述虚拟IP地址对应有多个路由器时,所述应用服务器还可以包括:
路由器选择模块,用于按照所述域名解析服务器的虚拟IP地址,选择路由耗费最低的路由器,向其发送域名解析请求。
在本申请的一种优选实施例中,所述路由器选择模块可以包括:
排序子模块,用于预先将各域名解析服务器进行排序,各域名解析服务器按照所述排序依次作为目标域名解析服务器,并向所述目标域名解析服务器发送域名解析请求。
在本申请的一种优选实施例中,所述域名解析请求中可以包括应用服务器的IP地址和端口,所述虚拟IP地址对应的各域名解析服务器已进行编号。
在本申请的一种优选实施例中,所述路由器可以包括:
哈希值计算模块,用于将所述应用服务器的IP地址和端口合并,并取哈希值;
个数确定模块,用于确定所述虚拟IP地址所对应的域名解析服务器的个数;
域名解析服务器确定模块,用于将所述哈希值除以域名解析服务器的个数,确定编号与余数相等的域名解析服务器,向其发送域名解析请求。
在本申请的一种优选实施例中,所述路由器还可以包括:
通信模块,用于当域名解析服务器发生故障时,与路由器通信,路由器停止向该域名解析服务器发送域名解析请求。
在本申请的一种优选实施例中,所述域名解析服务器还可以包括:
判断模块,用于判断是否可以解析所述域名解析请求中的域名,若否,则执行发送模块;
发送模块,用于将所述域名解析请求,发送到所述域名对应网络中的域名解析服务器。
在本申请的一种优选实施例中,所述域名解析服务器上保存有,该域名解析服务器和虚拟IP地址的对应关系,所述域名解析请求中的目标地址为虚拟IP地址,所述域名解析服务器还包括:
目标地址判断模块,用于接收域名解析请求,并依据该域名解析服务器和虚拟IP地址的对应关系,判断目标地址是否在对应的虚拟IP地址中,若是,则对该域名解析请求中的域名进行解析。
依据本申请一种域名解析的系统,应用服务器按照域名解析服务器的虚拟IP地址,将域名解析请求发送到路由器后,路由器依据所述虚拟IP地址和多个域名解析服务器的对应关系,选择其中一台DNS服务器解析域名,由于虚拟IP地址和DNS服务器的对应关系保存在路由器和DNS服务器,修改虚拟IP地址和多个域名解析服务器的对应关系的时候,可以直接在路由器和DNS服务器上进行修改,相对于现有技术中保存在各个机房服务器上,可以降低对机房服务器配置DNS服务器,以及维护配置文件的工作量。
现有技术中,如果出现DNS服务器故障,会导致发送到这台服务器的查询失败,虽然可以重试其他DNS服务器,但是会导致DNS请求时延大大增加;本申请中,当某个DNS服务器发生故障时,可以与路由器进行通信,路由器停止向该DNS服务器发送域名解析请求,这样不会再有请求发送到这台服务器上,每个虚拟IP仍然可以正常提供服务。因此,只要还有一台DNS服务器能够正常工作,所有的VIP就可以正常服务。避免了DNS服务器故障带来了时延。
同时,如果有新的DNS服务器要加入服务,只需要在路由器上添加虚拟IP地址和该域名解析服务器的对应关系,请求会自动发送到这台服务器上。对外服务的VIP仍然不变,不需要修改使用者的任何配置。
此外,本申请对多个DNS服务器进行优先级排序,轮询各个DNS服务器,或是依据主机号和端口号来选择不同的DNS服务器,使得每次选择的DNS服务器可能都不相同,实现了各个DNS服务器负载均衡。
由于所述系统实施例基本相应于前述图1和图2所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上对本申请所提供的一种域名解析的方法,以及,一种域名解析的系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。