一、負載均衡LVS基本介紹
-
LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務器。這是一個由章文嵩博士發(fā)起的一個開源項目,它的官方網站是 http://www.linuxvirtualserver.org。
- LVS是Linux內核標準的一部分。LVS是一個實現負載均衡集群的開源軟件項目,通過 LVS 的負載均衡技術和 Linux操作系統可以實現一個高性能高可用的 Linux 服務器集群,它具有良好的可靠性、可擴展性和可操作性。
- LVS架構從邏輯上可分為調度層、Server集群層和共享存儲。LVS實際上相當于基于IP地址的虛擬化應用。
二、LVS的組成
LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。
- ipvs(ip virtual server):工作在內核空間,是真正生效實現調度的代碼。
- ipvsadm:工作在用戶空間,負責為ipvs內核框架編寫規(guī)則,定義誰是集群服務,而誰是后端真實的服務器(Real Server)
三、LVS相關術語
- DS:Director Server, 指的是前端負載均衡器節(jié)點。
- RS:Real Server, 后端真實的工作服務器。
- VIP:向外部直接面向用戶請求,作為用戶請求的目標的IP地址。
- DIP:Director Server IP, 前端負載均衡器IP地址,主要用于和內部主機通信。
- RIP:Real Server IP, 后端服務器的IP地址。
- CIP:Client IP, 訪問客戶端的IP地址
四、LVS的工作模式介紹
LVS負載均衡常見的有三種工作模式,分別是地址轉換(簡稱NAT模式)、IP隧道(簡稱TUN模式)和直接路由(簡稱DR模式),其實企業(yè)中最常用的是 DR 實現方式,而 NAT 配置上比較簡單和方便,下面總結 DR 和 NAT 原理和特點:
1. LVS-NAT模式
(1) LVS-NAT原理
類似于防火墻的私有網絡結構,Director Server作為所有服務器節(jié)點的網關,,即作為客戶端的訪問入口,也是各節(jié)點回應客戶端的訪問出口,其外網地址作為整個群集的VIP地址,其內網地址與后端服務器Real Server在同一個物理網絡,Real Server必須使用私有IP地址。
數據包流向分析
-
用戶發(fā)送請求到Director Server,請求的數據報文(源IP是CIP,目標IP是VIP)到達內核空間。
-
內核空間判斷數據包的目標IP是本機,此時IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器IP,重新封裝數據包(源IP為CIP,目標IP為RIP),然后選路將數據包發(fā)送給Real Server。
-
Real Server比對發(fā)現目標IP是本機的IP,重新封裝報文(源IP為RIP,目標IP為CIP)發(fā)回給Director Server。
- Director Server重新封裝數據包,將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP。
(2) LVS-NAT模型的特點
-
RS必須使用私有IP地址,網關指向DIP。
-
DIP與RIP必須在同一網段內。
-
DS作為所有服務器節(jié)點的網關,也就是說請求和響應報文都需要經過Director Server。
-
支持端口映射
- 高負載場景中,Director Server壓力比較大,易成為性能瓶頸。
2. LVS-DR模式
(1) LVS-DR原理
Director Server作為群集的訪問入口,但不作為網關使用,后端服務器池中的Real Server與Director Server在同一個物理網絡中,發(fā)送給客戶機的數據包不需要經過Director Server。為了響應對整個群集的訪問,DS與RS都需要配置有VIP地址。
數據包流向分析
-
用戶發(fā)送請求到Director Server,請求的數據報文(源IP是CIP,目標IP是VIP)到達內核空間。
- 由于DS和RS在同一個網絡中,所以是通過二層數據鏈路層來傳輸。
- 內核空間判斷數據包的目標IP是本機IP,此時IPVS比對數據包請求的服務是否為集群服務,若是,重新封裝數據包,修改源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址,源IP地址與目標IP地址沒有改變,然后將數據包發(fā)送給Real Server.
- RS發(fā)現請求報文的MAC地址是自己的MAC地址,就接收此報文,重新封裝報文(源IP地址為VIP,目標IP為CIP),將響應報文通過lo接口傳送給eth0網卡然后向外發(fā)出。
- RS直接將響應報文傳送到客戶端。
(2) LVS-DR模型的特點
- RS和DS必須在同一個物理網絡中。
- RS可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過互聯網對RIP進行直接訪問。
- 所有的請求報文經由Director。 Server,但響應報文必須不能經過Director Server。
- RS的網關絕不允許指向DIP(不允許數據包經過director)。
- RS上的lo接口配置VIP的IP地址。
LVS-DR模式需要注意的是:
保證前端路由將目標地址為VIP報文統統發(fā)給Director Server,而不是RS。
解決方案是:修改RS上內核參數(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,并限制其不能響應對VIP地址解析請求。
-
arp_ignore=1表示系統只響應目的IP為本地IP的ARP請求。
- arp_announce=2表示系統不使用IP包的源地址來設置ARP請求的源地址,而選擇發(fā)送接口的IP地址。
五、LVS的負載調度算法
最常用的有四種;輪詢(rr)、加權輪詢(wrr)、最少連接(lc)和加權最少連接(wlc)。
- 輪詢(rr):將收到的訪問請求按照順序輪流調度到不同的服務器上,不管后端真實服務器的實際連接數和系統負載。
- 加權輪詢(wrr):給RS設置權重,權重越高,那么分發(fā)的請求數越多,權重的取值范圍0–100。根據每臺服務器的性能,給每臺服務器添加權值,如果RS1的權值為1,RS2的權值為2,那么調度到RS2的請求會是RS1的2倍。權值越高的服務器,處理的請求越多。這種算法是對rr算法的一種優(yōu)化和補充。
- 最少連接(lc):根據后端RS的連接數來決定把請求分發(fā)給誰,比RS1連接數比RS2連接數少,那么請求就優(yōu)先發(fā)給RS1。
- 加權最少連接(wlc):根據后端RS的權重和連接數來決定把請求分發(fā)給誰,權重較高,連接數少的RS會優(yōu)先處理請求。
六、LVS的共享存儲服務器
為后端真實服務器提供穩(wěn)定、一致的文件存取服務,在Linux/Unix環(huán)境中,共享存儲可以使用NAS設備或者提供NFS(網絡文件系統)共享服務的專用服務器。一般放在私有網絡中。