全局負載均衡與 CDN 內容分發

CDN 簡介

CDN 的全稱是 Content Delivery Network,即內容分發網絡。CDN 是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN 的關鍵技術主要有內容存儲和分發技術。

簡而言之, 就是將數據部署在各地的服務器中, 通過負載均衡技術, 讓用戶就近獲取服務器中的數據。

CDN 原理

CDN 的基本原理是廣泛採用各種緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的緩存服務器上,由緩存服務器直接響應用戶請求。

全局負載均衡主要用於在多個區域擁有自己服務器的站點,爲了使全球用戶只以一個 IP 地址或域名就能訪問到離自己最近的服務器,從而獲得最快的訪問速度。

CDN 的基本思路是儘可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN 系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet 網絡擁擠的狀況,提高用戶訪問網站的響應速度。

CDN 功能

歸納起來,CDN 具有以下主要功能:

  1. 節省骨幹網帶寬,減少帶寬需求量;

  2. 提供服務器端加速,解決由於用戶訪問量大造成的服務器過載問題;

  3. 服務商能使用 Web Cache 技術在本地緩存用戶訪問過的 Web 頁面和對象,實現相同對象的訪問無須佔用主幹的出口帶寬,並提高用戶訪問因特網頁面的相應時間的需求;

  4. 能克服網站分佈不均的問題,並且能降低網站自身建設和維護成本;

  5. 降低 “通信風暴” 的影響,提高網絡訪問的穩定性。

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 的 GSLB

用戶訪問某個網站時,需要首先通過域名解析服務(DNS)獲得網站的 IP。域名解析通常不是一次性完成的,常常需要查詢若干不同的域名服務器才能找到對應的 IP。如下圖所示,用戶首先在本地配置一個本地 DNS 服務器地址,本地 DNS 服務器收到 DNS 請求後若不能解析,會將請求轉發給更高一級的 DNS 服務器直到找到域名對應的 IP 或確定域名不存在。

對於加入了 GSLB 的情況,一個 GSLB 設備(可能是一個 4 層交換機)會最終代替 DNS 服務器完成域名解析。下圖展示兩種流程的不同。

基於 DNS 的 GSLB 優缺點

缺點是:當 GSLB 設備採用 “用戶就近訪問” 的原則作爲選擇最優服務器的策略時,會存在判斷不準的現象。原因是在這種策略下,GSLB 設備是根據用戶 IP 地址和內容服務器 IP 地址比較來判斷其就近性的,但由於 DNS 響應是通過本地 DNS 服務器到達用戶的,GSLB 設備實際上只能得到用戶的本地 DNS 服務器地址,若用戶指定的 DNS 服務器 IP 不能正確代表用戶的實際位置,就會出現判斷不準的現象。

基於 HTTP 重定向的 GSLB

爲了解決基於 DNS 實現方式判斷不準的問題,又出現了基於 HTTP 重定向的 GSLB。這種方案中 GSLB 使用 HTTP 重定向技術,將用戶訪問重定向到最合適的服務器上。

使用基於 HTTP 重定向方案,首先在 DNS 中將 GSLB 設備的 IP 地址登記爲域名的 A 記錄(既域名對應的 IP)。如上圖所示,用戶首先通過 DNS 得到 GSLB 設備的 IP 地址,此時用戶以爲這就是站點服務器的 IP,並向其發送 HTTP 請求。GSLB 設備收到 HTTP 請求後使用一定策略選擇一個最合適的服務器,然後 GSLB 設備向用戶發送一個 HTTP 重定向指令(HTTP302),並附上選出的服務器的 IP 地址。最後,用戶根據重定向 IP 訪問站點的服務器。

基於 HTTP 重定向的 GSLB 優缺點

優點:由於直接向用戶發送 HTTP 重定向指令,可以得到用戶的真實 IP,從而解決了判斷不準確的問題。

缺點是隻能爲 HTTP 訪問重定向。

基於 IP 欺騙的 GSLB

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 的流量比例。

  1. 往返時間(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 的測量值真正反映了用戶的上網感受,在運營商網絡中也不會產生額外流量。也不會受到其他運營商或網絡的安全策略的影響。

作者:等不到的口琴

來源:https://www.cnblogs.com/Courage129/p/14363627.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/KDuAldkN5nbGkXa42qafMg