負載均衡技術(一)———負載均衡技術介紹


此文已由作者張小剛授權網易雲社區發布。

歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。

 

本文主要是對負載均衡技術進行一個簡單的介紹,並結合在實際生產環境中負載均衡技術的應用情況,讓大家對負載均衡技術,以及這一技術在公司的應用情況有一個簡單的了解。

 

什么是負載均衡技術

 

負載均衡技術,是現代計算機領域的基礎技術之一,其基本原理是通過運行在前面的負載均衡服務器,根據執行的負載均衡算法,將流量分配到后端服務器上,從而提高整個系統的擴展能力,實現服務的並行擴展,同時,負載均衡技術還可以起到對外網屏蔽內網服務器,從而提高系統的可用性。

 

常用的負載均衡方式有硬件負載均衡和軟件負載均衡兩種:

 

  • 硬件負載均衡:指的是采用專門負載均衡硬件設備來進行負載均衡操作,由於由專門的硬件設備進行,因此有很強的性能,但缺點是價格昂貴,擴展,升級成本較高,不利於進行二次開發。

  • 軟件負載均衡:就是用軟件來執行負載均衡操作,雖然性能比不上專門的硬件,但價格相對低廉(不需要專用的硬件),易擴展,便於進行二次開發,現在已經被大量公司采用,用於實際的生產服務環境中。本文的重點就是對於軟件負載均衡服務的介紹。

 

軟件負載均衡服務介紹

 

軟件負載均衡服務一般分為兩種:四層負載均衡和七層負載均衡,四層和七層指的是負載均衡服務運行的位置,分別對應ISO網絡協議中的傳輸層和網絡層。在實際應用中,四層負載均衡一般就是位於層的TCP協議(或者SSL協議)的負載均衡,而七層負載均衡就是HTTP協議(或者HTTPS)協議的負載均衡。

 

除此之外,還有針對ICMP,POP3郵件協議,針對數據庫協議的負載均衡等,但應用最為廣泛的,還是基於HTTP和TCP協議負載均衡,這也是由於實際應用環境決定的:HTTP協議是現在應用最為廣泛的應用層協議,也是基於“頁面”的老一代互聯網的基礎,得到了極為廣泛的應用,可以說,HTTP協議就是互聯網技術最重要的協議。而TCP協議作為傳輸層的基礎協議,可以直接兼容應用層的各種協議。在實際的應用場景中,對於web服務,直接使用HTTP負載均衡,而對於需要長連接的,或者其他非HTTP協議的服務,如mysql,redis等,則統一使用TCP負載均衡。

 

常見的負載均衡服務有Apache,LVS,Nginx,Haproxy等:

 

  • 按照類型看,Apache,Nginx屬於七層負載均衡,LVS屬於四層負載均衡,Haproxy同時支持四層和七層負載均衡。

  • 按照功能看,LVS,Haproxy是專門的負載均衡服務器,Apache和Nginx除了作為負載均衡服務器外,還可以作為獨立的web服務器,直接提供web服務。

 

負載均衡服務在生產環境中的應用

 

在一個系統中,負載均衡服務往往是運行在系統最前面的應用,起着承載系統流量,請求轉發,負載均衡的作用,下圖是公司中常見的兩種負載均衡服務的形式:

 

LVS作為入口的模式

 

在這種模式下,流量通過外層的LVS做四層負載均衡,然后經過nginx進行七層負載均衡,再轉發給后端服務,后端可以根據需要直接接應用服務器或者在繼續對接負載均衡服務,具體架構如下圖所示:

 

Alt pic

 

上圖是現在杭研大部分負載均衡服務的應用形式,即通過LVS集群的DR模式將流量分發到公用的Nginx集群,然后對接給后端用戶。

 

場景分析

 

這種工作模式是針對一般的web應用設計的,LVS的單臂模式可以處理大量流量,而工作與后端的Nginx集群,可以通過限流等方式來防止DDos攻擊,而通過共享IP,可以減少對外網IP資源的使用,而Nginx 的熱加載功能可以在不更改LVS配置的情況下添加后端的用戶服務器。

 

Haproxy作為入口的模式

 

這種模式是通過Haproxy進行四層負載均衡,后面對接web服務器或者其他負載均衡服務,架構如下圖所示:

 

Alt pic

 

場景分析

 

這種場景主要是針對兩種情況:

 

  • 一種是當有大流量上傳需求的時候(如網易相冊),由於Nginx在處理Post請求的時候會寫磁盤,當有大量上傳請求的時候可能會造成磁盤寫滿從而請求失敗的情況,因此在處理有大並發,大流量上傳的時候,采用的是使用Haproxy集群,工作在七層負載均衡默認,用來處理用戶的上傳請求。

  • 第二種是直接使用四層負載均衡,由於LVS的DR模式有網絡的限制(必須在同一個二層),而且需要修改應用服務器的內容(綁定VIP,設定返回路由,關閉部分ARP響應)。而實際用戶的服務器大部分不滿足這兩個條件,因此需要采用無侵入(基於FULL NAT模式),且無網絡要求(基於四層協議)的Haproxy集群來滿足這一需求。但是由於Haproxy的負載能力不如LVS(單進程模型,工作在用戶模式,雙向流量),因此會根據需要搭建多個Hapoxy集群。

  • 在上面兩個不同情況下,Haproxy工作的模式不同。在第一種情況,Haproxy工作在七層負載均衡模式下,負責HTTP請求轉發。而第二種模式,Haproxy工作在四層負載均衡模式,相當於流量轉發的左右,一般用來處理不需要獲取原始IP的情況或者流量不是很大的情況。

 

總結

 

本文主要介紹了負載均衡服務的基礎知識和公司中負載均衡服務的應用情況,在下一篇文章中,會對常用的負載均衡服務器:LVS,Haproxy,Nginx,Apache進行介紹。

 

免費體驗雲安全(易盾)內容安全、驗證碼等服務

更多網易技術、產品、運營經驗分享請點擊

 

相關文章:
【推薦】 “網易有錢”sketch使用分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM