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

那么在跨IDC部署web集群时,有没有更好的办法在一个IDC出问题时,之前解析到这个IDC的让用户能迅速的访问没有当掉的IDC。 我看目前chinacache用的智能DNS+CDN好像也不能解决这个问题。而新浪用的就是chinacache,请问新浪是如何很好的处理这个问题的?


只能使用尽量短的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而并非单机,从节点方面规避节点失效问题


理想情况下,各地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分钟,方便故障的时候做到及时切换。
新浪的dns是自己的。这个问题本质上无解,好的方式是缩短纪录的有效期,但是有很多local dns并不遵守这样的约定。
ttl 设置成最短。 我记得最短是300吧 。也就是5分钟。
IDC 容灾的话,你可以考虑LISP技术。在一个数据中心挂掉的时候,他的出口LISP路由器会帮你将当前DNS解析出来的IP流量定向到OK的IDC中去。


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

或者如果有bgp故障恢复也行
伺服器不应该是防止防火墙后面的么,一台伺服器DOWN掉之后,会自动被NAT映射到另外一台伺服器,但是对外看到的IP地址不会变化。有时候甚至DNS伺服器都是内网伺服器,防火墙兼做流量分担功能,将发到同一个DNS的请求转发到不同的DNS伺服器上去。
推荐阅读:
相关文章