LVS負載均衡之LVS-NAT與LVS-DR模式原理詳解
一、負載均衡LVS基本介紹
-
LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬伺服器。這是一個由章文嵩博士發起的一個開源專案,它的官方網站是 ofollow,noindex" target="_blank">http://www.linuxvirtualserver.org 。
- LVS是Linux核心標準的一部分。LVS是一個實現負載均衡叢集的開源軟體專案,通過 LVS 的負載均衡技術和 Linux作業系統可以實現一個高效能高可用的 Linux 伺服器叢集,它具有良好的可靠性、可擴充套件性和可操作性。
- LVS架構從邏輯上可分為排程層、Server叢集層和共享儲存。LVS實際上相當於基於IP地址的虛擬化應用。
二、LVS的組成
LVS 由2部分程式組成,包括 ipvs 和 ipvsadm。
- ipvs(ip virtual server):工作在核心空間,是真正生效實現排程的程式碼。
- ipvsadm:工作在使用者空間,負責為ipvs核心框架編寫規則,定義誰是叢集服務,而誰是後端真實的伺服器(Real Server)
三、LVS相關術語
- DS:Director Server, 指的是前端負載均衡器節點。
- RS:Real Server, 後端真實的工作伺服器。
- VIP:向外部直接面向用戶請求,作為使用者請求的目標的IP地址。
- DIP:Director Server IP, 前端負載均衡器IP地址,主要用於和內部主機通訊。
- RIP:Real Server IP, 後端伺服器的IP地址。
- CIP:Client IP, 訪問客戶端的IP地址
四、LVS的工作模式介紹
LVS負載均衡常見的有三種工作模式,分別是地址轉換(簡稱NAT模式)、IP隧道(簡稱TUN模式)和直接路由(簡稱DR模式),其實企業中最常用的是 DR 實現方式,而 NAT 配置上比較簡單和方便,下面總結 DR 和 NAT 原理和特點:
1. LVS-NAT模式
(1) LVS-NAT原理
類似於防火牆的私有網路結構,Director Server作為所有伺服器節點的閘道器,,即作為客戶端的訪問入口,也是各節點回應客戶端的訪問出口,其外網地址作為整個群集的VIP地址,其內網地址與後端伺服器Real Server在同一個物理網路,Real Server必須使用私有IP地址。
資料包流向分析
-
使用者傳送請求到Director Server,請求的資料報文(源IP是CIP,目標IP是VIP)到達核心空間。
-
核心空間判斷資料包的目標IP是本機,此時IPVS比對資料包請求的服務是否為叢集服務,若是,修改資料包的目標IP地址為後端伺服器IP,重新封裝資料包(源IP為CIP,目標IP為RIP),然後選路將資料包傳送給Real Server。
-
Real Server比對發現目標IP是本機的IP,重新封裝報文(源IP為RIP,目標IP為CIP)發回給Director Server。
- Director Server重新封裝資料包,將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP。
(2) LVS-NAT模型的特點
-
RS必須使用私有IP地址,閘道器指向DIP。
-
DIP與RIP必須在同一網段內。
-
DS作為所有伺服器節點的閘道器,也就是說請求和響應報文都需要經過Director Server。
-
支援埠對映
- 高負載場景中,Director Server壓力比較大,易成為效能瓶頸。
2. LVS-DR模式
(1) LVS-DR原理
Director Server作為群集的訪問入口,但不作為閘道器使用,後端伺服器池中的Real Server與Director Server在同一個物理網路中,傳送給客戶機的資料包不需要經過Director Server。為了響應對整個群集的訪問,DS與RS都需要配置有VIP地址。
資料包流向分析
-
使用者傳送請求到Director Server,請求的資料報文(源IP是CIP,目標IP是VIP)到達核心空間。
- 由於DS和RS在同一個網路中,所以是通過二層資料鏈路層來傳輸。
- 核心空間判斷資料包的目標IP是本機IP,此時IPVS比對資料包請求的服務是否為叢集服務,若是,重新封裝資料包,修改源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址,源IP地址與目標IP地址沒有改變,然後將資料包傳送給Real Server.
- RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文,重新封裝報文(源IP地址為VIP,目標IP為CIP),將響應報文通過lo介面傳送給eth0網絡卡然後向外發出。
- RS直接將響應報文傳送到客戶端。
(2) LVS-DR模型的特點
- RS和DS必須在同一個物理網路中。
- RS可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過網際網路對RIP進行直接訪問。
- 所有的請求報文經由Director。 Server,但響應報文必須不能經過Director Server。
- RS的閘道器絕不允許指向DIP(不允許資料包經過director)。
- RS上的lo介面配置VIP的IP地址。
LVS-DR模式需要注意的是:
保證前端路由將目標地址為VIP報文統統發給Director Server,而不是RS。
解決方案是:修改RS上核心引數(arp_ignore和arp_announce)將RS上的VIP配置在lo介面的別名上,並限制其不能響應對VIP地址解析請求。
-
arp_ignore=1表示系統只響應目的IP為本地IP的ARP請求。
- arp_announce=2表示系統不使用IP包的源地址來設定ARP請求的源地址,而選擇傳送介面的IP地址。
五、LVS的負載排程演算法
最常用的有四種;輪詢(rr)、加權輪詢(wrr)、最少連線(lc)和加權最少連線(wlc)。
- 輪詢(rr):將收到的訪問請求按照順序輪流排程到不同的伺服器上,不管後端真實伺服器的實際連線數和系統負載。
- 加權輪詢(wrr):給RS設定權重,權重越高,那麼分發的請求數越多,權重的取值範圍0–100。根據每臺伺服器的效能,給每臺伺服器新增權值,如果RS1的權值為1,RS2的權值為2,那麼排程到RS2的請求會是RS1的2倍。權值越高的伺服器,處理的請求越多。這種演算法是對rr演算法的一種優化和補充。
- 最少連線(lc):根據後端RS的連線數來決定把請求分發給誰,比RS1連線數比RS2連線數少,那麼請求就優先發給RS1。
- 加權最少連線(wlc):根據後端RS的權重和連線數來決定把請求分發給誰,權重較高,連線數少的RS會優先處理請求。
六、LVS的共享儲存伺服器
為後端真實伺服器提供穩定、一致的檔案存取服務,在Linux/Unix環境中,共享儲存可以使用NAS裝置或者提供NFS(網路檔案系統)共享服務的專用伺服器。一般放在私有網路中。
LVS的NAT模式案例部署詳細請看 LVS負載均衡之LVS-NAT搭建Web群集
LVS的DR模式案例部署詳細請看 LVS負載均衡之LVS-DR搭建Web群集與LVS結合Keepalived搭建高可用Web群集
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2018-11/155542.htm