JasonWung's Blog

DNS循环复用

网络

随着网站流量上升,服务的负载不堪重负。造成崩溃问题。

对此,有两种解决方法,首先,第一种,升级服务器,购买更高的配置的服务器,这种方式简单易行,缺点是投资比较大,然后流量再次上升,就会面临同样的问题。另一种方法是采用集群技术。采用两台以上的服务器进行协同工作(集群系统中的服务器不一定非得是高性能的服务器,但是可以提供高性能的不停机服务,随着需求的增加,可以在集群追加服务器),集群的优点是高可靠性,和强大灵活的系统扩展能力。

两台以上的服务器协同工作必然涉及到负载均衡,常用的负载均衡技术有NAT负载均衡,反向代理负载均衡,DNS负载均衡。NAT负载均衡是将外部的IP地址映射为多个内部的IP地址,对每次请求连接动态的转换为内部服务器的ip地址,对外部服务器的访问也转接到这个内部服务器上。

反向代理负载均衡是使用代理服务器,将请求均匀的转发给多台内部服务器之一上。从而达到负载均衡的效果。

DNS负载均衡是在DNS中,为多个地址配置同一个名字,从而使不同的客户,访问不同的服务器来实现负载均衡。DNS的负载均衡是通过循环复用实现的。如果发现主机的多个资源记录,则循环使用包含在查询应答中的主机记录。在默认情况下,DNS服务器的循环复用,对资源记录进行排序,这些资源记录是在解析为多个映射的主机名应答中返回的,该功能提供了一种非常简便的方法,用于对客户机使用web服务器和频繁查询的多宿主计算机的负载均衡。

如果需要使用DNS循环复用,则首先在该区域内注册所查询名称的多个主机资源记录,并启用DNS循环复用,如果禁用DNS循环复用,那么这些查询的响应顺序以应答列表中资源记录在区域中存储时的静态排序为基础。

需要注意的两点:

当集群服务器不在同一个网段时,默认情况下。当客户机解析查询到多个ip地址的主机名时,DNS使用本地子网优先排序作为给出同一网络上首选ip的方法,此功能要求客户应用程序尝试使用连接可用的最近的ip的主机到本机。DNS通过以下方式进行子网优先:

    ①DNS 服务确定是否需要本地子网的优先级排序查询响应。
      如果有多个地址资源记录与要查询的主机名匹配,则 DNS 服务可根据其子网位置重新对记录进行排序。如果查询的主机名只与一个 地址资源
      记录匹配,或者客户机的 IP 网络地址与多重资源记录响应列表上的任何映射地址的 IP 网络地址匹配,则不需要进行优先排列。
      ②对于匹配响应列表中的每一个资源纪录,DNS 服务决定了哪些记录(如果有)与查询客户机的子网位置匹配。
      ③DNS 服务重新对响应列表进行排序,以便将与发出请求的客户机的本地子网匹配的 主机地址资源记录排在响应列表中的第一位。
      ④根据子网的顺序进行优先级排序后,响应列表将返回给发出请求的客户机。

不足之处:

    虽然DNS循环复用是负载均衡的普遍解决方法,但是仍然存在缺点。循环复用 DNS 使用 DNS将传入的 IP 请求映射到定义的一系列循环形式的服务器。一旦发生服务器故障,循环复用 DNS 继续把请求发送到这个故障服务器,一直到把该服务器从 DNS 中移走为止。这样许多用户必须等到 DNS 连接超时以后才能成功地访问目标网站。

    集群负载均衡被认为是目前十大热门技术之一,它也是一个高端应用,Internet/Intranet中负载均衡方法应用十分广泛,许多大中型网站都难脱离这种技术。NAT负载均衡、反向代理均衡及DNS负载均衡,将视需要而被采用。利用循环复用DNS实现负载均衡是一种经济又实用的方法,不需要添加昂贵的负载均衡设备,并且服务器可以位于互联网的任意位置,该技术当前使用在包括Yahoo在内的一些Web站点上。