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必須在同一機房中
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,並且發送給客戶端
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]},此包即將發送給客戶端
8種負載均衡算法
負載均衡算法 | 原理 | 優點 |
---|---|---|
輪詢 | rr循環地將請求調度到各個服務器上 | 配置簡單,若服務器的配置都差不多,那麼用輪詢還是挺好的 |
加權輪詢 | wrr在輪詢的基礎上對某些服務器附加權重,使請求更加傾向發送到權重較高的服務器上 | 後端服務器的配置參差不齊就可根據配置好壞來配置權重 |
最少連接算法 | lc根據後端服務器已存在的連接數來分配請求,連接數越少越有機會被分配到請求 | 這樣不至於存在兩極分化 |
加權最少連接算法 | 在lc的基礎上增加權重 | 類似於lc算法 |
基於局部的最少連接算法 | lblc優先選擇最近處理過此客戶端請求的服務器,若沒有則再選擇曾經處理過此客戶端請求的服務器。若此客戶端是新的,那麼就根據lc算法來進行分配 | 兩種算法結合,有利於減少資源消耗 |
複雜的基於局部的最少連接算法 | 記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標IP到一組服務器之間的映射關係,防止單點服務器負載過高。 | 比lblcr更加優化 |
基於源地址散列 | 根據源ip進行散列從而靜態地分配服務器資源 | 有利於會話保持 |
基於目的地址散列 | 根據目的ip進行散列從而靜態地分配服務器資源 | 有利於會話保持 |