1. 程式人生 > >從系統架構的角度來看開源和商業負載均衡

從系統架構的角度來看開源和商業負載均衡

對於絕大多數的網際網路企業來說,負載均衡已經成為其系統網路架構中不可或缺的組成部分。負載均衡技術是終端使用者與業務系統之間溝通的橋樑,也是實現系統處理能力快速擴充套件的最佳技術。實現負載均衡的方式很多,有很多開源的負載均衡軟體,如:LVS、HAProxy、nginx等,也有很多公司推出獨立的負載均衡產品,如:F5的BIG-IP,A10的Thunder,Citrix的NetScaler等等。

開源軟體的獲取容易,投資成本比較低。對於國內絕大多數的初創網際網路企業來說,儘管其配置管理比較複雜,仍然成為實現應用系統負載均衡功能的首選。隨著企業業務的快速發展和增長,網站的訪問量和流量也會快速增長,這時候,開源的負載均衡軟體的弱點就暴露出來了。

LVS處理效能較強,但只能做簡單的四層處理,並且配置和實施比較複雜,除了要配置LVS之外,應用伺服器本身也要做相應的配置。如果後端的應用的種類比較多,會消耗大量的公網IP地址。這對於公網IP地址都不太富裕的中小企業來說,LVS基本成為不可能選擇的方案。

HAProxy和nginx類似,能夠做Web應用的七層處理,這就能夠解決多個Web應用對映到同一個公網IP的需求,而且能夠做比較複雜的邏輯處理。但是,受限於Linux本身,其處理效能又是其軟肋。

儘管這類開源的負載均衡軟體部署成本比較低,當企業的網站訪問量達到一定規模後,效能處理不足的弊端會凸顯出來。這時候,企業會考慮採用商業的負載均衡產品來處理不斷增長的Web流量。

相較於開源軟體,商業的負載均衡產品投資成本比較高。對於初創企業來說,並不是特別好的選擇,但是,為了實現業務的快速增長,支撐不斷增長的業務流量,商業負載均衡卻成為企業不得不考慮的選擇。

由於採用了專用的硬體和系統設計,商業負載均衡從效能、功能、安全性、可靠性上,都比開源負載均衡軟體要強大很多。如A10Networks的Thunder6430單機處理能力高達160Gbps,而體積卻只有1U大小。但如果所有的流量都通過商業負載均衡產品處理,投資成本也是網際網路企業不得不慎重考慮的因素。

實際上,商業負載均衡和開源的負載均衡軟體,在網站的整體架構中並不是對立的兩面。充分發揮各自的專長,不僅能夠降低網站的投資和運維成本,也能夠實現網站效能的高擴充套件。

舉一個例子,1號店的網路系統架構中就充分利用了商業和開源負載均衡各自的特點和優勢,從架構上進行整合,不僅提高了整體網站的效能擴充套件能力,也大大降低了原有負載均衡的管理複雜度。從開源負載均衡軟體到商業的負載均衡裝置,再到開源和商業負載均衡的融合,1號店摸索出了一套自己的方式。

和大多數的網際網路公司一樣,在發展初期,為了降低整個網站的投資成本,整個網路中大量部署了HAProxy。隨著公司業務的快速發展,HAProxy成為網路架構中的瓶頸。單臺HAProxy的處理能力不足,導致關鍵業務時常出現問題。如果部署多套HAProxy,網路出口又沒有足夠的公網IP地址。當網站進行促銷或遭受到攻擊時,HAProxy會成為第一個趴下的節點。

在這種情況下,1號店考察了A10Networks的負載均衡產品,並在現網進行了一些測試。測試結果發現,商業的負載均衡的確有不俗的表現:

效能強大,原來HAProxy頂不住的流量,在商業負載均衡上能夠極為輕鬆的應對。

管理和配置簡單,直觀的命令列和GUI頁面展示,大大降低了原有的管理難度。

一些針對Web應用的高階功能,如:壓縮、SSL解除安裝、連線複用等,有效的降低了後端伺服器的負載。

安全防護功能能夠輕鬆有效的應對經常發生的DDoS攻擊。

由於專業的負載均衡產品具有諸多的優點,運維人員很快將所有應用的負載均衡功能都遷移到A10Networks的負載均衡裝置上。利用A10負載均衡具有的可自定義指令碼功能,運維人員又寫了若干指令碼,解決諸如URL跳轉、URL變換、攻擊源阻止等等問題。

然而,隨著業務的發展,麻煩事又出現了。

原來的運維人員離職了,新接手的工程師對A10Networks負載均衡的配置不太熟悉。再加上歷史上為了處理一些特殊問題新增的指令碼、配置,導致運維工程師不敢對原有的配置進行任何調整。因此,1號店決定對負載均衡的架構重新進行調整。新的架構中,重新引入了HAProxy,並最大限度的發揮商業負載均衡和開源負載均衡各自的特點。調整主要包括以下幾個方面:

商業負載均衡效能出色,部署整個網路出口,負責處理來自網際網路客戶端的訪問請求。主要實現基於域名的轉發、防DDoS攻擊、SSL解除安裝和高效能的請求轉發。

HAProxy成本低廉,用於內部應用之間的API呼叫

所有複雜的URL變換、目錄改寫、快取、壓縮等工作,交由HAProxy或nginx來處理。如果單臺HAProxy或nginx的處理效能不足,則部署多臺,前端通過A10的負載均衡實現HAProxy的負載均衡。

利用A10負載均衡的API功能,建立基於應用業務的效能監控和配置管理平臺,使負載均衡的配置管理模組化、流程化。

經過調整之後,整個系統架構中,負載均衡的定位更加清晰,使用方式相對固化,也更加簡單。運維工程師對負載均衡的管理複雜度也大大降低,出現問題後的故障定位也變得更加簡單。新的架構調整,充分發揮了商業和開源負載均衡各自的優勢,在降低總體投資成本的同時,也提高了原有系統的處理能力和擴充套件的靈活性。

來源:運維幫