負載均衡(Load Balance)是分散式系統架構設計中必須考慮的因素之一,它通常是指,將請求/資料【均勻】分攤到多個操作單元上執行,負載均衡的關鍵在於【均勻】。
負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。
一.負載均衡原理
系統的擴充套件可分為縱向(垂直)擴充套件和橫向(水平)擴充套件。縱向擴充套件,是從單機的角度透過增加硬體處理能力,比如CPU處理能力,記憶體容量,磁碟等方面,實現伺服器處理能力的提升,不能滿足大型分散式系統(網站),大流量,高併發,海量資料的問題。因此需要採用橫向擴充套件的方式,透過新增機器來滿足大型網站服務的處理能力。比如:一臺機器不能滿足,則增加兩臺或者多臺機器,共同承擔訪問壓力。
l 應用叢集:將同一應用部署到多臺機器上,組成處理叢集,接收負載均衡裝置分發的請求,進行處理,並返回相應資料。
l 負載均衡裝置:將使用者訪問的請求,根據負載均衡演算法,分發到叢集中的一臺處理伺服器。(一種把網路請求分散到一個伺服器叢集中的可用伺服器上去的裝置)
負載均衡的作用(解決的問題):
1.解決併發壓力,提高應用處理效能(增加吞吐量,加強網路處理能力);
2.提供故障轉移,實現高可用;
3.透過新增或減少伺服器數量,提供網站伸縮性(擴充套件性);
4.安全防護;(負載均衡裝置上做一些過濾,黑白名單等處理)
二. 負載均衡分類
根據實現技術不同,可分為DNS負載均衡,HTTP負載均衡,IP負載均衡,鏈路層負載均衡等。
2.1 DNS負載均衡
最早的負載均衡技術,利用域名解析實現負載均衡,在DNS伺服器,配置多個A記錄,這些A記錄對應的伺服器構成叢集。大型網站總是部分使用DNS解析,作為第一級負載均衡。
優點
1>. 使用簡單:負載均衡工作,交給DNS伺服器處理,省掉了負載均衡伺服器維護的麻煩;
2>. 提高效能:可以支援基於地址的域名解析,解析成距離使用者最近的伺服器地址,可以加快訪問速度,改善效能;
缺點
1>. 可用性差:DNS解析是多級解析,新增/修改DNS後,解析時間較長;解析過程中,使用者訪問網站將失敗;
2>. 擴充套件性低:DNS負載均衡的控制權在域名商那裡,無法對其做更多的改善和擴充套件;
3>.SPAN>
實踐建議
將DNS作為第一級負載均衡,A記錄對應著內部負載均衡的IP地址,透過內部負載均衡將請求分發到真實的Web伺服器上。一般用於網際網路公司,複雜的業務系統不合適使用。
2.2 IP負載均衡
在網路層透過修改請求目標地址進行負載均衡。
使用者請求資料包,到達負載均衡伺服器後,負載均衡伺服器在作業系統核心程序獲取網路資料包,根據負載均衡演算法得到一臺真實伺服器地址,然後將請求目的地址修改為,獲得的真實ip地址,不需要經過使用者程序處理。
真實伺服器處理完成後,響應資料包回到負載均衡伺服器,負載均衡伺服器,再將資料包源地址修改為自身的ip地址,傳送給使用者瀏覽器。
IP負載均衡,真實物理伺服器返回給負載均衡伺服器,存在兩種方式:(1)負載均衡伺服器在修改目的ip地址的同時修改源地址。將資料包源地址設為自身盤,即源地址轉換(snat)。(2)將負載均衡伺服器同時作為真實物理伺服器叢集的閘道器伺服器。
優點:在核心程序完成資料分發,比在應用層分發效能更好;
缺點:所有請求響應都需要經過負載均衡伺服器,叢集最大吞吐量受限於負載均衡伺服器網絡卡頻寬;
2.4 鏈路層負載均衡
在通訊協議的資料鏈路層修改mac地址,進行負載均衡。
資料分發時,不修改ip地址,指修改目標mac地址,配置真實物理伺服器叢集所有機器虛擬ip和負載均衡伺服器ip地址一致,達到不修改資料包的源地址和目標地址,進行資料分發的目的。
實際處理伺服器ip和資料請求目的ip一致,不需要經過負載均衡伺服器進行地址轉換,可將響應資料包直接返回給使用者瀏覽器,避免負載均衡伺服器網絡卡頻寬成為瓶頸。也稱為直接路由模式(DR模式)。
優點:效能好;
缺點:配置複雜;
實踐建議:DR模式是目前使用最廣泛的一種負載均衡方式。
2.5混合型負載均衡
由於多個伺服器群內硬體裝置、各自的規模、提供的服務等的差異,可以考慮給每個伺服器群採用最合適的負載均衡方式,然後又在這多個伺服器群間再一次負載均衡或群集起來以一個整體向外界提供服務(即把這多個伺服器群當做一個新的伺服器群),從而達到最佳的效能。將這種方式稱之為混合型負載均衡。
此種方式有時也用於單臺均衡裝置的效能不能滿足大量連線請求的情況下。是目前大型網際網路公司,普遍使用的方式。
以上模式適合有動靜分離的場景,反向代理伺服器(叢集)可以起到快取和動態請求分發的作用,當時靜態資源快取在代理伺服器時,則直接返回到瀏覽器。如果動態頁面則請求後面的應用負載均衡(應用叢集)。
負載均衡(Load Balance)是分散式系統架構設計中必須考慮的因素之一,它通常是指,將請求/資料【均勻】分攤到多個操作單元上執行,負載均衡的關鍵在於【均勻】。
負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。
一.負載均衡原理
系統的擴充套件可分為縱向(垂直)擴充套件和橫向(水平)擴充套件。縱向擴充套件,是從單機的角度透過增加硬體處理能力,比如CPU處理能力,記憶體容量,磁碟等方面,實現伺服器處理能力的提升,不能滿足大型分散式系統(網站),大流量,高併發,海量資料的問題。因此需要採用橫向擴充套件的方式,透過新增機器來滿足大型網站服務的處理能力。比如:一臺機器不能滿足,則增加兩臺或者多臺機器,共同承擔訪問壓力。
l 應用叢集:將同一應用部署到多臺機器上,組成處理叢集,接收負載均衡裝置分發的請求,進行處理,並返回相應資料。
l 負載均衡裝置:將使用者訪問的請求,根據負載均衡演算法,分發到叢集中的一臺處理伺服器。(一種把網路請求分散到一個伺服器叢集中的可用伺服器上去的裝置)
負載均衡的作用(解決的問題):
1.解決併發壓力,提高應用處理效能(增加吞吐量,加強網路處理能力);
2.提供故障轉移,實現高可用;
3.透過新增或減少伺服器數量,提供網站伸縮性(擴充套件性);
4.安全防護;(負載均衡裝置上做一些過濾,黑白名單等處理)
二. 負載均衡分類
根據實現技術不同,可分為DNS負載均衡,HTTP負載均衡,IP負載均衡,鏈路層負載均衡等。
2.1 DNS負載均衡
最早的負載均衡技術,利用域名解析實現負載均衡,在DNS伺服器,配置多個A記錄,這些A記錄對應的伺服器構成叢集。大型網站總是部分使用DNS解析,作為第一級負載均衡。
優點
1>. 使用簡單:負載均衡工作,交給DNS伺服器處理,省掉了負載均衡伺服器維護的麻煩;
2>. 提高效能:可以支援基於地址的域名解析,解析成距離使用者最近的伺服器地址,可以加快訪問速度,改善效能;
缺點
1>. 可用性差:DNS解析是多級解析,新增/修改DNS後,解析時間較長;解析過程中,使用者訪問網站將失敗;
2>. 擴充套件性低:DNS負載均衡的控制權在域名商那裡,無法對其做更多的改善和擴充套件;
3>.SPAN>
實踐建議
將DNS作為第一級負載均衡,A記錄對應著內部負載均衡的IP地址,透過內部負載均衡將請求分發到真實的Web伺服器上。一般用於網際網路公司,複雜的業務系統不合適使用。
2.2 IP負載均衡
在網路層透過修改請求目標地址進行負載均衡。
使用者請求資料包,到達負載均衡伺服器後,負載均衡伺服器在作業系統核心程序獲取網路資料包,根據負載均衡演算法得到一臺真實伺服器地址,然後將請求目的地址修改為,獲得的真實ip地址,不需要經過使用者程序處理。
真實伺服器處理完成後,響應資料包回到負載均衡伺服器,負載均衡伺服器,再將資料包源地址修改為自身的ip地址,傳送給使用者瀏覽器。
IP負載均衡,真實物理伺服器返回給負載均衡伺服器,存在兩種方式:(1)負載均衡伺服器在修改目的ip地址的同時修改源地址。將資料包源地址設為自身盤,即源地址轉換(snat)。(2)將負載均衡伺服器同時作為真實物理伺服器叢集的閘道器伺服器。
優點:在核心程序完成資料分發,比在應用層分發效能更好;
缺點:所有請求響應都需要經過負載均衡伺服器,叢集最大吞吐量受限於負載均衡伺服器網絡卡頻寬;
2.4 鏈路層負載均衡
在通訊協議的資料鏈路層修改mac地址,進行負載均衡。
資料分發時,不修改ip地址,指修改目標mac地址,配置真實物理伺服器叢集所有機器虛擬ip和負載均衡伺服器ip地址一致,達到不修改資料包的源地址和目標地址,進行資料分發的目的。
實際處理伺服器ip和資料請求目的ip一致,不需要經過負載均衡伺服器進行地址轉換,可將響應資料包直接返回給使用者瀏覽器,避免負載均衡伺服器網絡卡頻寬成為瓶頸。也稱為直接路由模式(DR模式)。
優點:效能好;
缺點:配置複雜;
實踐建議:DR模式是目前使用最廣泛的一種負載均衡方式。
2.5混合型負載均衡
由於多個伺服器群內硬體裝置、各自的規模、提供的服務等的差異,可以考慮給每個伺服器群採用最合適的負載均衡方式,然後又在這多個伺服器群間再一次負載均衡或群集起來以一個整體向外界提供服務(即把這多個伺服器群當做一個新的伺服器群),從而達到最佳的效能。將這種方式稱之為混合型負載均衡。
此種方式有時也用於單臺均衡裝置的效能不能滿足大量連線請求的情況下。是目前大型網際網路公司,普遍使用的方式。
以上模式適合有動靜分離的場景,反向代理伺服器(叢集)可以起到快取和動態請求分發的作用,當時靜態資源快取在代理伺服器時,則直接返回到瀏覽器。如果動態頁面則請求後面的應用負載均衡(應用叢集)。