【Services】【Web】【LVS】lvs基礎概念
1.簡介
1.1. 作者:張文嵩,就職於阿裏
1.2. LVS是基礎四層路由、四層交換的軟件,他根據請求報文的目標IP和目標PORT將其調度轉發至後端的某主機;
1.3. IPTABLES的請求轉發路線:iptables(用戶空間工具)/netfilter(內核空間組件)
PREROUTING ==> INPUT
PREROUTING ==> FORWARD ==> POSTROUTING
OUTPUT ==> POSTROUTING
1.4. LVS的組成:ipvsadm(用戶空間工具)/ipvs(內核空間組件)
ipvsadm:用戶空間的命令行工具,用於管理集群服務及集群服務上的RS;
ipvs:工作於內核上的netfilter的INPUT鉤子之上的程序,可根據用戶定義的集群實現請求轉發;
1.5. LVS支持的協議:TCP、UDP、SCTP、AH、EST、AH_EST等協議進行調度;
2. 名詞解釋
vs | Virtual Server, Director, Dispatcher, Balancer |
rs | Real Server |
CIP | Client IP |
VIP | Virtual Server IP |
DIP | Director IP |
RIP | Real Server IP |
3. lvs集群的類型
3.1. lvs-nat:多目標的DNAT,通過將報文中的目標地址和目標端口修改為挑選出的某RS的RIP和PORT實現轉發;
3.1.1. 特性:
(1)RIP和DIP必須在同一IP網絡,且使用私有地址;RS的網絡要指向DIP(保證相應報文必須經由VS);
(2)請求報文和相應報文都經由Director轉發,較高負載下,Director易於成為系統性能瓶頸;
(3)支持端口映射
(4)VS必須是Linux,RS可以是任意OS
3.2. lvs-dr:Direct Routing,通過為請求報文的重新封裝一個MAC首部進行轉發,源mac是DIP所在接口的mac,目標mac是挑選出某RS的RIP所在接口的MAC地址;IP首部不會發生變化(CIP《==》VIP)
3.2.1. 特性:
(1)確保前端路由器將目標IP為VIP的請求報文發往Director
解決方案:
在路由器上靜態綁定VIP和Director的MAC地址;
禁止RS響應VIP的ARP請求,禁止RS的VIP進行通告
(a)arptables
(b)修改RS的內核參數,並把VIP綁定在lo的別名上;
arp_Ignore, apr_announce
(2)RS的RIP可以使用私有地址,也可以使用公網地址
(3)RS跟Director必須在同一物理網絡
(4)請求報文必須由Directory調度,但響應報文必須不能經由Director;
(5)不支持端口映射
(6)RS可以使用大多的OS
3.3. lvs-tun:tunnel,不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而是原IP首部之外再封裝一個IP首部(源IP為DIP,目標IP為挑選出的RS的RIP);
3.3.1. 特性
(1)RIP、DIP、VIP全得是公網地址;
(2)RS網關不能指向也可能指向DIP
(3)請求報文經由Director轉發,但響應報文將直接發往CIP;
(4)不支持端口映射
(5)RS的OS必須支持隧道功能;
3.4. lvs-fullnat:通過同時修改請求報文的源IP地址(CIP==》DIP)和目標IP地址(VIP==》RIP)進行轉發;
3.4.1. 特性
(1)VIP是公網地址,RIP和DIP是私網地址,且通常不在同一網絡中,但需要經由路由器互通;
(2)RS收到的請求報文源IP為DIP,因此響應報文將直接響應給DIP;
(3)請求和響應報文都經由Director
(4)支持端口映射
4. lvs集群的調度算法(scheduler):根據其調度時是否考慮後端主機的當前負載,可分為靜態方法和動態方法兩類;
4.1. 靜態方法:僅根據算法本身進行調度;
RR:Round Robin,輪詢/論調/輪叫;
WRR:Weighted RR,加權輪詢;
SH:Source Hashing,源地址哈希;
DH:Destination Hashing,目標地址哈希;正向web代理(緩存),負載均衡內網用戶對外部服務器的請求;哈希的是目標地址
4.2. 動態方法:根據算法及各RS當前的負載狀態進行調度;
LC:least connections,最少連接;
Overhead=Active*256+Inactive
WCL:Weighted LC,加權最少連接;
Overhead=(Active*256+Inactive)/weight
SED:Shorted Expections Delay
Overhead=(Active+1)*256/weight
NQ:Never Queue
LBLC:Locality-Based LC,動態的DH算法
LBLCR:LBLC with Replication,帶復制功能的LBLC;
【Services】【Web】【LVS】lvs基礎概念