負載均衡(Load Balance,簡稱LB)是一種服務器或網絡設備的集羣技術。負載均衡將特定的業務(網絡服務、網絡流量等)分擔給多個服務器或網絡設備,從而提升了業 務處理能力,保證了業務的高可用性。負載均衡基本概念有:實服務、實服務組、虛服務、調度算法、持續性等,其經常使用應用場景主要是服務器負載均衡,鏈路負載 均衡。php
服務器負載均衡根據LB設備處理到的報文層次,分爲四層服務器負載均衡和七層負載均衡,四層處理到IP包的IP頭,不解析報文四層以上載荷(L4 SLB);七層處理到報文載荷部分,好比HTTP,RTSP,SIP報文頭,有時也包括報文內容部分(L7 SLB)。前端
客戶端將請求發送給服務器羣前端的負載均衡設備,負載均衡設備上的虛服務接收客戶端請求,經過調度算法,選擇真實服務器,再經過網絡地址轉換,用真 實服務器地址重寫請求報文的目標地址後,將請求發送給選定的真實服務器;真實服務器的響應報文經過負載均衡設備時,報文的源地址被還原爲虛服務的 VSIP,再返回給客戶,完成整個負載調度過程。報文交互流程以下:算法
報文交互流程說明:
(1)Host發送服務請求報文,源IP爲Host IP、目的IP爲VSIP
(2)LB Device接收到請求報文後,藉助調度算法計算出應該將請求分發給哪臺Server
(3)LB Device使用DNAT技術分發報文,源IP爲Host IP、目的IP爲Server IP
(4)Server接收並處理請求報文,返回響應報文,源IP爲Server IP、目的IP爲Host IP
(5)LB Device接收響應報文,轉換源IP後轉發,源IP爲VSIP、目的IP爲Host IP後端
七層負載均衡和四層負載均衡相比,只是進行負載均衡的依據不一樣,而選擇肯定的實服務器後,所作的處理基本相同,下面以HTTP應用的負載均衡爲例來講明。緩存
因爲在TCP握手階段,沒法得到HTTP真正的請求內容,所以也就沒法將客戶的TCP握手報文直接轉發給服務器, 必須由負載均衡設備先和客戶完成TCP握手,等收到足夠的七層內容後,再選擇服務器,由負載均衡設備和所選服務器創建TCP鏈接。安全
七層負載均衡組網和四層負載均衡組網有一個顯著的區別:四層負載均衡每一個虛服務對應一個實服務組,實服務組內的全部實服務器提供相同的服務;七層負 載均衡每一個虛服務對應多個實服務組,每組實服務器提供相同的服務。根據報文內容選擇對應的實服務組,而後根據實服務組調度算法選擇某一個實服務器。服務器
上圖中描述了基於HTTP的URI目錄信息進行的七層負載均衡部署,報文交互流程圖以下:網絡
報文交互流程說明:
(1)-(3):Client和LB創建TCP鏈接;
(4):Client發送HTTP請求,目的IP爲虛IP;
(5):LB設備分析報文,根據調度算法選擇實服務器,注意此時會緩存該報文;
(6):LB設備向實服務器發Syn報文,序列號爲Client的Syn報文序列號
(7):Server發送Syn/Ack報文,目的IP爲Client;
(8):LB接收Server的Syn/Ack報文後,迴應ACK報文
(9):修改步驟(5)中緩存的報文目的IP和TCP序列號,而後發給Server;
(10):Server發送響應報文到LB;
(11):LB修改步驟(9)中的報文的源地址和TCP序列號後轉發給Client。併發
在企業網、運營商鏈路出口須要部署LB設備以優化鏈路選擇,提高訪問體驗,鏈路負載均衡按照流量發起方向分爲Inbound負載均衡和Outbound負載均衡負載均衡
Inbound負載均衡技術是DNS智能解析的一種,外網用戶經過域名訪問內部服務器時,Local DNS的地址解析請求到達LB設備,LB根據對Local DNS的就近性探測結果響應一個最優的IP地址,外網用戶根據這個最優的IP響應進行對內部服務器的訪問。
流程簡述以下:
(1)外部用戶進行資源訪問前先進行DNS解析,向其本地DNS服務器發送DNS請求。
(2)本地DNS服務器將DNS請求的源IP地址替換爲本身的IP地址,並轉發給域名對應的權威服務器——LB device。
(3)LB device根據DNS請求的域名和配置的Inbound鏈路負載均衡規則進行域名解析。
(4)LB device按照域名解析的結果,將DNS應答發送給本地DNS服務器。
(5)本地DNS服務器將解析結果轉發給用戶。
(6)用戶使用解析結果選擇的鏈路,直接對LB device進行資源訪問。
內網用戶訪問Internet上其餘服務器。 Outbound鏈路負載均衡中VSIP爲內網用戶發送報文的目的網段。用戶將訪問VSIP的報文發 送到負載均衡設備後,負載均衡設備依次根據策略、持續性功能、就近性算法、調度算法選擇最佳的鏈路,並將內網訪問外網的業務流量分發到該鏈路。
Outbound負載均衡報文交互流程以下:
Outbound負載均衡報文交互流程說明:
(1)LB Device接收內網用戶流量 -
(2)LB Device依次根據策略、持續性功能、就近性算法、調度算法進行鏈路選擇 在Outbound鏈路負載均衡組網中,一般使用就近性算法或帶寬調度算法實現流量分發
(3)LB device按照鏈路選擇的結果將流量轉發給選定的鏈路 -
(4)LB Device接收外網用戶流量 -
(5)LB Device將流量轉發給內網用戶
鏈接複用功能經過使用鏈接池技術,能夠將前端大量的客戶的HTTP請求複用到後端與服務器創建的少許的TCP長鏈接上,大大減少服務器的性能負載,減少與服務器之間新建TCP鏈接所帶來的延時,並最大限度減小後端服務器的併發鏈接數,下降服務器的資源佔用。
上圖給出了TCP鏈接複用的簡單過程描述。由Client端發送的Req1/ Req2/ Req3三個HTTP請求,通過LB設備後,複用了LB設備和Server端已經創建好的鏈接,將Client端的三個請求經過兩個TCP鏈接發送給了服務器端。
爲了不明文傳輸出現的安全問題,對於敏感信息,通常採用SSL協議,如HTTPS,對HTTP協議進行加密,以保證整個HTTP傳輸過程的安全 性。SSL是須要耗費大量CPU資源的一種安全技術,若是由後端的服務器來承擔,則會消耗很大的處理能力。應用交付設備爲了提高用戶的體驗,分擔服務器的 處理壓力,將SSL加解密集中在自身的處理上,相對於服務器來講LB能提供更高的SSL處理性能,還可以簡化對證書的管理,減小平常管理的工做量,LB的 該功能又稱爲SSL卸載。
下圖中Client端發送給Server的全部的HTTPS流量都被LB設備終結,LB設備將SSL終結後,與Server之間可採用HTTP或者 弱加密的HTTPS進行通信。LB設備承擔了SSL的卸載工做,從而極大的減少了服務器端對SSL處理的壓力,將服務器的處理能力釋放出來,更加專一於處 理服務器自己承擔的業務邏輯。
SSL卸載的處理流程以下:
(1)客戶端向服務器端發送SSL握手請求。
(2)LB設備做爲中間的卸載設備,代替服務器端和客戶端交互,完成SSL握手過程。
(3)客戶端發送SSL加密後的請求數據。
(4)LB設備解密數據。
(5)LB設備將解密後的明文發送給Server。
(6)服務器返回給LB設備迴應報文。
(7)LB設備將返回的應答報文加密。
(8)LB設備將加密後的應答報文傳給客戶端。
負載均衡技術無論應用於用戶訪問服務器資源,仍是應用於多鏈路出口,均大大提升了對資源的高效利用,顯著下降了用戶的網絡佈署成本,提高了用戶的網絡使用體驗。隨着雲計算的發展,負載均衡的技術實現還將與雲計算相結合,在虛擬化和NFV軟件定義網關等方面持續發展。
轉載自SDNLAB