您好,登錄后才能下訂單哦!
LVS:Linux Virtual Server,負載調度器,內核集成,章文嵩(花名 正明)
VS根據請求報文的目標IP和目標協議及端口將其調度轉發至某RS,根據調度算法來挑選RS
VS:Virtual Server 虛擬的服務器
RS:Real Server(lvs) 真正提供服務的服務器
CIP:Client IP 客戶端的IP
VIP: Virtual serve IP LVS服務器針對互聯網的客戶端設置的IP,是虛擬IP
DIP: Director IP 局域網內LVS服務器設置的IP
RIP: Real server IP 真實服務器的IP
LVS服務器,客戶端訪問流程圖
本質是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發
(1)RIP和DIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP
(2)請求報文和響應報文都必須經由Director轉發,Director易于成為系統瓶頸
(3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統,RS可以是任意OS系統
如上圖所示,客戶端通過路由去訪問LVS對外開放的VIP,當LVS收到請求報文時,會將其攔截下來,通過自身的DIP將請求報文傳給其中的一臺RS服務器(DIP和RIP需要在同一個局域網,同一個網段)。RS服務器收到請求報文后,發送響應報文通過LVS服務器發送給客戶端(相當于怎么來的就怎么回去)。在用戶訪問的過程中,LVS服務器實際上是對VIP進行了地址轉換,轉換成了正式服務器的IP,從而實現互相通訊。
NAT模式IP包調度過程
NAT模式內部的工作原理圖
LVS服務器之所以能實現將發送給自己的數據包轉交給其他主機,是因為LVS是潛伏在鉤子函數INPUT這里,一旦發現有用戶訪問的數據包通過PREROUTING后發送給INPUT,LVS會將其截獲下來,改變目標地址為真實服務器的地址,轉而發給POSTROUTING,從而發送給真實服務器,實現調度轉發的功能。
1、NAT技術將請求的報文和響應的報文都需要通過LVS進行地址改寫,因此網站訪問量比較大的時候LVS負載均衡調度器有比較大的瓶頸,一般要求最多之能10-20臺節點
2、只需要在LVS上配置一個公網IP地址就可以了。(也可以通過iptables規則實現NAT,這樣私網地址也可以的)
3、每臺內部的節點服務器的網關地址必須是調度器LB的內網地址。(如果LVS的DIP和RIP在同一個局域網并且在同一個網段,不需要指定網關)
4、NAT模式支持對IP地址和端口進行轉換。即用戶請求的端口和真實服務器的端口可以不一致
LVS-DR:Direct Routing,直接路由,LVS默認模式,應用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變
DR模型,請求報文,和響應報文走的不是同一個路徑,請求報文經過LVS發送給RS,響應報文在回應的時候,不需要原路返回,它可以直接返回給客戶端。
這種模型帶來的最大的好處就是LVS服務i去的壓力變小了。因為只有請求報文需要通過VS服務器發送給RS服務器,而RS服務器的響應報文是直接發送給客戶端的,不需要經過LVS服務器。而且一般請求報文相對響應報文來說要小的多。這樣就使得LVS的服務器的壓力小了很多。
LVS-DR模式圖解
因為RS服務器需要直接將請求報文發送給客戶端,而客戶端訪問的IP是VIP,只有來自VIP的包客戶端才會接收,所以我們需要在RS服務器上也配置VIP。但是這樣的話LVS和RS都有了一樣的IP,這樣就會帶來地址沖突的問題。我們需要解決地址沖突的問題。
我們需要在RS上修改內核參數以限制arp通告及應答級別
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
DR模型特點:LVS的壓力小,通過改變MAC地址來實現調度轉發,不能映射端口號。
LVS-DR模式數據包流轉的過程
轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)
(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關一般不能指向DIP
(3) 請求報文要經由Director,但響應不經由Director
(4) 不支持端口映射
(5) RS的OS須支持隧道功能
lvs-fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉發
CIP --> DIP
VIP --> RIP
(1) VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,RIP的網關一般不會指向DIP
(2) RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還要將其發往Client
(3) 請求和響應報文都經由Director
(4) 支持端口映射
LVS的調度又分為靜態方法和動態方法。
靜態方法:僅根據算法本身進行調度
1、RR:roundrobin,輪詢,即按順序分配請求,即使某個機器性能不好,或者宕機,也會將請求分配給這臺主機
2、WRR:Weighted RR,加權輪詢,跟RR的區別再于它可以通過對每個RS服務器去設置權重,來實現依照服務器性能的優略分配任務,性能好的分配任務多點,性能差的分配任務少點。也會存在RR一樣的缺點
3、SH:Source Hashing,實現session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定。
4、DH:Destination Hashing;目標地址哈希,第一次輪詢調度至RS,后續將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商。
動態方法:主要根據每RS當前的負載狀態及調度算法進行調度Overhead=value較小的RS將被調度
1、LC:least connections 適用于長連接應用
Overhead=activeconns*256+inactiveconns
2、WLC:Weighted LC,默認調度方法
Overhead=(activeconns*256+inactiveconns)/weight
3、SED:Shortest Expection Delay,初始連接高權重優先
Overhead=(activeconns+1)*256/weight
4、NQ:Never Queue,第一輪均勻分配,后續SED
5、LBLC:Locality-Based LC,動態的DH算法,使用場景:根據負載狀態實現正向代理
6、LBLCR:LBLC with Replication,帶復制功能的LBLC,解決LBLC負載不均衡
問題,從負載重的復制到負載輕的RS
Overhead 表示優先級、
activeconns 正處于連接的數量
inactiveconns 非活動連接的數量
weight 權重
優點:
Lvs屬于內核級的功能,它的并發量是相當大的,能達到幾百萬的并發
缺點:
沒有所謂的高可用功能,不能檢查后端服務器的健康性,(后端服務器宕機了,lvs是沒有辦法去管理的)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。