lvs入門

lvs負載均衡

標籤(空格分隔): 負載均衡算法 反向代理算法


本文學習自以下文章,講解得很透徹,想知道深層原理的可以去看看:https://www.cnblogs.com/liwei0526vip/p/6370103.html

一、反向代理模式

(1)dr模式
(2)nat模式
(3)tunnel模式

dr模式

(1)當lvs服務器接收客戶端請求的時候,請求包經過網卡到達read_buffer,然後發送	      給PREROUTING。PREROUTING鏈過濾之後發現請求包的
    目的地址爲本地VIP,源地址爲CIP。於是mangle表將請求包設置響應的標誌位並且發送給INPUT鏈。
(2)INPUT收到數據包之後,由於IPVS是內建在INPUT鏈上的,因此IPVS會判斷此數據包是否爲本集羣的數據包,是的話就將修改請求包的源MAC地址
修改爲本機的DIP接口的MAC地址,將目的地址修改爲後端應用服務器的RIP接口的MAC地址。並且將修改後的數據包發送給POSTROUTING鏈。
(3)此時的數據包結構爲{[CIP][DIP_MAC]---[VIP][RIP_MAC]}
(4)POSTROUTING檢查MAC表,發現目的MAC地址就是後端應用服務器的MAC,所以直接通過二層通訊將數據幀發送給後端應用服務器。
(5)後端服務器收到數據幀之後進行處理,然後通過環回口lo將響應包發送給ens33接口然後再發送至客戶端。
(6)此時數據包的結構爲{[VIP][VIP_MAC]---[CIP][CIP_MAC]}

這裏有一點小疑問,Real server爲什麼能夠知道客戶端的MAC地址,那個VIP_MAC地址填的是哪個接口的地址

特點1:保證前端路由將目標地址爲VIP報文統統發給Director Server,而不是RS
RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問
RS跟Director Server必須在同一個物理網絡中
所有的請求報文經由Director Server,但響應報文必須不能進過Director Server
不支持地址轉換,也不支持端口映射
RS可以是大多數常見的操作系統
RS的網關絕不允許指向DIP(因爲我們不允許他經過director)
RS上的lo接口配置VIP的IP地址
缺陷:RS和DS必須在同一機房中
客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server請求包{[CIP][CIP_MAC]--[VIP][VIP_MAC]}這個數據包處理一下修改後{[CIP][DIP_MAC]--[VIP][RIP_MAC]}這個幫忙發出去這是給你的處理數據包這是響應包{[VIP][VIP_MAC]--[CIP][CIP_MAC]}客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server

nat模式

(1)Director server收到請求包之後,PREROUTING對數據包進行判斷,發現是發往本機的,因此PREROUTING將數據包發送給INPUT鏈。
(2)此時的數據包結構爲{[CIP][CIP_MAC]--[VIP][VIP_MAC]}
(3)INPUT鏈上的IPVS判斷數據包爲集羣的數據包,因此將數據包的源IP修改爲DIP,將目的IP修改爲RIP,並且發送給後端應用服務器。
(4)此時的數據包結構爲{[DIP]}--[RIP]}
(5)後端服務器收處理數據包,並且將響應包發送給Director
(6)此時的數據包結構爲{[RIP]--[DIP]}
(7)Director將數據包的源IP修改爲VIP,將目的IP修改爲CIP,並且發送給客戶端
客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server請求包{[CIP]--[VIP]}這個數據包你處理一下修改後{[DIP]--[RIP]}你把這個包發出去這是你的包處理數據包這個包處理好了,給你{[RIP]--[DIP]}把源目地址修改一下修改後{[VIP]--[CIP]}你把這個發給客戶端這是你的響應包客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server

tuunel模式

(1)客戶端將數據包發送給Director,此時的數據包結構爲{[CIP]--[VIP]}
(2)PREROUTING收到數據包後,判斷數據包爲發往本機的,因此將 數據包轉發給INPUT鏈,INPUT鏈對數據包重新封裝。
(3)重新封裝後的數據包爲{[DIP-CIP]--[RIP-VIP]},INPUT鏈將此包發送給POSTROUTING鏈,POSTROUTING鏈發現目的IP爲RIP,因此POSTROUTING鏈將此包轉發給Real server。
(5)Real server收到數據包後進行拆包,發現這個包的真實結構爲{[CIP]--[VIP]},並且開始處理數據包,根據需求生成了響應包。
(6)響應包的結構爲{[VIP]--[CIP]},此包即將發送給客戶端
客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server請求包{[CIP]--[VIP]}這是發往本機的包,請處理重新封裝後{[DIP-CIP]--[RIP-VIP]}這個幫忙快遞出去這個目的地址是RIP,那就發給Realserver這是您的快遞,請查收^_^拆開封裝:這個目的地址是我的lo接口IP處理數據包生成響應包{[VIP]--[CIP]}通過lo虛擬接口,再通過本地物理接口發送出去這是響應包客戶端PREROUTING鏈INPUT鏈POSTROUTING鏈Real server

8種負載均衡算法

負載均衡算法 原理 優點
輪詢 rr循環地將請求調度到各個服務器上 配置簡單,若服務器的配置都差不多,那麼用輪詢還是挺好的
加權輪詢 wrr在輪詢的基礎上對某些服務器附加權重,使請求更加傾向發送到權重較高的服務器上 後端服務器的配置參差不齊就可根據配置好壞來配置權重
最少連接算法 lc根據後端服務器已存在的連接數來分配請求,連接數越少越有機會被分配到請求 這樣不至於存在兩極分化
加權最少連接算法 在lc的基礎上增加權重 類似於lc算法
基於局部的最少連接算法 lblc優先選擇最近處理過此客戶端請求的服務器,若沒有則再選擇曾經處理過此客戶端請求的服務器。若此客戶端是新的,那麼就根據lc算法來進行分配 兩種算法結合,有利於減少資源消耗
複雜的基於局部的最少連接算法 記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標IP到一組服務器之間的映射關係,防止單點服務器負載過高。 比lblcr更加優化
基於源地址散列 根據源ip進行散列從而靜態地分配服務器資源 有利於會話保持
基於目的地址散列 根據目的ip進行散列從而靜態地分配服務器資源 有利於會話保持
發佈了38 篇原創文章 · 獲贊 1 · 訪問量 1248
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章