負載均衡集羣,沒有想象中那麼高大上,只是把負載均衡技術用到了集羣上。那麼什麼是集羣,什麼是負載均衡呢?linux
集羣,就是將多臺服務器經過集羣技術捆版在一塊兒,當用戶進行數據交互時,集羣就像一個獨立的服務器。這樣作能夠大大提升了服務器集羣的總體的性能和處理用戶請求的效率。同時,能夠避免單點故障致使數據丟失。並且任何一臺服務器宕機了,集羣還能正常的運行,不會影響到公司的業務。而且集羣系統的管理員能夠隨意增長和刪改集羣系統的節點。nginx
集羣又分爲HA(High Availability)集羣、LB(Load Balancing)集羣和HP(Hight Performance)集羣這三種,這裏主要講的是LB集羣,也就是負載均衡集羣。說到負載均衡技術,那麼學過計算機網絡技術的人應該都不會陌生。它是用來在網絡鏈接、磁盤驅動、或是CPU工做中合理的分配負載,提升工做效率而且避免服務過載。web
當前主流的負載均衡是四層和七層負載均衡。四層負載均衡是基於IP和端口作的負載均衡,七層則是基於虛擬的URL和主機IP。算法
四層:就像工廠中的流水線的工做模式,多人(各節點服務器)對多事務(請求)排隊、有序的進行處理。sql
七層:就是在流水線前加了一步分類調度的過程,讓擅長的人(服務器)作擅長的事後端
總結:從上面的對比看來四層負載與七層負載最大的區別就是效率與功能的區別。四層負載架構設計比較簡單,無需解析具體的消息內容,在網絡吞吐量及處理能力上會相對比較高,而七層負載均衡的優點則體如今功能多,控制靈活強大。在具體業務架構設計時,使用七層負載或者四層負載還得根據具體的狀況綜合考慮。瀏覽器
三大主流軟件負載均衡器對比(LVS --- Nginx --- Haproxy)服務器
LVS:由中國的章文嵩博士開發,他就任於阿里巴巴集團。cookie
一、抗負載能力強。抗負載能力強、性能高,能達到F5硬件的60%;對內存和cpu資源消耗比較低網絡
二、工做在網絡4層(傳輸層),經過vrrp協議轉發(僅做分發之用),具體的流量由linux內核處理,所以沒有流量的產生。
三、穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
四、應用範圍比較廣,能夠對全部應用作負載均衡;由於他是經過修改網絡數據包中的端口號、IP地址來實現負載均衡的,跟上層應用無直接關係。
五、不支持正則處理,不能作動靜分離。(只有應用層(即七層)的負載均衡才支持正則處理)
六、支持負載均衡算法:rr(輪循、輪詢)、wrr(帶權輪循)、lc(最小鏈接)、wlc(權重最小鏈接)
七、配置複雜,對網絡依賴比較大,穩定性很高。[這裏說的配置複雜是跟nginx的負載均衡來作對比]
Ngnix:
一、工做在網絡的7層之上,能夠針對http應用作一些分流的策略,好比針對域名(server_name)、目錄結構(用location、rewrite功能來實現);
二、Nginx對網絡的依賴比較小,理論上nginx負載均衡器能ping通後端的真實web服務器就能進行負載功能;
三、Nginx安裝和配置比較簡單,測試起來比較方便;
四、也能夠承擔高的負載壓力且穩定,通常能支撐超過1萬次(C10K)的併發;
五、對後端服務器的健康檢查,只支持經過端口來檢測,不支持經過url來檢測。
六、Nginx對請求的異步處理能夠幫助節點服務器減輕負載;
七、Nginx僅能支持http、https和Email協議,這樣就在適用範圍較小。
八、不支持Session的直接保持,但能經過ip_hash來解決。
九、支持負載均衡算法:Round-robin(輪循),Weight-round-robin(帶權輪循),Ip-hash(Ip哈希)
十、Nginx還能作Web服務器即Cache功能。
HAProxy:
一、支持兩種代理模式:TCP(四層)和HTTP(七層),支持虛擬主機;
二、可以補充Nginx的一些缺點好比Session的保持,Cookie的引導等工做
三、支持url檢測後端的服務器出問題的檢測會有很好的幫助。
四、更多的負載均衡策略好比:動態加權輪循(Dynamic Round Robin),加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數哈希(Weighted Parameter Hash)已經實現
五、單純從效率上來說HAProxy更會比Nginx有更出色的負載均衡速度。
六、HAProxy能夠對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。
七、支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)
八、不能作Web服務器和Cache。
Cookie功能:是由web瀏覽器提供的功能,主要用來記錄用戶在網頁界面表單中輸入的用戶名、密碼等信息。可讓用戶在下次訪問網站時不用輸入用戶名和密碼。
三大主流軟件負載均衡器適用業務場景:
一、網站建設初期,能夠選用Nginx/HAproxy做爲反向代理負載均衡(或者流量不大均可以不選用負載均衡),由於其配置簡單,性能也能知足通常的業務場景。若是考慮到負載均衡器是有單點問題,能夠採用Nginx+Keepalived/HAproxy+Keepalived避免負載均衡器自身的單點問題。
二、網站併發達到必定程度以後,爲了提升穩定性和轉發效率,可使用LVS、畢竟LVS比Nginx/HAproxy要更穩定,轉發效率也更高。不過維護LVS對維護人員的要求也會更高,投入成本也更大。
注:Nginx與Haproxy比較:Nginx支持七層,用戶量最大,穩定性比較可靠。Haproxy支持四層和七層,支持更多的負載均衡算法,支持session保存等。具體選型看使用場景,目前來講Haproxy因爲彌補了一些Nginx的缺點用戶量也不斷在提高。
衡量一個負載均衡服務器主要考量三個指標:
1) session rate(會話率)
此項指標很是重要,它決定了一個Load Balancer (負載均衡器)能不能分發全部接受的請求。這項指標一般是由CPU性能決定。測量指標的大小跟傳輸的每一個對象的大小有關,一般用空對象來測試,Session rates 在 100,000 sessions/s 左右,使用 Xeon E5 在 2014測試。
2) session concurrency(會話併發)
該指標與前一指標相關聯。這一指標與服務器內存和系統能夠處理的文件描述符(FD:file description)數量有關。 一般每一個session佔用34KB,即大概3W個session佔用1GB內存空間,實際上,socket buffer(套接字緩衝器)也會佔用內存空間,2W個session socket佔用1GB內存。
3) data forwarding rate(數據轉發率)
這一指標與 session rate 相對立,它的衡量單位一般是 Megabytes/s (MB/s), 或者 Gigabits/s (Gbps)。傳輸較大的對象有利於該指標的提高,由於較大的對象傳輸能夠減小session創建和關閉浪費的時間。而測量session rate 則在傳輸小對象時有利於指標提高。haproxy 在2014年使用 Xeon E5 測試成績爲40 Gbps。
以上是我在學習中從別人博客摘要到比較好的博文段落,若有侵權,無心冒犯。