企業級負載均衡集羣LVS—概念及工作原理
1. 什麼是LVS
==lvs是linux virtual server的簡稱,也就是Linux虛擬服務器。==這是一個開源項目,它的官方網站是http://www.linuxvirtualserver.org 現在lvs已經是linux內核標準的一部分。
使用lvs可以達到的技術目標是:通過lvs達到的負載均衡技術和linux操作系統實現一個高性能高可用的linux服務器集羣,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的性能。
2. LVS的特點
通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能、高可用的服務器羣集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。
LVS的主要特點有以下幾個方面:
- 高併發連接:LVS基於內核網絡層面工作,有超強的承載能力和併發處理能力。單臺LVS負載均衡器,可支持上萬併發連接。穩定性強:是工作在網絡4層之上僅作分發之用,這個特點也決定了它在負載均衡軟件裏的性能最強,穩定性最好,對內存和cpu資源消耗極低。
- 成本低廉:硬件負載均衡器少則十幾萬,多則幾十萬上百萬,LVS只需一臺服務器和就能免費部署使用,性價比極高。
- 配置簡單:LVS配置非常簡單,僅需幾行命令即可完成配置,也可寫成腳本進行管理。
- 支持多種算法:支持多種論調算法,可根據業務場景靈活調配進行使用
- 支持多種工作模型:可根據業務場景,使用不同的工作模式來解決生產環境請求處理問題。
- 應用範圍廣:因爲LVS工作在4層,所以它幾乎可以對所有應用做負載均衡,包括http、數據庫、DNS、ftp服務等等
- 缺點:工作在4層,不支持7層規則修改,機制過於龐大,不適合小規模應用。
3. LVS常見術語
LVS中有一些常見的術語,如下表所示:
名稱 | 解釋 |
---|---|
ipvsad | 用戶空間的命令行工具,用於管理集羣服務及集羣服務上的RS等 |
IPVS | 工作於內核上的netfilter INPUT HOOK之上的程序,可根據用戶定義的集羣實現請求轉發 |
VS | Virtual Server ,虛擬服務 |
Director, Balancer | 負載均衡器、分發器 |
DS | Director Server:指前端負載均衡器節點 |
RS | Real Server 後端請求處理服務器 |
CIP | Client IP,客戶端IP |
VIP | Director Virtual IP,負載均衡器虛擬IP |
DIP | Director IP,負載均衡器IP |
RIP | Real Server IP,後端請求處理服務器IP |
4. LVS的組成
LVS由2部分程序組成,包括ipvs和ipvsadm
- ipvs(ip virtual server):一段代碼工作在內核空間,叫ipvs,是真正生效實現調度的代碼
- ipvsadm:另外一段代碼工作在用戶空間,叫ipvsadm,負責爲ipvs內核框架編寫規則,定義誰是集羣服務,而誰是後端真實的服務器(Real Server)
5. LVS的工作原理
具體流程:
- 1.當客戶端的請求到達負載均衡器的內核空間時,首先會到達PREROUTING鏈。
- 2.當內核發現請求數據包的目的地址是本機時,將數據包送往INPUT鏈。
- 3.LVS由用戶空間的ipvsadm和內核空間的IPVS組成,ipvsadm用來定義規則,IPVS利用ipvsadm定義的規則工作,IPVS工作在INPUT鏈上,當數據包到達INPUT鏈時,首先會被IPVS檢查,如果數據包裏面的目的地址及端口沒有在規則裏面,那麼這條數據包將經過INPUT鏈送至用戶空間,交給用戶空間的進程來處理。
- 4.如果數據包裏面的目的地址及端口在規則裏面,那麼這條數據報文將被修改目的地址爲事先定義好的後端服務器,並送往POSTROUTING鏈。
- 5.最後經由POSTROUTING鏈發往後端服務器。