V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jamiroquai
V2EX  ›  DNS

请教该如何考虑内网 DNS 部署的高可用及负载均衡

  •  
  •   jamiroquai · 2018-01-02 15:13:20 +08:00 · 6696 次点击
    这是一个创建于 2546 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于中小型企业,在内网用 Bind 部署 2~3 台 DNS 应该就可以满足需求,但是对于大型企业,尤其是大型跨国企业,该如何设计一个高可用及负载均衡的内网 DNS 系统呢?初步想到如下几点,请大家指教:

    1. 通过 Anycast+Bind 来实现全局的负载均衡;
    2. 对于某个节点,使用单台 DNS 服务器可能会达到 DNS 服务器的瓶颈,是否能通过专用的负载均衡设备或者 LVS 来挂载多台 DNS 服务器,来承担 1 一百万 QPS 的访问?

    另外,大家对 Bind 的优化有什么建议哈,感觉再高配的机器,Bind 也只能到 10WQPS 左右,不知道是不是我们没抓住优化的重点。

    16 条回复    2018-02-07 06:42:41 +08:00
    Aliencn
        1
    Aliencn  
       2018-01-02 16:56:42 +08:00
    DNSPod 开源了
    jamiroquai
        2
    jamiroquai  
    OP
       2018-01-02 17:27:00 +08:00
    @Aliencn,是指 DNSPod-SR 对吧,不知道国内有多少公司在使用这个开源版本,另外是否有和 Unbound,PowerDNS 等的对比哈。不过我更关注的是对于单节点上 DNS 的负载均衡,我想 DNSPod,阿里云 DNS 之类的,都不会在某个点只放一台机器吧?
    owenliang
        3
    owenliang  
       2018-01-02 18:24:50 +08:00 via Android
    就是配多个 resolver 吧。。。靠加机器硬抗
    jamiroquai
        4
    jamiroquai  
    OP
       2018-01-03 09:27:47 +08:00
    @owenliang,谢谢回复。可以通过 Anycast 来配置多个 resolver,但假如某个 resolver 的压力非常大,导致 DNS 响应缓慢,这种情况就要考虑对这个 resolver 进行多一次的负载分摊
    sendmailer
        5
    sendmailer  
       2018-01-03 09:34:14 +08:00
    用 lvs 或 ecmp 做单节点的负载均衡,整个内网发 anycast 路由地址。通常内网如果没有爬虫服务,递归量不是很大。如果真的大再拆分缓存和递归集群。
    sendmailer
        6
    sendmailer  
       2018-01-03 09:35:03 +08:00
    内网用 bind 就行了,其他的别折腾
    jamiroquai
        7
    jamiroquai  
    OP
       2018-01-03 10:39:49 +08:00
    @sendmailer 感谢回复,LVS 能扛得住不,DNS 的访问量还是非常大的。。
    jamiroquai
        8
    jamiroquai  
    OP
       2018-01-03 10:46:18 +08:00
    用 Bind 有时候会遇到莫名其妙的问题,64C/128G 的机器用来做转发和 cache 服务器,经常会莫名其妙出现无法解析的情况,看了下 QPS 才 3W 左右,这时候 netstat 会看到有 UDP 的包被丢掉,感觉是 Bind 处理不过来。
    sendmailer
        9
    sendmailer  
       2018-01-03 11:55:03 +08:00
    ecmp 没条件就用 lvs,后端 rs 可以堆,瓶颈在 lvs,具体没压测过,不过做 udp 转发+dr 模式 应该问题不大。 出现 udp 丢包就关 log,如果又想存 log 就用 dnstap,再不行就用分光器采集流量存。
    jamiroquai
        10
    jamiroquai  
    OP
       2018-01-03 13:53:52 +08:00
    @sendmailer 感谢宝贵意见~~
    jamiroquai
        11
    jamiroquai  
    OP
       2018-01-03 13:59:00 +08:00
    Bind 写 Log 有时候会丢包是因为磁盘 IO 导致的么?
    tom82232
        12
    tom82232  
       2018-01-05 14:44:58 +08:00
    企业的 QPS 有这么大的吗? BIND 性能本来就高,架构决定。重在开源,全面。至于方案你已经有了
    mykgzy
        13
    mykgzy  
       2018-01-09 19:49:48 +08:00
    之前我一个超大互联网的做法是:
    1. 每个机房几台 DNS,然后利用 cost 或 anycast 来做本地解析优先
    2. 每组 DNS 使用 ECMP (利用 zebra 和交换机跑 OSPF )
    3. master 只做下发,每个机房的都是 slave 的查询。

    再深的我不清楚了,其实我是网工。我最近也在看这方面的东西
    jamiroquai
        14
    jamiroquai  
    OP
       2018-01-12 10:57:47 +08:00
    @tom82232 有的,林子大了,什么 Bug 都有,遇到过有些程序 1 秒访问 10 多 W 次的。Bind 的性能调优有什么建议么?谢谢~~
    jamiroquai
        15
    jamiroquai  
    OP
       2018-01-12 10:59:16 +08:00
    @mykgzy 嗯嗯,这块深入的话还是有很多东西要了解
    sopato
        16
    sopato  
       2018-02-07 06:42:41 +08:00 via iPhone
    借地问一问 dns 的压测大家一般用什么工具,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   916 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:48 · PVG 03:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.