参考资料: Load Balancing Servers, Firewalls, and Caches / WSD产品文档

要点:

  • local dns (local name server)是客户端网络设置的一部分,要么是手工配置,要么从DHCP得到。一般local dns 在从网络上靠近客户端。
  • 主要的域,比如.com .net .org 等,都由Internet管理方进行管理维护,负责这些域的服务器也叫"根服务器", 根服务器里面有 foo.com 之类的子域,每个子域有一个或者多个服务器,这就是子域的权威服务器(授权DNS服务器)。
  • 授权DNS服务器存储对于管理一个域名的重要信息,同时一个域名可以分为多个Zone,个Zone可以有各自的授权DNS,称为Zone of Authority(ZOA). 比如a.foo.com b.foo.com 可以有各自的ZOA
  • 可以有一个或者多个授权DNS服务器,但是只有一个 primary authoritative DNS 负责分发域名name space的信息。

迭代查询和递归查询:

迭代查询:服务器可以回答确切答案,或者告知查询者其他可能知道答案的服务器。

递归查询:服务器必须回答确切答案,假如自己不知道,就要通过查询其他服务器得到答案。

客户端的DNS解析器一般无法处理迭代的回答,所以查询localDNS一般使用递归方式。服务器DNS解析器可以回答迭代或者递归查询,也可以发出递归或者迭代查询。

 

典型DNS查询流程:

image

1. 客户端向local dns查询 www.foo.com,注意这是递归查询

2.3. local dns 向 root name servers  查询 .com 的name server. 这里采用迭代方式。

4.5. local dns 向 .com 的 name server 查询 foo.com 的授权dns

6.7. local dns 向 foo.com 的授权dns得到 www.foo.com 的ip list

8.    local dns 将 www.foo.com 的一个ip返回给客户端

9.    客户端访问 ip 指向的服务器

 

Local DNS Caching

DNS 信息有一个TTL消息, local dns 可以cache dns reply ,过期时间就是这个ttl时间。

假如dns cache信息过期,local dns 向授权dns服务器重新请求。

假如local dns 收到的dns查询响应有多个ip 地址,对于客户端的查询,将采用round-robin策略

客户端也可以cache dns 响应,但是部分客户端忽略ttl信息而采用自己的固定dns过期时间,比如微软的IE

 

Using Standard DNS for load balancing

DNS可以做load banlancing服务,对于一个域名可以配置多个ip地址,这些ip指向load balancer的VIP或者只是一台真实服务器。但是DNS无法知道某个ip是否能否服务或者负载情况如何(这个不是绝对的,参看下面GLSB部分),毕竟 DNS 并不是为 GLSB 设计的。

DNS−Based GSLB

需要load balancer在DNS framework框架内,为特定客户端选择最合适的server的ip地址。这里分为两个问题:

  1. balancer如何纳入dns框架内, 返回最合适的ip地址给客户端?
  2. load balancer如何知道谁是最好的site?

将load balancer嵌入 GLSB 有几种途径:

The Load Balancer as the Authoritative DNS

最简单的方法是load balancer作为域名或者Zone的授权DNS, 作为授权DNS服务器,load balancer可以智能的响应DNS查询,大部分GLSB产品可以实现这种该功能.

image

不同的GSLB产品的不同实现是一个需要考虑的问题. F5 3DNS有完整的DNS实现, 而 Foundry, Nortel, Cisco, Radware 的产品实现了不同的DNS功能,假如某个产品不能处理特定的查询,它就会丢弃查询,返回错误或者转寄查询到一个真实的DNS server。对于客户,这意味着他们得放弃原来使用的一些DNS功能。

The Load Balancer as Forward DNS Proxy

forward proxy server 明确的代表另一台服务器。load balancer 注册为域名的授权DNS,作为真正的授权DNS服务器的代理。对于DNS查询,load balancer 转寄给授权DNS,修改其回应来实现GLSB功能。只对于特定GLSB域名的name-address 解析命令,load balancer才会需要dns响应

image

这种方案有很多好处:

可以使用多个DNS server ,来得到高可用性和高扩展性

DNS server可以在私有网络内,来增强安全性

可以透明的增加和移走DNS server

Load balancer不需要实现所有的DNS功能,进一步地说,GSLB功能可以很好的和普通的load balancing功能共存。

image 

Load balancer有两个VIP: VIPD是作为授权DNS proxy的地址,VIP1是server farm (new york)的地址。当然,这两个VIP可以使用同一个地址。

有了forward dns proxy, 我们可以把真实的授权dns服务器放在任何地方。一般是客户控制授权DNS,而服务提供商使用forward dns proxy 来提供GLSB服务。load balancer 的VIP要被注册为授权DNS服务地址。假如真实授权dns比较远,到它的查询有明显的时延,这时候为了性能,load balancer就要像local dns一样缓存dns查询。

假如有人需要不修改任何dns设置怎么办?forward dns proxy 可以把原来的授权dns换一个ip,原来的IP给load balancer,或者是设置授权DNS地址,指向新的load balancer的VIP。总之还是要修改原有授权dns的一些设置。

透明DNS proxy可以避免修改任何DNS设置。

Limitations of DNS−Based GSLB

毕竟DNS并不是为GSLB设计的。

1. LocalDNS和用户可能网络距离很远,我们无法保证这一点,特别是使用固定的DNS设置的用户。不过现在使用DHCP的用户越来越多了,一般而言local DNS和用户拥有相似的网络延时

2. 某些Local DNS和browser忽略授权DNS的TTL设置,使用固定的dns超时时间。有些browser假如不关闭重启,就不会更新dns cache

 posted on 2007-12-30 20:54  加菲猫  阅读(5499)  评论(0编辑  收藏  举报