1. 程式人生 > >【Services】【Web】【LVS】lvs基礎概念

【Services】【Web】【LVS】lvs基礎概念

通過 pre inactive cli 端口 sch obi 私有地址 expect

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基礎概念