1. 程式人生 > >聊聊雲端計算:為什麼構建網站時常會用到負載均衡

聊聊雲端計算:為什麼構建網站時常會用到負載均衡

對於使用者數較多、負載較大的網站,我們通常都會使用負載均衡(LB:Load Balance)來增加伺服器的承載能力。負載均衡是雲端計算的一個基本服務元件,通常都會搭配雲主機來構建雲服務,比如阿里雲的SLB(Server Load Balancer)、騰訊雲的CLB(Cloud Load Balancer)。

聊聊雲端計算:為什麼構建網站時常會用到負載均衡

我自己是一名大資料架構師,每天都會直播分享免費公開課,大家可以加群參加。以及我自己整理了一套最新的大資料學習系統教程,包括Hadoop,資料探勘,資料分析。送給正在學習大資料的小夥伴!這裡是大資料學習者聚集地,歡迎初學和進階中的小夥伴!

加QQ群:684290783(招募中)

負載均衡可以將客戶端請求分攤到多個操作單元上進行處理

硬體負載均衡

負載均衡有很多種不同的實現方式,總的來說,可以分為硬體負載均衡與軟體負載均衡兩大類。

硬體負載均衡有很多裝置商可以提供解決方案,比如NetScaler、F5、Array Networks等。硬體負載均衡的優勢比較明顯:有專業團隊進行維護、效能好、且穩定可靠。

聊聊雲端計算:為什麼構建網站時常會用到負載均衡

F5負載均衡器

但硬體負載均衡解決方案也有缺點,比如裝置和服務費用昂貴,靈活性差,功能和容量都難以擴充套件。軟體負載均衡相對來說,靈活性強,擴充套件起來更容易,所以軟體負載均衡解決方案越來越受到青睞。

DNS負載均衡

軟體負載均衡最早通過DNS來實現,即一個域名對應多個IP地址。在應答DNS查詢時,DNS伺服器對每個查詢將以DNS檔案中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的伺服器,從而達到負載均衡的目的。

DNS負載均衡的解決方案原理比較簡單,不過缺點也比較明顯:

  • 第一,不能夠按照Web伺服器的處理能力分配負載;

  • 第二,DNS負載均衡技術沒有考慮容錯,即使某個伺服器不可用,DNS仍然會把請求轉發過去;

  • 第三,一旦發現某個伺服器出現故障,即使及時修改了DNS設定,但還是要等DNS重新整理時間到了才能生效。

開源軟體解決方案

後來出現了開源軟體負載均衡的解決方案,最主流的就是LVS和Nginx。基於開源軟體的負載均衡打破了硬體LB的壟斷,降低了負載均衡的實施成本。

(1)LVS = Linux Virtual Server

LVS虛擬伺服器,在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體專案之一。

LVS是把負載均衡的功能做到了Linux核心裡面。LVS叢集採用IP負載均衡技術和基於內容請求分發技術,將一組伺服器構成一個高效能的、高可用的虛擬伺服器。

整個伺服器叢集的結構對客戶是透明的,客戶訪問集群系統提供的網路服務就像訪問一臺高效能、高可用的伺服器一樣,而且無需修改客戶端和伺服器端的程式。

(2)Nginx

Nginx是一個輕量級的Web伺服器,同時也是一個反向代理伺服器,可以利用其反向代理的功能做負載均衡。Nginx與LVS相比主要有以下幾點不同:

  • 與LVS在層四進行負載均衡不同,Nginx是在層7進行,可以針對Http應用進行分流;

  • 轉發策略也更靈活,比如可以針對域名或目錄結構進行轉發;

  • Nginx對網路的依賴比較小,理論上只要Ping得通,網頁訪問正常就能連通,而LVS比較依賴網路環境。

總的來說,Nginx的應用場合要更多一些,LVS則更適合節點比較多的大型系統。

基於雲的負載均衡(Cloud Load Balance)

除了在雲主機上自己利用LVS或Nginx搭建負載均衡伺服器,阿里雲、騰訊雲等雲端計算服務商,均提供了專門的負載均衡服務,配置容易。這些服務商的負載均衡解決方案,往往是結合了層7與層4的綜合負載均衡方案,而且還需要考慮VPC網路與物理網路的不同情況(關於VPC的概念,可以參考之前的文章,《聊聊雲端計算:VPC與VPN有什麼關係》)。具體實現方案比較複雜,這裡就不過多介紹了,反正會用就行。

聊聊雲端計算:為什麼構建網站時常會用到負載均衡

基於負載均衡實現的典型的雲服務架構

上圖就是一個基於負載均衡的典型的雲服務架構。在我們搭建網際網路應用時,可能需要考慮伺服器的承載能力,或者需要保障伺服器可用性,避免出現單點故障,使用負載均衡就是一個基本操作,掌握了LB,我們的服務就更加穩定了。