由新浪DNS故障想到的——慎用CNAME记录

2012-02-01

近日,新浪因短暂DNS故障导致部分地区无法正常登陆新浪网。作为一个很少登陆新浪网的网友,整个事件对我而言并没有什么影响。不过,这次DNS解析故障倒让我担心起了正在使用的Sina App Engine服务。

照理说,新浪的DNS解析故障和Sina App Engine应该是没有关系的。但是,我注意到一个细节,SAE应用使用的yourname.sinaapp.com域名并不是直接A记录解析成IP地址,或者CNAME(别名记录)到sinaapp.com的某一个二级域名下,而是CNAME到了app.dpool.sina.com.cn!也就是说,对yourname.sinapp.com域名的解析过程实际上是分两个过程完成的——第一个,客户端发起对yourname.sinaapp.com的解析请求,DNS服务器返回一个CNAME记录app.dpool.sina.com.cn;第二个,客户端再发起一个对app.dpool.sina.com.cn的解析请求,DNS服务器进行解析,返回IP地址。

我经过查看发现,sinaapp.com和sina.com.cn使用的是不同的DNS服务器。类似于电路上的串联,两个域名只要有一个解析出现故障,DNS解析即受到影响。好在用户并非直接对域名的DNS服务器请求解析,而是对ISP处的Local DNS发起请求。由于Local DNS具有缓存作用,所以域名DNS服务器的故障并不一定对用户可见。当然,新浪的服务水平毋庸置疑,即使出现了短暂的解析故障,也是在所难免的事情。然而,并非所有的服务商都有新浪这样的服务水平。

作为一个业余站长,对CNAME记录应该再熟悉不过了。什么网站联盟,什么CDN加速,什么智能DNS,都会用到CNAME记录。起先,我认为这样子挺方便的,尽管一定程度上增加了DNS的解析时间。但是新浪的这次DNS故障改变了我的看法,我觉得CNAME记录还是应该慎重使用的—— 一旦使用了CNMAE记录,域名的成功解析与否会同时受到两个甚至多个域名的DNS服务器的影响。

我建议CNAME记录能少用就少用,能不用就不用。原来我对CloudFlare(一个国外的CDN服务提供商)要求必须使用其DNS服务感到非常不解,倒是新浪的这次故障让我明白了不少个中缘由。因为大多数诸如CDN之类的服务使用CNAME记录在所难免,所以,我建议相关服务商最好可以提供DNS托管服务,将不稳定因素降到最低。对于一些简单的CNAME记录,我觉得完全可以用自己域名的A记录替换掉。如果说你考虑到CNAME到的域名IP会发生变动的话,我认为完全没这个必要——如果一台服务器的IP地址经常变动的话,你就可以把它踹掉了;即使你不踹掉它,搜索引擎也会把你踹掉。


除非特殊说明,本博客文章均为原创,转载请以链接形式标明博文地址。

本文链接地址: 由新浪DNS故障想到的——慎用CNAME记录

分类:互联网 | 标签: |
  1. 我觉得你不太对!
    首先,总体上看,dns服务器比普通的网站空间要稳定!
    所以,增加dns解析过程,未必就是坏事!

    • 欢迎探讨。
      请问为什么DNS服务器就比普通的网站空间稳定呢?不过同样配置的服务器,DNS服务可承载更多的用户访问而已。像新浪、搜狐之类的门户网站,WEB服务器有很多,但是DNS就6~8组,要是DDoS,你是打DNS,还是打WEB服务?
      而且吧,CNAME最典型的应用CDN,一般都是很多域名CNAME到CDN服务商单个域名下的子域名。拿网宿的lxdns.com来说吧,网易、凤凰网都做了别名记录到这儿,而且承载了成千上万的网站。但是它的DNS服务器就那么几组,危险有多大,不用我再重复了吧。而且我写了这篇文章之后,这个域名就出过解析问题,这些网站无一幸免。
      还有,采用别名会增加域名解析的时间,人家门户网站因为访问量大,运营商的DNS服务器上有缓存记录,所以增加的时间可以忽略。但是对于一般网站,增加一两秒的解析时间都不是事儿;海外DNS解析时,增加的时间就更不必说了。
      另外,我这篇文章之后,SAE就去掉了指向sina.com.cn域下的别名,至于为什么,我就不必重复了吧。我再说个最近的吧,EdgeCast的域名被DNS污染你应该知道吧,就是因为这个CNAME,包括QQ在内的多少网站不能访问了?
      我说的是尽量不用,当然,要是上CDN,或者做负载均衡,很多情况该用还是得用,毕竟这个记录确实很有用。
      恕我冒昧,如果我没猜错,您应该没有系统地学过《计算机网络》或者DNS的解析过程吧?