LVS的特點是:
1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件裏的性能最強的;
2、配置性比較低,這是一個缺點也是一個優點,因爲沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人爲出錯的機率;
3、工作穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived;
4、無流量,保證了均衡器IO的性能不會收到大流量的影響;
5、應用範圍比較廣,可以對所有應用做負載均衡;
6、軟件本身不支持正則處理,不能做動靜分離,這個就比較遺憾了;其實現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。
7、如果是網站應用比較龐大的話,實施LVS/DR+Keepalived起來就比較複雜了,特別後面有Windows Server應用的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
Nginx的特點是:
1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更爲強大和靈活,這也是許多朋友喜歡它的原因之一;
2、Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;
3、Nginx安裝和配置比較簡單,測試起來比較方便;
4、也可以承擔高的負載壓力且穩定,一般能支撐超過幾萬次的併發量;
5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測;
6、Nginx僅能支持http和Email,這樣就在適用範圍上面小很多,這個它的弱勢;
7、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP現在也是非常流行的web架構,大有和以前最流行的LAMP架構分庭抗爭之勢,在高流量的環境中也有很好的效果。
8、Nginx現在作爲Web反向加速緩存越來越成熟了,很多朋友都已在生產環境下投入生產了,而且反映效果不錯,速度比傳統的Squid服務器更快,有興趣的朋友可以考慮用其作爲反向代理加速器。
HAProxy的特點是:
1、HAProxy是支持虛擬主機的,以前有朋友說這個不支持虛擬主機,我這裏特此更正一下。
2、能夠補充Nginx的一些缺點比如 Session的保持,Cookie的引導等工作
3、支持url檢測後端的服務器出問題的檢測會有很好的幫助。
4、它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的。
5、HAProxy可以對Mysql讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,不過在後端的MySQL slaves數量超過10臺時性能不如LVS,所以我向大家推薦LVS+Keepalived。
6、HAProxy的算法現在也越來越多了,具體有如下8種:
①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
②static-rr,表示根據權重,建議關注;
③leastconn,表示最少連接者先處理,建議關注;
④ource,表示根據請求源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請求。
--------------------------------keepalived和heartbeat區別 (附件:LVS-DR原理剖析.pdf)
Keepalived使用的vrrp協議方式,虛擬路由冗餘協議 (Virtual Router Redundancy Protocol,簡稱VRRP);
Heartbeat是基於主機或網絡的服務的高可用方式;
keepalived的目的是模擬路由器的雙機
heartbeat的目的是用戶service的雙機
lvs的高可用建議用keepavlived
業務的高可用用heartbeat
###########################################################
Keepalived介紹
Keepalived 是一個基於VRRP協議來實現的WEB 服務高可用方案,可以利用其來避免單點故障。一個WEB服務至少會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服 務器(BACKUP),但是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候, 備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。
1 | +-------------VIP(192.168.0.7)------------------+ |
2 | | | | |
3 | | | | |
4 | server(MASTER) <----keepalived----> server(BACKUP) |
5 | (192.168.0.1) (192.168.0.2) |
keepalived是VRRP的完美實現,因此在介紹keepalived之前,先介紹一下VRRP的原理。
VRRP協議簡介
在現實的網絡環境中,兩臺需要通信的主機大多數情況下並沒有直接的物理連接。對於這樣的情況,它們之間路由怎樣選擇?主機如何選定到達目的主機的下一跳路由,這個問題通常的解決方法有二種:
· 在主機上使用動態路由協議(RIP、OSPF等)
· 在主機上配置靜態路由
很明顯,在主機上配置路態路由是非常不切實際的,因爲管理、維護成本以及是否支持等諸多問題。配置靜態路由就變得十分流行,但路由器(或者說默認網關default gateway)卻經常成爲單點。
VRRP的目的就是爲了解決靜態路由單點故障問題。
VRRP通過一競選(election)協議來動態的將路由任務交給LAN中虛擬路由器中的某臺VRRP路由器。
工作機制
在一個VRRP虛擬路由器中,有多臺物理的VRRP路由器,但是這多臺的物理的機器並不能同時工作,而是由一臺稱爲MASTER的負責路由工作,其它的都是BACKUP,MASTER並非一成不變,VRRP讓每個VRRP路由器參與競選,最終獲勝的就是MASTER。MASTER擁有一些特權,比如 擁有虛擬路由器的IP地址,我們的主機就是用這個IP地址作爲靜態路由的。擁有特權的MASTER要負責轉發發送給網關地址的包和響應ARP請求。
VRRP通過競選協議來實現虛擬路由器的功能,所有的協議報文都是通過IP多播(multicast)包(多播地址224.0.0.18)形式發送的。虛擬路由器由VRID(範圍0-255)和一組IP地址組成,對外表現爲一個周知的MAC地址。所以,在一個虛擬路由 器中,不管誰是MASTER,對外都是相同的MAC和IP(稱之爲VIP)。客戶端主機並不需要因爲MASTER的改變而修改自己的路由配置,對他們來 說,這種主從的切換是透明的。
在一個虛擬路由器中,只有作爲MASTER的VRRP路由器會一直髮送VRRP廣告包(VRRPAdvertisement message),BACKUP不會搶佔MASTER,除非它的優先級(priority)更高。當MASTER不可用時(BACKUP收不到廣告包), 多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是非常快速的(<1s),以保證服務的連續性。
由於安全性考慮,VRRP包使用了加密協議進行加密。
初始化:
路由器啓動時,如果路由器的優先級是255(最高優先級,路由器擁有路由器地址),要發送VRRP通告信息,併發送廣播ARP信息通告路由器IP地址對應的MAC地址爲路由虛擬MAC,設置通告信息定時器準備定時發送VRRP通告信息,轉爲MASTER狀態;
否則進入BACKUP狀態,設置定時器檢查定時檢查是否收到MASTER的通告信息。
主機:
主機狀態下的路由器要完成如下功能:
設置定時通告定時器;
用VRRP虛擬MAC地址響應路由器IP地址的ARP請求;
轉發目的MAC是VRRP虛擬MAC的數據包;
如果是虛擬路由器IP的擁有者,將接受目的地址是虛擬路由器IP的數據包,否則丟棄;
當收到shutdown的事件時刪除定時通告定時器,發送優先權級爲0的通告包,轉初始化狀態;
如果定時通告定時器超時時,發送VRRP通告信息;
收到VRRP通告信息時,如果優先權爲0,發送VRRP通告信息;否則判斷數據的優先級是否高於本機,或相等而且實際IP地址大於本地實際IP,設置定時通告定時器,復位主機超時定時器,轉BACKUP狀態;否則的話,丟棄該通告包;
備機:
備機狀態下的路由器要實現以下功能:
設置主機超時定時器;
不能響應針對虛擬路由器IP的ARP請求信息;
丟棄所有目的MAC地址是虛擬路由器MAC地址的數據包;
不接受目的是虛擬路由器IP的所有數據包;
當收到shutdown的事件時刪除主機超時定時器,轉初始化狀態;
主機超時定時器超時的時候,發送VRRP通告信息,廣播ARP地址信息,轉MASTER狀態;
收到VRRP通告信息時,如果優先權爲0,表示進入MASTER選舉;否則判斷數據的優先級是否高於本機,如果高的話承認MASTER有效,復位主機超時定時器;否則的話,丟棄該通告包;
2.4 ARP查詢處理
當 內部主機通過ARP查詢虛擬路由器IP地址對應的MAC地址時,MASTER路由器回覆的MAC地址爲虛擬的VRRP的MAC地址,而不是實際網卡的 MAC地址,這樣在路由器切換時讓內網機器覺察不到;而在路由器重新啓動時,不能主動發送本機網卡的實際MAC地址。如果虛擬路由器開啓的ARP代理 (proxy_arp)功能,代理的ARP迴應也迴應VRRP虛擬MAC地址;