CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,經過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,下降網絡擁塞,提升用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。緩存
簡而言之,就是將數據部署在各地的服務器中,經過負載均衡技術,讓用戶就近獲取服務器中的數據。安全
CDN的基本原理是普遍採用各類緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工做正常的緩存服務器上,由緩存服務器直接響應用戶請求。服務器
全局負載均衡主要用於在多個區域擁有本身服務器的站點,爲了使全球用戶只以一個IP地址或域名就能訪問到離本身最近的服務器,從而得到最快的訪問速度。網絡
CDN的基本思路是儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。經過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統可以實時地根據網絡流量和各節點的鏈接、負載情況以及到用戶的距離和響應時間等綜合信息將用戶的請求從新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的情況,提升用戶訪問網站的響應速度。架構
概括起來,CDN具備如下主要功能:負載均衡
簡單地說,內容分發網絡(CDN)是一個經策略性部署的總體系統,包括分佈式存儲、負載均衡、網絡請求的重定向和內容管理4個要件,而內容管理和全局的網絡流量管理(Traffic Management)是CDN的核心所在。經過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。總的來講,內容服務基於緩存服務器,也稱做代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有"一跳"(Single Hop)之遙。分佈式
同時,代理緩存是內容提供商源服務器(一般位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商可以表明他們客戶,即內容供應商,向最終用戶提供儘量好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。性能
全局負載均衡(Global Server Load Balance, GSLB),全局負載均衡是指對分別放置在不一樣的地理位置的服務器羣間做負載均衡。服務器負載均衡是指對本地的服務器羣作負載均衡。主要用於在多個區域擁有本身服務器的站點,爲了使全球用戶只以一個IP地址或域名就能訪問到離本身最近的服務器,從而得到最快的訪問速度。網站
對於全局負載均衡而言,其核心就是服務器羣的選擇。對於某個特定的客戶,應該將其定向到哪個服務羣?應該使用什麼標準來進行這種選擇?通常狀況下,主要考慮兩個因素:臨近程度和負載大小。代理
臨近機制主要考察服務器羣與用戶之間的物理距離。選擇地理位置最接近用戶的服務器集羣,能夠減小服務響應到達用戶所通過的中轉次數,從而下降中轉節點對服務質量的影響。常見的有兩種方式,一種是靜態配置,例如根據靜態的IP地址配置表進行IP地址到服務器羣的映射。另外一種方式是動態的檢測,例如實時地探測到目標IP的距離(能夠採用到達目標IP通過的跳數做爲度量單位),而後比較探測結果進行選擇。
負載機制比較各個服務器羣的負載,肯定由哪個服務器羣來響應請求。在全局負載均衡中,考察的是服務器羣的負載,而不是單個服務器的負載,所以,須要更多地考慮廣泛的問題,好比,須要考慮站點的最大鏈接數、站點的平均響應時間、服務質量等。
常見的GSLB實現方式有三種: DNS輪詢、HTTP重定向、IP欺騙(又稱三角傳輸)。這三種實現方式都是在用戶經過域名來訪問目標服務器時,由GSLB設備進行智能決策,將用戶引導到一個最佳的服務IP。
用戶訪問某個網站時,須要首先經過域名解析服務(DNS)得到網站的IP。域名解析一般不是一次性完成的,經常須要查詢若干不一樣的域名服務器才能找到對應的IP。以下圖所示,用戶首先在本地配置一個本地DNS服務器地址,本地DNS服務器收到DNS請求後若不能解析,會將請求轉發給更高一級的DNS服務器直到找到域名對應的IP或肯定域名不存在。
對於加入了GSLB的狀況,一個GSLB設備(多是一個4層交換機)會最終代替DNS服務器完成域名解析。下圖展現兩種流程的不一樣。
優勢是:實現簡單、實施容易、成本低。
缺點是:當GSLB設備採用「用戶就近訪問」的原則做爲選擇最優服務器的策略時,會存在判斷不許的現象。緣由是在這種策略下,GSLB設備是根據用戶IP地址和內容服務器IP地址比較來判斷其就近性的,但因爲DNS響應是經過本地DNS服務器到達用戶的,GSLB設備實際上只能獲得用戶的本地DNS服務器地址,若用戶指定的DNS服務器IP不能正確表明用戶的實際位置,就會出現判斷不許的現象。
爲了解決基於DNS實現方式判斷不許的問題,又出現了基於HTTP重定向的GSLB。這種方案中GSLB使用HTTP重定向技術,將用戶訪問重定向到最合適的服務器上。
使用基於HTTP重定向方案,首先在DNS中將GSLB設備的IP地址登記爲域名的A記錄(既域名對應的IP)。如上圖所示,用戶首先經過DNS獲得GSLB設備的IP地址,此時用戶覺得這就是站點服務器的IP,並向其發送HTTP請求。GSLB設備收到HTTP請求後使用必定策略選擇一個最合適的服務器,而後GSLB設備向用戶發送一個HTTP重定向指令(HTTP302),並附上選出的服務器的IP地址。最後,用戶根據重定向IP訪問站點的服務器。
優勢:因爲直接向用戶發送HTTP重定向指令,能夠獲得用戶的真實IP,從而解決了判斷不許確的問題。
缺點是隻能爲HTTP訪問重定向。
HTTP重定向方案解決了判斷不許確的問題,但只能針對HTTP協議應用使用。對於HTTP協議之外的訪問,就須要使用基於IP欺騙(又稱三角傳輸)的GSLB。
基於IP欺騙的方案一樣須要首先將GSLB設備的IP地址在DNS中登記爲域名的A記錄,這樣用戶對該域名的請求包都會先發送到GSLB設備。如上圖所示,GSLB設備首次收到服務請求包後,會選擇一個最合適的服務器,並將服務請求包發送到該服務器。服務器在向用戶發送響應包時,將其源IP地址字段改成GSLB設備的IP,發送給用戶。
這樣,整個過程對用戶來講,感受到的只是GSLB設備在爲其提供服務,並不知道其中經歷這樣一個三角傳輸的過程。並且這種方案能夠對全部類型的訪問如HTTP、FTP等進行重定向,但其速度和效率相對比前兩種方案要差一點,由於用戶全部的訪問請求都經過三個點才能響應,經歷了更多的路徑和處理,因此其主要做爲HTTP重定向方案的補充方案在同一GSLB設備中實現。
上文中介紹的三種方案,解決了如何將用戶引導到指定服務器羣的問題,而在此以前首先須要使用某種方式選出最適合用戶的服務器羣,也就是GSLB在選擇服務器羣時所採用的策略。接下來介紹一些經常使用的GSLB策略。
1)地理區域或用戶自定義區域:將若干條IP地址前綴劃分一個區域爲。根據用戶本地DNS的IP地址,將特定IP範圍的用戶優先分配到某個經過健康檢查的站點。
2)IP地址權重:能夠爲DNS應答中的每一個IP地址分配權重,權重決定與其餘候選IP相比分配到該IP的流量比例。
3)往返時間(Round Trip Time, RTT):RTT策略是基於區域以外最經常使用的策略。有兩種模式的RTT測量:Active RTT測量與Passive RTT測量。在實際部署中,因爲網絡限制和性能緣由,Active RTT每每沒法使用,Passive RTT更實用一些。
a) Active RTT 測量:
當GSLB Controller收到來自LDNS的DNS請求時,GSLB Controller會通知全部站點負載均衡設備對該LDNS進行RTT測量。根據採集到的RTT值,GSLB Controller會選擇RTT值最小的站點的VIP返回給LDNS。
因爲Active RTT採用DNS Query或ICMP進行RTT測量,在有些網絡中可能會被安全策略所過濾而沒法工做。
Active RTT測量會產生額外的DNS Query或ICMP流量,在有些網絡中用戶不但願有太多相似的非用戶流量。
b) Passive RTT測量:
Passive RTT測量指從內容站點收到一個用戶發出鏈接請求(發送TCN SYN)到接收到用戶的確認(收到TCP ACK)所經歷的時間。而不是簡單的PING的響應時間,能夠更精確的衡量訪問最快的站點。
Passive RTT測量不會主動去進行測量,也不會產生額外的數據流量,而是在用戶向返回的VIP創建鏈接時進行採集。
Passive RTT的測量值真正反映了用戶的上網感覺,在運營商網絡中也不會產生額外流量。也不會受到其餘運營商或網絡的安全策略的影響。