对于中小型企业,在内网用 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 的压测大家一般用什么工具,谢谢
|