zoukankan      html  css  js  c++  java
  • 智能DNS 笔记

    参考资料: 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

  • 相关阅读:
    LeetCode (Two Sum & Add Two nums)
    打包时记录编译开始时间并在App中获取
    CocoaPods
    不知所云
    苹果审核相关内容
    iOS权限的一些备注
    触发网络权限弹窗的一些特别方式记录
    iOS13和iOS14里面访问相册选取图片的两种方式的区别
    @Configuration@Bean
    ACID
  • 原文地址:https://www.cnblogs.com/peon/p/1021219.html
Copyright © 2011-2022 走看看