CDN加速应用中,如何解决DNS缓存问题?

智能DNS可以根据用户的来路,自动给出合适的服务器IP,就算它的功能再高级些,能够侦测某个服务器当掉,做到下次用户请求不返回当掉的服务器的IP。 但是各级ISP有之前的DNS缓存,时间有可能1个小时都可能。那这样的话,如何某个web服务器当掉了,还是在这一个小时内会造成部分用户不能访问的,我们又没有办法解决这个部分用户的访问问题。。


那么在跨IDC部署web集群时,有没有更好的办法在一个IDC出问题时,之前解析到这个IDC的让用户能迅速的访问没有当掉的IDC。


我看目前chinacache用的智能DNS+CDN好像也不能解决这个问题。而新浪用的就是chinacache,请问新浪是如何很好的处理这个问题的?

新浪的dns是自己的。这个问题本质上无解,好的方式是缩短纪录的有效期,但是有很多local dns并不遵守这样的约定。

理想情况下,各地DNS的缓存时间即为设置的ttl时间,所以可以通过设置ttl时间来控制DNS缓存的时间。ttl时间设置的短,DNS缓存过期快,在机器故障的时候很快切换,对用户的影响小;但是由于ttl设置的太短,缓存很快过期,要经常一层层的问域名的解析情况,DNS解析时间会比较长。以上是理想情况,真实情况下,个别的DNS服务器并不遵从ttl时间,可能有做强制缓存多少时间,我们都没办法控制。


再来说明下使用智能DNS对域名解析的好处。

首先可以解决用户访问到一个合适的ip,提升访问效果。

再者,我们看下使用智能DNS后,用户访问http://www.abc.com的解析情况

www.abc.com. CNAME www.abc.com.xxx.com.

http://www.abc.com.xxx.com A 192.168.0.1

用户访问http://www.abc.com会经过以上的两层解析来找到ip,第一层解析的ttl时间是由你控制的,可以设置的长一些,使DNS缓存的久一些,降低DNS查询时间;第二层解析的ttl时间是由智能DNS提供方来设定的,一般设定的比较短,比如2分钟,方便故障的时候做到及时切换。


只能使用尽量短的TTL, 毕竟DNS并不是天生为GSLB设计的。

1. LocalDNS和用户可能网络距离很远,我们无法保证这一点,特别是使用固定的DNS设置的用户(比如一些用户设置成8.8.8.8 / 4.4.4.4)。不过现在使用DHCP的用户越来越多了,一般而言local DNS和用户拥有相似的网络延时

2. 某些Local DNS和browser忽略授权DNS的TTL设置,使用固定的dns超时时间。有些browser假如不关闭重启,就不会更新dns cache


但是节点失效的问题,还可以从其它方面解决,比方DNS指向的几个IP都是HA Cluster而并非单机,从节点方面规避节点失效问题

ttl设短一点,但不能太短,不然也会被运营商改掉


或者如果有bgp故障恢复也行

ttl 设置成最短。 我记得最短是300吧 。也就是5分钟。

你可能感兴趣的:(CDN加速应用中,如何解决DNS缓存问题?)