DNS 问题,研究到凌晨 4 点还是没有结论...救救孩子吧

2021-08-02 04:13:43 +08:00
 waibunleung

最近看了 DNS 解析相关的内容,然后就好奇 dig 了一下公司的一些域名,发现自建了好多二级域名服务器。这么多服务器明显是为了容灾+分流,然后我就在想,DNS 服务器的高可用是怎么保证的?

于是我:
1.搜索了相关的 DNS 集群搭建,发现都是介绍 dns 主从服务器搭建的比较多,说一主多从就算是一个集群,但我觉得这点能力是不太够支撑高可用的
2. 找了下有没有相关大厂 DNS 这块的高可用设计,找到阿里的,但是关于一些细节的描述并没有,看完之后似懂非懂 -> https://zhuanlan.zhihu.com/p/115909472
3. 404 网站找了一番,也是多数关于 DNS 主从服务器的搭建,帮助不算太大

无奈的我只能在这里发帖问问大家,希望有相关经验的家人们能够点拨一下~

dns 解析这一层,是怎么保证高可用的?
用集群冗余备份大概率没跑了,但是集群内部是怎么同步数据的?集群中的每一个节点都向外提供服务吗?
一个进群可能不够,那多个集群之间又是怎么同步的呢?

真的感觉自己知道的太少了~

9402 次点击
所在节点    DNS
68 条回复
sutra
2021-08-03 02:21:57 +08:00
你拿 bind 跑个 DNS server 就懂了。
realpg
2021-08-03 07:31:20 +08:00
没你想象那么复杂……

多建几个,不需要集群,增删改查时候,多个服务器都应用一遍即可……
waibunleung
2021-08-03 10:15:56 +08:00
@realpg 「增删改查,多个服务器都应用一遍即可」这句话怎么理解?
waibunleung
2021-08-03 10:19:48 +08:00
@v2clay 茅塞顿开!
sutra
2021-08-03 10:23:18 +08:00
「增删改查,多个服务器都应用一遍即可」 - DNS 服务器自带。
waibunleung
2021-08-03 10:28:36 +08:00
@gBurnX 「提供故障转移的,是上级代理或负载均衡设备。这些设备会定期检查集群中每个节点的状态,如果节点挂了,上级代理或负载均衡设备就不会把外部请求转发给这些故障节点。」
意思是在 DNS 之上还会有一层负载均衡(如 LVS )来将请求分摊到不同机器?如果是这样的话,整个请求的链路会不会显得复杂? dns query->dns 负载均衡->dns sever->LVS 负载均衡->real server ?
waibunleung
2021-08-03 10:30:49 +08:00
@sutra 你的意思是,不需要 dns 集群,多建立几个 dns 的服务器,然后有什么解析记录就往各个 DNS 服务器上面添加一下,然后就可以了?
sutra
2021-08-03 10:35:19 +08:00
DNS 服务软件本身带有类似 master/slave 的广播和增量更新功能。
waibunleung
2021-08-03 10:41:27 +08:00
@sutra 这不就是主从吗?
ishalla
2021-08-03 10:58:57 +08:00
我本来觉得我很懂的,进来看 LZ 讲得我完全不懂了。。
DNS 解析的高可用不就是在一个域名下面解析两个 IP 地址,仅此而已吗?哪里来的主从、群集。。
不会有群集,就是买两条网络,DNS 服务器上填写两个 A 记录,确实这样很可能会双活,两个解析的网络都有流量,但可以通过设置 TTL 实现理论分流——但也只是理论而已,实际使用场景其实大部分时间还是双活,企业级解决方案一般这都是默认接受的风险点。
包括主楼提到的阿里云背后其实也是这样的机制,但阿里云是给一个 DNS 地址填写两个 CNAME,探测到一个域名宕了就切换到另一个,通过设置权重判断主备线。
waibunleung
2021-08-03 11:31:35 +08:00
@ishalla 你知道这么多为什么不早说说出来交流一下?
sleepm
2021-08-03 11:38:47 +08:00
https://www.root101.net/highly-available-bind-dns-cluster-design-million-user
是集群,不过,master 不是主要负责回应查询的而是同步记录的
ishalla
2021-08-03 11:57:33 +08:00
@waibunleung 刚刚开始摸鱼。。前面那么多楼越看越迷茫,越说越不懂,又花了一点时间思考,这个问题属于架构范畴,我以为 v2 都是搞开发的,也很少带架构玩。。
像你司这样能被 dig 到好几个地址,还要考虑内网外网的问题,甚至 flushdns 一下就得到不同结果了,因为内网还可能引入了 F5 、Palo Alto 之类的产品,会附带所谓的智能 DNS,其实说穿了就是 Nginx,如果考虑 Nginx 配置分流,本楼所有回复都是不全面的。。
所以不能靠 dig 结果去猜测想象,大致明白一个原理就行了,企业级解决方案很复杂的,真感兴趣找 infra team 了解吧。
waibunleung
2021-08-03 12:14:30 +08:00
@sleepm 你的链接返回了一个 xml
waibunleung
2021-08-03 12:18:59 +08:00
@ishalla v2 也有搞架构的吧
「大致明白一个原理就行了,企业级解决方案很复杂的」
就是想知道大概的 DNS 可用性方面的保证,感兴趣的是这方面
gBurnX
2021-08-03 13:11:12 +08:00
@waibunleung 觉得复杂,可以去看看系统架构图,或者 tcp 的各种功能实现图...dns 这都算是最简单的了。
sleepm
2021-08-03 13:14:22 +08:00
@waibunleung 试了下,还真是
谷歌搜 highly-available-bind-dns-cluster-design-million-users 然后点 root101.net 那个
waibunleung
2021-08-03 13:53:03 +08:00
@gBurnX 系统架构图是哪些?我的意思是找网上的架构图来看?
Showfom
2021-08-03 13:55:51 +08:00
@waibunleung #16 你得看 DNS 的查询次数,多少 PV 对 DNS 服务器的性能相关性有但是不是特别大,因为用户使用的 ISP 的 DNS 没准等下都是同一个出口呢

一亿 PV 每天而已,自建两台 DNS 服务器也可以撑起来的
dizangcn009
2021-08-03 20:41:49 +08:00
@gBurnX #40 话不投机半句多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793060

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX