一.LVS是什麼?linux
LVS的英文全稱是Linux Virtual Server,即Linux虛擬服務器。它是咱們國家的章文嵩博士的一個開源項目。在linux內存2.6中,它已經成爲內核的一部分,在此以前的內核版本則須要從新編譯內核。
二.LVS能幹什麼?算法
LVS主要用於多服務器的負載均衡。它工做在網絡層,能夠實現高性能,高可用的服務器集羣技術。它廉價,可把許多低性能的服務器組合在一塊兒造成一個超級服務器。它易用,配置很是簡單,且有多種負載均衡的方法。它穩定可靠,即便在集羣的服務器中某臺服務器沒法正常工做,也不影響總體效果。另外可擴展性也很是好。服務器
三.工做原理網絡
如上圖,LVS可分爲三部分:負載均衡
1.Load Balancer:這是LVS的核心部分,它比如咱們網站MVC模型的Controller。它負責將客戶的請求按照必定的算法分發到下一層不一樣的服務器進行處理,本身自己不作具體業務的處理。另外該層還可用監控下一層的狀態,若是下一層的某臺服務器不能正常工做了,它會自動把其剔除,恢復後又可用加上。該層由一臺或者幾臺Director Server組成。性能
2.Server Array:該層負責具體業務。可有WEB Server、mail Server、FTP Server、DNS Server等組成。注意,其實上層的Director Server也能夠當Real server用的。網站
3.Shared Storage:主要是提升上一層數據和爲上一層保持數據一致。
四.負載均衡機制
前面咱們說了LVS是工做在網絡層。相對於其它負載均衡的解決辦法,好比DNS域名輪流解析、應用層負載的調度、客戶端的調度等,它的效率是很是高的。LVS的經過控制IP來實現負載均衡。IPVS是其具體的實現模塊。IPVS的主要做用:安裝在Director Server上面,在Director Server虛擬一個對外訪問的IP(VIP)。用戶訪問VIP,到達Director Server,Director Server根據必定的規則選擇一個Real Server,處理完成後而後返回給客戶端數據。這些步驟產生了一些具體的問題,好比如何選擇具體的Real Server,Real Server若是返回給客戶端數據等等。IPVS爲此有三種機制:spa
1.VS/NAT(Virtual Server via Network Address Translation),即網絡地址翻轉技術實現虛擬服務器。當請求來到時,Diretor server上處理的程序將數據報文中的目標地址(即虛擬IP地址)改爲具體的某臺Real Server,端口也改爲Real Server的端口,而後把報文發給Real Server。Real Server處理完數據後,須要返回給Diretor Server,而後Diretor server將數據包中的源地址和源端口改爲VIP的地址和端口,最後把數據發送出去。由此能夠看出,用戶的請求和返回都要通過Diretor Server,若是數據過多,Diretor Server確定會不堪重負。3d
2.VS/TUN(Virtual Server via IP Tunneling),即IP隧道技術實現虛擬服務器。它跟VS/NAT基本同樣,可是Real server是直接返回數據給客戶端,不須要通過Diretor server,這大大下降了Diretor server的壓力。server
3.VS/DR(Virtual Server via Direct Routing),即用直接路由技術實現虛擬服務器。跟前面兩種方式,它的報文轉發方法有所不一樣,VS/DR經過改寫請求報文的MAC地址,將請求發送到Real Server,而Real Server將響應直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負載調度機制中性能最高最好的,可是必需要求Director Server與Real Server都有一塊網卡連在同一物理網段上。
五.負載調度算法
前面咱們都知道Director Server要選擇不一樣的Real server,那麼它具體的若是選擇Real Server以達到負載均衡的呢,IPVS實現了八種調度方法,具體算法能夠查看官網或者百度,這裏就不一一列出了。官網:www.linuxvirtualserver.org。