1. 程式人生 > >伺服器負載均衡 & 鏈路負載均衡 《CDN技術詳解》

伺服器負載均衡 & 鏈路負載均衡 《CDN技術詳解》

1. 伺服器負載均衡

伺服器負載均衡是將客戶端請求在叢集中的伺服器上實現均衡分發的技術。按照位於七層網路協議棧的不同層的劃分,伺服器負載均衡可以分為四層(L4)負載均衡和七層(L7)負載均衡兩種。 1)L4負載均衡是基於流的伺服器負載均衡,能夠對報文進行逐流分發,即將同一條流的報文分發給同一臺伺服器; 2)L7負載均衡是基於內容的伺服器負載均衡,能夠對七層報文內容進行深度解析,並根據其中的關鍵字進行逐包轉發,按照既定策略將連線導向指定的伺服器。 兩者相比較,L4負載均衡因無法對七層業務實現按內容分發,限制了它的適用範圍,因此L7負載均衡受到了業界的極大重視並日漸成為伺服器負載均衡的主流。

1.1 四層負載均衡

L4負載均衡的實現主要有NAT(NAT,Network Address Translation)方式和DR(Direct Routing)方式兩種型別,它們適用於不同的應用場景。

(1)網路地址轉換

網路地址轉換(NAT,Network Address Translation)屬於廣域網接入技術,它是一種將私有(保留)地址轉化為合法IP地址的轉換技術,被廣泛應用於各種型別網際網路接入方式和各種型別的網路中。

採用NAT方式實現的L4伺服器負載均衡,後端伺服器可以位於不同的物理位置和不同的區域網內。負載均衡裝置在分發服務請求時,需要進行虛擬IP地址和目的IP地址轉換,再通過路由將報文轉發給具有相應目的地址的伺服器。NAT方式L4負載均衡的典型組網如圖所示。

NAT方式L負載均衡的典型組網

主要元件包括如下幾項: ◇ 負載均衡裝置:負責將客戶端服務請求分發到伺服器叢集中的具體伺服器進行處理。 ◇ 真實伺服器:負責響應和處理各種客戶端服務請求的伺服器,多臺伺服器構成叢集。 ◇ 虛擬IP地址:叢集對外提供的公網IP地址供客戶端請求服務時使用。 ◇ 伺服器IP地址:伺服器的IP地址供負載均衡裝置分發服務請求時使用。這個IP地址可以是公網IP,也可以是私網IP。

NAT方式L4伺服器負載均衡的工作原理如圖4-7所示。  NAT方式L4負載均衡的工作流程

工作流程是這樣的:

  • (1)負載均衡裝置負責接收客戶端傳送至虛擬IP地址的服務請求。
  • (2)負載均衡裝置通過伺服器可用性驗證、會話持續性保證等對負載均衡演算法進行排程,選擇出負責響應和處理該請求的真實伺服器。
  • (3)負載均衡裝置用真實伺服器的IP地址改寫請求報文的目標地址,再將請求傳送給選定的真實伺服器。
  • (4)真實伺服器的響應報文首先通過負載均衡裝置。
  • (5)負載均衡裝置將響應報文的源地址修改為虛擬lP地址,再返回給客戶端。

這種方法使用了網路地址轉換(NAT)技術實現L4負載均衡,它具有組網靈活,適用於多種組網型別的特徵。該方法對伺服器沒有額外的要求,不需要修改伺服器的配置。

(2)DR(Direct Routing)

DR(Direct Routing)是另一種L4伺服器負載均衡的實現方式。與NAT方式的L4負載均衡不同,DR方式只有客戶端發出的服務請求報文需要通過負載均衡裝置,而伺服器發出的響應報文則無須通過,這樣能夠有效減少負載均衡裝置的負載壓力,避免負載均衡裝置成為系統性能瓶頸。

DR方式下,負載均衡裝置在分發伺服器請求時,不採用改變請求目的IP地址的方法,而是將報文的目的MAC地址替換為伺服器的MAC地址,然後直接將報文轉發給伺服器。 DR方式L4負載均衡的典型組網

從圖中可以看出,DR方式L4伺服器負載均衡的實現方案與NAT方式類似,區別是負載均衡裝置是以旁掛形式與交換機相連線的,而且叢集中每臺處理使用者請求的伺服器都擁有單獨的虛擬IP地址

DR方式L4負載均衡的原理是為負載均衡裝置和真實伺服器同時配置虛擬IP地址,但是要求真實服務囂的虛擬IP地址不能響應ARP請求,例如在環回介面上配置虛擬IP地址。用於響應服務請求的伺服器上除了虛擬IP地址,還需要配置一個真實的IP地址用於和負載均衡裝置通訊。負載均衡裝置要和真實伺服器同處於一個二層網路內。因為伺服器的虛擬IP地址不能響應ARP請求,所以從客戶端傳送給虛擬IP地址的報文將由負載均衡裝置接收,負載均衡裝置再將其分發給相應的真實伺服器,而從真實服務囂傳送給客戶端的響應報文則直接由交換機返回。 DR方式L4負載均衡的工作流程

