海量運維常用技術之 HAProxy 網站負載均衡應用
原創【51CTO原創文章】近期朋友劉鑫的網站成功上線并運營了,PV達到了億級/日的訪問量,最前端用的是HAProxy+Keepalived雙機作的負載均衡器/反向代理,整個網站非常穩定;這讓我更堅定 了HAProxy+Keepalived作為Web最前端的負載均衡器網站架構設計方案,在這里我也有一點要跟大家申明下:很多朋友擔心軟件級別的負載均衡在高并發流量沖擊下的穩定情況,事實是我們通過成功上線的許多網站發現,HAProxy作為前端的負載均衡的穩定性是非常好的,宕機的可能性微乎其微,由于HAProxy我們多用于7層負載均衡,在大流量的沖擊下,發現確實對CPU有一定消耗,這里大家用DELL 710 | 910服務器。另外,HAProxy不僅僅只能做七層負載均衡,它還可以做四層負載均衡的,由于它跟LVS一樣,僅僅只是做為負載均衡專用,所以在轉發及處理流量的效率上,肯定是優于Nginx的。現在網上LVS/Nginx的資料太多了,所以大家的關注度自然也高,其實HAProxy也是很不錯的,所以網站有負載均衡需求的朋友,不妨考慮試用下HAProxy。雙機高可用方案建議大家采用HAProxy+Keepalived。
LVS現在幾乎成了負載均衡的代名詞,其作用和功能不斷的被神化,但LVS有這么神奇嗎?前段時間負責升級的一個電子商務網站,由于業務和監控的需求,后端的每臺Web服務器上面都有十幾條靜態路由再加兩個VLAN,LVS就滿足不了需求了,而Nginx/HAProxy就沒什么問題,而作為負載轉發器,HAproxy的性能是優行NGINX,另外大家都知道,由于ARP抑制的原因,LVS的部署和維護并不是太簡單,而HAProxy/Nginx就不存在這些問題。由于LVS本身還有些缺點,淘寶的技術一直在完善它,2012年有興參加了淘寶的技術嘉年華,聽取了吳佳明(淘寶普空)先生關于對LVS的改進講座,其中提到了LVS的FULLNAT模式,它是一種新的轉發模式,實現LVS后端的真實物理服務器間跨VLAN通訊,并且IN/OUT流量都經過LVS,另外,新的FULLNAT在防御DDOS攻擊方面也有很大改進,有興趣的朋友可以關注吳佳明先生的PPT。
再拿另外一個工作實例來說下,另外一個廣告類型的網站,我負責改進其整體架構設計,由于要保證整個網站的高可用,公司老總授意用F5來做為LB,但經過仔細分析,我發現網站初期流量并不是特別大,日PV不過百萬,而且網站主要是白天負責開放,監控人員也很多(運維和運營人員白天基本都在),所以就用DNS輪詢的方式來處理了,而且事后發現效果也比較理想,達到了前期節約成本的目的,而且后期規劃中我也堅定的選擇了HAProxy,放棄F5和LVS。
現在HAProxy的算法也非常多,并不比專業的F5/LVS算法少,常用的算法有如下8種:
- roundrobin,表示簡單的輪詢,建議關注;
- static-rr,表示根據權重,建議關注;
- leastconn,表示最少連接者先處理,建議關注;
- source,表示根據請求源IP,跟Nginx的ip_hash算法相似,建議關注;
- uri,表示根據請求的URI;
- url_param,表示根據請求的URl參數;
- hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
- rdp-cookie(name),表示根據據cookie(name)來鎖定并哈希每一次TCP請求。
現在新版的HAProxy也越來越強了,開始支持https了,建議關注HAProxy官方網站。
撰寫此文的目的是了推廣HAProxy的應用,做技術的人不應該人云亦云,道聽途說,應該以自己的線上環境和數據來說話,來做為自己的論理根據,也歡迎大家通過我的博客和微博地址來一起交流HAProxy在平時線上的應用。
個人博客:http://andrewyu.blog.51cto.com
微博地址:http://weibo.com/yuhongchun027
【聲明】本文作者:余洪春(撫琴煮酒),英文名Andrew.Yu。在51CTO系統頻道首發,轉載請注明作者和出處。