关注
发布于: 23 小时前
作者简介:苗宏涛,2010 年加入去哪儿,主要负责去哪儿网站运营-技术保障部相关工作。将运维自动化,智能化一直是我秉持的理念。
DNS 是域名系统 ( Domain Name System ) 的缩写,是因特网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数字串。互联网能够互联互通,能够方便人们方便访问,DNS 起到了很大的作用。DNS 查询过程要维护好 DNS 系统,首先要理解 DNS 的原理和查询过程。这里给大家介绍下一般 DNS 查询过程。
Qunar 的 DNS 系统经历了 几次技术和架构的变更,逐渐演变成现在的智能 DNS 系统。
Qunar 的初期 DNS 管理和大部分的 DNS 管理模式一样。通过 DNS Master 更新记录,测试成功后,DNS master 向 slave 发起更新通知,salve 接收到通知后,更新数据。由于我们有多台授权域服务器。采用这种模式,可以大大降低我们出错的几率。并且生效快。
Qunar 可以说是 DNS 系统的重度用户。我们所有的服务器设备,虚拟机和网络设备的访问都是通过域名访问的。随着业务的不断增多,需要的建立的域名和服务器数量也成几何级增长。纯手工配置模式已经达不到我们运维的要求。因此,我们建立了我们的 dnsdb 管理系统。随着业务的发展要求,需要不断建立一系列域名,提供各种服务。dnsdb 也随之进行了一系列改造,支持各种服务需求。
解释下什么是 DNS view 功能。从 bind9 开始,bind 支持了视图功能。什么是视图功能呢?简单来说,就是不同的用户在解析域名的时候,DNS view 可以根据用户的源 IP ,解析出不同的域名 IP 。DNS view 给我们带来的好处:
虽然 DNS view 功能帮我们解决了流量分布问题。但是,我们发现有些用户还是会出现解析的地址和我们分配的不符问题。通过调查和研究发现,有用户会修改自己的 DNS server 配置,经常发现用户会把自己的 DNS server 设置为 8.8.8.8 。由于用户使用了不是自己运营商的 DNS server,所以造成 DNS view 识别用户区域时错误。EDNS 正好可以帮助我们解决这个问题。为强化 DNS 服务的验证,ICANN 不断推广 DNS Security Extensions(DNSSEC),目标是提升网络的使用安全,要确保 DNS 的内容,不会在源头被修改,以及阻止黑客恶意移转 DNS 用户的流量,同时也让 DNS 的查询将更加安全。而在 DNSSEC 中,包含了两个重要关键技术,分别是数字签名与 EDNS 。EDNS 技术中,DNS server 在向我们的授权域服务器发起请求的时候,会携带真实用户的 IP 。我们的 DNS server 在版本升级后,也支持了 EDNS 的解析。这样,我们就解决用户流量分配错误的问题。
回顾文章开始的部分,一个用户在访问一个网站的时候,首先都是通过自己本地的 DNS 服务器 去获得网站的解析,然后完成访问。但是,出于一些不可预知的原因,有些 DNS 域名服务提供商会修改域名解析的正常结果,导致解析错误。这就叫域名劫持。在 PC 端可以提供的解决办法确实不多,但是随着移动互联网的应用越来越普及。我们也有了更多客户端应用控制的能力。HTTPDNS 就是在这个场景下诞生的。HTTPDNS 就是通过 HTTP 协议实现的 DNS 解析服务。用户通过 HTTP/HTTPS 访问一个固定地址,获取一个的解析,巧妙的解决了域名劫持问题。Qunar 自己实现了一套 HTTPDNS 服务系统,并且支持了 DNS view,EDNS 功能。
虽然我们的 DNSDB 系统的功能已经逐步完善,但在遇到 IDC 网络故障, IDC 上级运营商网络故障或者 IDC 受到攻击无法自动感知,自动切换。因此,增加了每个机房增加对不同运营商的实时监控。
通过上述不同运营商级别的数据再加工,设置报警和 callback 阈值。当出现运营商级别或者 IDC 网络的故障时,DNSDB 可以自动将流量切换到其他流量出口。当监控恢复后,流量自动切回来。整个运维过程,完全是自动化,智能化。通过这套系统,我们可以实现分钟级别的故障自愈能力。
通过对 DNS 系统的不断改造和功能完善,Qunar 终于建造了一套自己的 DNS 智能管理系统,并且提供了一系列功能,满足业务的各种需求。上面用到的技术也是这几年业界都比较热门的技术。也希望通过这次分享,能给同事做运维的同学带来启发,也希望能够和同行业多多交流。
领取专属 10元无门槛券
私享最新 技术干货