這種方法沒有采用傳統的通過查詢路由表的轉發方式來分發請求報文,而是通過修改目的MAC直接路由給伺服器,DR方式也就因此而得名。該方法只要求客戶端到伺服器的單方向請求報文經過負載均衡裝置,負載均衡裝置負擔較小,不易成為瓶頸,具有更高的處理效能。

1.2 七層負載均衡

L4伺服器負載均衡在擷取資料流以後,對資料包的檢查和分析僅侷限於IP報文頭部和TCP/UDP報文頭部,而並不關心TCP/UDP資料包的有效載荷資訊。而L7伺服器負載均衡則要求負載均衡裝置除了支援基於四層的負載均衡以外,還要解析資料包中四層以上的資訊,即應用層的資訊,例如解析HTTP內容,從而在資料包中提取出HTTP URL或者Cookie資訊,用來作為負載均衡的依據。

L7伺服器負載均衡通過內容分析控制應用層服務分發,提供了一種高層的訪問流量控制方式,與此前傳統的L4負載均衡相比,L7負載均衡具有如下優點:

(1)能夠根據資料包內容(例如判斷資料包是影象檔案、壓縮檔案或者多媒體檔案等)把資料流量引向能夠處理相應內容的伺服器,提高系統可管理性和靈活性。 (2)能夠根據連線請求的資料型別(例如根據URL判定使用者發來的請求是和普通文字、影象等靜態文件相關,還是和ASP、CGI等動態文件相關),把其引向相應的伺服器處理,在提高系統性能的同時有助於改善安全性。 (3)能夠根據應用層載荷保證會話持續性,相對於L4伺服器負載均衡採用的基於地址的持續性保證方式更加精細。

L7負載均衡的典型組網

L7伺服器負載均衡與NAT方式L4伺服器負載均衡在實現上非常類似,其主要區別是增加了服務組的概念。服務組是一個邏輯概念,是指依據一些公共屬性將多臺伺服器劃分為不同的組。例如:可以將伺服器劃分為靜態資料儲存伺服器組和動態交換伺服器組,或者劃分為音樂伺服器組、視訊伺服器組和圖片伺服器組等,根據應用層屬性劃分的伺服器組內部各臺伺服器更容易有相近的效能和特性。

L7負載均衡的工作流程 (1)客戶端與位於伺服器叢集前端的負載均衡裝置之間建立TCP連線。 (2)客戶端將傳送到虛擬IP地址的服務請求傳送給負載均衡裝置,負載均衡裝置接收客戶端請求。 (3)負載均衡裝置通過伺服器可用性驗證、會話持續性保證、服務組匹配策略、負載均衡演算法排程等步驟,選擇出負責響應和處理該請求的真實伺服器。 (4)負載均衡裝置利用客戶端地址與真實伺服器建立TCP連線。 (5)負載均衡裝置將客戶端請求報文的目的地址重寫為真實服務囂的IP地址,並將該請求傳送給相應的伺服器。 (6)真實伺服器向負載均衡裝置響應服務。 (7)報文在通過負載均衡裝置時,源地址被還原為虛擬IP地址,再返回給客戶端。

L7伺服器負載均衡在負載均衡過程中能夠對應用層協議進行深度識別,帶來了很多更精細化均衡的可能,但它也對系統性能提出了非常高的要求,通常需要採用專用晶片以硬體電路的方式實現。同時,它需要針對每種應用層協議都配備相應的獨立的識別機制,這極大地限制了L7伺服器負載均衡的應用擴充套件性。由於HTTP協議應用廣泛且協議相對簡單,所以當前L7負載均衡技術對HTTP請求進行負載均衡的商用能力最強。

在實際應用中,L4負載均衡和L7負載均衡往往是搭配使用的,當然最好是在同一臺負載均衡裝置上兼具四層和七層功能。負載均衡裝置首先從報文中提取IP地址和埠,進行四層負載均衡,如果發現確有必要進行進一步的基於報文內容的轉發,再實施七層負載均衡操作。

2. 鏈路負載均衡

鏈路負載均衡是指通過動態演算法在多條網路鏈路中進行負載均衡

鏈路負載均衡根據業務流量的方向可以分為Outhound鏈路負載均衡Inbound鏈路負載均衡兩種情況。 (1)Outbound鏈路負載均衡主要解決的是企業內部業務系統訪問外部網際網路服務時如何在多條不同的鏈路中動態分配和負載均衡的問題; (2)Inbound鏈路負載均衡主要解決的是位於網際網路外部的使用者如何在訪同企業內部網站和業務系統時動態地在多條鏈路上平衡分配,並在一條鏈路中斷時能夠智慧地自動切換到另一條可用鏈路。

