智能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伺服器上去。
推薦閱讀:
相關文章