負載均衡的實現,常見的硬件有比較昂貴的NetScaler、F五、Radware和Array等商用的負載均衡器,它的優勢就是有專業的維護團隊來對這些服務進行維護、缺點就是花銷太大,因此對於規模較小的網絡服務來講暫時尚未須要使用;另一種就是相似於LVS/HAProxy、Nginx的基於Linux的開源免費的負載均衡軟件策略,這些都是經過軟件級別來實現,因此費用很是低廉,因此我個也比較推薦你們採用第二種方案來實施本身網站的負載均衡需求。web
LVS:使用集羣技術和Linux操做系統實現一個高性能、高可用的服務器,它具備很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感謝章文嵩博士爲咱們提供如此強大實用的開源軟件。算法
LVS的特色是:
一、抗負載能力強、是工做在網絡4層之上僅做分發之用,沒有流量的產生,這個特色也決定了它在負載均衡軟件裏的性能最強的;
二、配置性比較低,這是一個缺點也是一個優勢,由於沒有可太多配置的東西,因此並不須要太多接觸,大大減小了人爲出錯的概率;
三、工做穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat,不過咱們在項目實施中用得最多的仍是LVS/DR+Keepalived;
四、無流量,保證了均衡器IO的性能不會收到大流量的影響;
五、應用範圍比較廣,能夠對全部應用作負載均衡;
六、軟件自己不支持正則處理,不能作動靜分離,這個就比較遺憾了;其實如今許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優點所在。
七、若是是網站應用比較龐大的話,實施LVS/DR+Keepalived起來就比較複雜了,特別後面有Windows Server應用的機器的話,若是實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
Nginx的特色是:
一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名、目錄結構,它的正則規則比HAProxy更爲強大和靈活,這也是許多朋友喜歡它的緣由之一;
二、Nginx對網絡的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點所在;
三、Nginx安裝和配置比較簡單,測試起來比較方便;
四、也能夠承擔高的負載壓力且穩定,通常能支撐超過幾萬次的併發量;
五、Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點,不過其中缺點就是不支持url來檢測;
六、Nginx僅能支持http和Email,這樣就在適用範圍上面小不少,這個它的弱勢;
七、Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP如今也是很是流行的web架構,大有和之前最流行的LAMP架構分庭抗爭之勢,在高流量的環境中也有很好的效果
八、Nginx如今做爲Web反向加速緩存愈來愈成熟了,不少朋友都已在生產環境下投入生產了,並且反映效果不錯,速度比傳統的Squid服務器更快,有興趣的朋友能夠考慮用其做爲反向代理加速器。
HAProxy的特色是:
一、HAProxy是支持虛擬主機的,之前有朋友說這個不支持虛擬主機,我這裏特此更正一下。
二、可以補充Nginx的一些缺點好比Session的保持,Cookie的引導等工做
三、支持url檢測後端的服務器出問題的檢測會有很好的幫助。
四、它跟LVS同樣,自己僅僅就只是一款負載均衡軟件;單純從效率上來說HAProxy更會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的。
五、HAProxy能夠對Mysql讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,不過在後端的MySQL slaves數量超過10臺時性能不如LVS,因此我向你們推薦LVS+Keepalived。
六、HAProxy的算法如今也愈來愈多了,具體有以下8種:
①roundrobin,表示簡單的輪詢,這個很少說,這個是負載均衡基本都具有的;
②static-rr,表示根據權重,建議關注;
③leastconn,表示最少鏈接者先處理,建議關注;
④source,表示根據請求源IP,這個跟Nginx的IP_hash機制相似,咱們用其做爲解決session問題的一種方法,建議關注;
⑤ri,表示根據請求的URI;
⑥rl_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name;
⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。sql
如今網站發展的趨勢對網絡負載均衡的使用是隨着網站規模的提高根據不一樣的階段來使用不一樣的技術:數據庫
第一階段:利用Nginx或者HAProxy進行單點的負載均衡,這一階段服務器規模剛脫離開單服務器、單數據庫的模式,須要必定的負載均衡,可是 仍然規模較小沒有專業的維護團隊來進行維護,也沒有須要進行大規模的網站部署。這樣利用Nginx或者HAproxy就是第一選擇,此時這些東西上手快, 配置容易,在七層之上利用HTTP協議就能夠。這時是第一選擇後端
第二階段:隨着網絡服務進一步擴大,這時單點的Nginx已經不能知足,這時使用LVS或者商用F5就是首要選擇,Nginx此時就做爲LVS或者 F5的節點來使用,具體LVS或者F5的是選擇是根據公司規模,人才以及資金能力來選擇的,這裏也不作詳談,可是通常來講這階段相關人才跟不上業務的提 升,因此購買商業負載均衡已經成爲了必經之路。緩存
第三階段:這時網絡服務已經成爲主流產品,此時隨着公司知名度也進一步擴展,相關人才的能力以及數量也隨之提高,這時不管從開發適合自身產品的定製,以及下降成原本講開源的LVS,已經成爲首選,這時LVS會成爲主流。服務器
最終造成比較理想的狀態爲:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。cookie