因地制宜 解讀Linux集群負載均衡
原創(chuàng)【51CTO.com 獨家特稿】有些公司是做宣傳網(wǎng)站或資訊類網(wǎng)站的,服務器均置于國內(nèi),他們對集群這塊了解的并不深,而且要求也很簡單,只要求1+2架構(gòu)。在初期我使用的是Nginx作為負載均衡器,后期發(fā)現(xiàn)HAProxy更加穩(wěn)定,而且它自帶強大的監(jiān)控頁面功能,所以我全部換成了HAproxy作為最前端的負載均衡器了;由于我越來越喜歡它了,在這里請允許我單獨介紹其優(yōu)點。
HAProxy是一款提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理軟件,HAProxy是完全免費的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP應用的代理解決方案。
HAProxy最主要的特點是性能優(yōu)越,HAProxy特別適用于那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。 HAProxy完全可以支持數(shù)以萬計的并發(fā)連接。并且HAProxy的運行模式使得它可以很簡單安全的整合進您當前的架構(gòu)中,同時可以保護你的web服務器不被暴露到網(wǎng)絡上(即通過防火墻80端口映射的方法)。
更重要的是,HAProxy也是一款優(yōu)秀的負載均衡軟件,其優(yōu)點如:
(1)免費開源,穩(wěn)定性也是非常好,這個可通過我做的一些小項目可以看出來,單Haproxy也跑得不錯,穩(wěn)定性可以與硬件級的F5相媲美;
(2)根據(jù)官方文檔,HAProxy可以跑滿10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),這個數(shù)值作為軟件級負載均衡器是相當驚人的;
(3)HAProxy 支持連接拒絕 : 因為維護一個連接的打開的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。 這個已經(jīng)為一個陷于小型DDoS攻擊的網(wǎng)站開發(fā)了而且已經(jīng)拯救了很多站點,這個優(yōu)點也是其它負載均衡器沒有的。
(4)HAProxy 支持全透明代理(已具備硬件防火墻的典型特點): 可以用客戶端IP地址或者任何其他地址來連接后端服務器. 這個特性僅在Linux 2.4/2.6內(nèi)核打了cttproxy補丁后才可以使用. 這個特性也使得為某特殊服務器處理部分流量同時又不修改服務器的地址成為可能。
(5)HAProxy現(xiàn)多于線上的Mysql集群環(huán)境,我們常用于它作為MySQL(讀)負載均衡;
(6)自帶強大的監(jiān)控服務器狀態(tài)的頁面,實際環(huán)境中我們結(jié)合Nagios進行郵件或短信報警,這個也是我非常喜歡它的原因之一;
(7)HAProxy支持虛擬主機,許多朋友說它不支持虛擬主機是錯誤的,通過測試我們知道,HAProxy是支持虛擬主機的。
另外,提到Nginx作負載均衡器,這個由于我自己也比較喜歡它的強大的正則處理功能和其強悍的抗并發(fā)能力,所以我在自己的博客及51cto.com上推行它的Nginx+Keepalived,并成功用此架構(gòu)幫許多客戶實施他們的網(wǎng)站,Nginx對網(wǎng)絡的依賴性非常小,理論上只要ping得通它就就能實現(xiàn)它的負載均衡能力,這一點跟LVS不一樣。我去年在一家公司準備實施LVS+Keepalived時,發(fā)現(xiàn)它的網(wǎng)絡環(huán)境太復雜了,每臺機器都是7、8靜態(tài)路由,網(wǎng)絡中還有二個網(wǎng)關,LVS實現(xiàn)不了轉(zhuǎn)發(fā)功能;最后還是換成了Nginx+Keepalived。
現(xiàn)在我覺得Nginx作為最前端的負載均衡并不是一個非常理想的選擇,一個大型的網(wǎng)站或系統(tǒng)的話,可以存在多級代理,比如我們最前端可以用F5或LVS來作為網(wǎng)站或系統(tǒng)的入口,讓它們來頂外部的高并發(fā)流量,而Nginx由于其強大的正則處理能力,可以作為中層代理,一來可以作為F5/LVS的補充,節(jié)約大量成本,這種做法也是張宴推薦的,拓樸如下圖:
大家可以看一下基于架構(gòu)的好處有:
一、不需要擔心單Nginx負載均衡器crash的問題,隨便怎么掛都可以;
二、Nginx作為F5的補充,利用其強大的upstream模塊和正則,可以輕松實現(xiàn)動靜分離;
三、壓縮可以通過nginx做,這樣,后臺應用服務器不管是apache、resin、lighttpd甚至iis或其他古怪服務器,都不用考慮壓縮的功能問題。
四、方便的運維管理,在各種情況下可以靈活制訂方案;
五、即使沒有squid群組,Nginx現(xiàn)在可以做為優(yōu)秀的反向代理加速軟件了。
我現(xiàn)在做的項目網(wǎng)站,原理跟上面類似,只不過用的是LVS代替了F5,這個更節(jié)約資金了,拓樸圖如下:
現(xiàn)在的負載均衡均衡技術是多樣化的,我們應該根據(jù)其特點做到因地制宜,取長補短,最大限度的發(fā)揮它們的優(yōu)點,將我們的網(wǎng)站或系統(tǒng)架構(gòu)調(diào)優(yōu)到一個新的高度。
【51CTO.com獨家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處及出處!】