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