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