鏈路負載均衡與伺服器負載均衡之間的主要區別是承擔負載的物件不同,單就負載均衡裝置而言,其關鍵技術、部署方式等內容都具有類似之處。其中,在負載均衡排程演算法方面,鏈路負載均衡有一些特有演算法,例如就近鏈路選擇演算法、基於鏈路頻寬的排程演算法等。特別是就近鏈路選擇演算法,能夠在鏈路負載均衡過程中,實時探測鏈路的狀態,井根據探測結果選擇最優鏈路,保證流量通過最優鏈路轉發。就近鏈路選擇演算法對鏈路狀態的探測可以通過鏈路健康性檢測實現,例如通過傳送DNS報文和ICMP報文、建立TCP半開連線等方法在驗證鏈路可達性的同時獲得相關的就近鏈路計算引數。在實現中,就近鏈路計算引數主要包括:鏈路物理頻寬、鏈路成本(例如鏈路月租)、鏈路延遲時間、路由跳數等。就近鏈路選擇演算法也可以根據這些引數進行加權計算,然後根據計算結果判斷鏈路的優劣。

2.1 Outbound鏈路負載均衡

當內網和外網之間存在多條鏈路時,Outbound鏈路負載均衡可以實現在多條鏈路上分擔內網使用者訪問外網伺服器流量的功能,其典型組網如圖所示。 0utbaund鏈路負載均衡的典型組網

(1)負載均衡裝置:負責將內網到外網的流量在多條物理鏈路上分發。 (2)物理鏈路:網路伺服器提供商(ISP)提供的實際通訊鏈路。 (3)虛擬IP地址:負載均衡裝置對外提供的虛擬IP地址,用做使用者傳送報文的目的地址。

Outbound鏈路負載均衡的原理是將負載均衡裝置的虛擬IP址作為內網使用者傳送報文的目的地址使用者在將訪問虛擬IP地址的報文傳送給負載均衡裝置後,負載均衡裝置通過鏈路選擇演算法選擇出最佳的物理鏈路,並將內網訪問外網的業務流量分發到該鏈路上。 0utbaund鏈路負載均衡的工作流程 Outbound鏈路負載均衡的技術特點包括如下幾項。 (1)通過結合NAT技術進行組網,不周鏈路使用不同源IP地址,從而能夠保證往返報文均經由同一條鏈路。 (2)通過健康性檢測,可以檢測鏈路上任意節點的連通性,從而有效地保證整條路徑的可達性。 (3)通過負載均衡排程演算法的排程,可以在多條鏈路間均衡流量,例如利用基於頻寬的演算法優化頻寬利用、利用就近鏈路選擇演算法選擇最優鏈路。

2.2 Inbound鏈路負載均衡

Inbound鏈路負載均衡的主要作用是在多條鏈路上均衡排程外網使用者訪問企業內部網站和業務系統時的流量,並在一條鏈路中斷時能夠智慧地自動切換到另一條可用鏈路。 在這裡插入圖片描述 如圖所示,Inbound鏈路負載均衡的實現方案雖然與Outbound鏈路負載均衡在很多方面具有相似性,但是因為針對的是不同傳輸方向上的業務流量,因此部分功能有如下幾點區別: (1)負載均衡裝置:負責引導外網流量通過不同的物理鏈路轉發到內網,實現流量在多條物理鏈路上的分發。同時,負載均衡裝置還需要作為待解析域名的權威名稱伺服器。 (2)物理鏈路:網路伺服器提供商(ISP)提供的實際通訊鏈路。 (3)本地DNS伺服器:負責處理本地使用者傳送的DNS解析請求,將該請求轉發給作為權威名稱伺服器的負載均衡裝置。

Inbound鏈路負載均衡的原理是將負載均衡裝置作為權威名稱伺服器,用於記錄域名與內網伺服器IP地址之間的對映關係(即域名的A記錄)。 補充:一個域名會被對映為多個IP地址,每個IP地址則對應一條物理鏈路。當外網使用者通過域名方式訪問內網伺服器時,本地DNS伺服器依照遞迴原則會向負載均衡裝置請求域名解析,負載均衡裝置通過就近鏈路選擇演算法篩選、ISP選擇等步驟,選擇出最佳的物理鏈路,並將通過該鏈路與外網連線的介面IP址作為DNS域名解析結果反饋給外網使用者。相應的工作流程如圖所示。

 Inbound鏈路負載均衡的工作流程

Inbound鏈路負載均衡通過和伺服器負載均衡相配合,可以同時實現多條鏈路間的均衡和多臺伺服器間的均衡。另一種應用方式是通過動態的鏈路選擇演算法,最終實現以鏈路最優為基礎的服務囂負載均衡。