LVS 負載均衡原理

一 簡介


 

負載均衡集羣是 Load Balance 集羣。是一種將網絡上的訪問流量分佈於各個節點,以降低服務器壓力,更好的向客戶端提供服務的一種方式。常用開源負載均衡軟件有Nginx、LVS、Haproxy(ngnix和haproxy是七層負載均衡,LVS是四層負載均衡);商業的硬件負載均衡設備F5、Netscale。

四層就是基於IP和端口的負載均衡,七層就是基於URL等應用信息的負載均衡。所以簡單的說四層負載均衡就是通過IP和端口接收請求再分發至真實的服務器,七層是通過URL或主機名接收請求,然後分發至真實的服務器。

二.LVS的實現原理

lvs的原理其實就是利用了Iptables的功能。瞭解防火牆的都知道四表五鏈。防火牆不僅僅有放火的功能還有轉發,地址僞裝,限流等等功能。

lvs實現原理

(1)首先,客戶端向調度器(Director Server)發起一個請求,調度器將這個請求發送至內核

(2)PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈。

(3)當請求達到INPUT鏈上,調度器判斷報文中的目標端口來確定這個訪問是不是要訪問集羣服務(因爲還有可能只是ssh想單純的遠程登錄主機這個主機),如果是訪問的集羣服務,那麼就會強制修改這個包的目標IP

(4)POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端服務器,那麼此時通過選路,將數據包最終發送給後端的服務器

五.LVS的工作原理

LVS 的工作模式分爲4中分別是 NAT,DR,TUN,FULL-NAT。其中做個比較,由於工作原理的關係的,NAT的配置最爲簡單,但是NAT對調度器的壓力太大了,導致其效率最低,DR和TUN的工作原理差不多,但是DR中,所有主機必須處於同一個物理環境中,而在TUN中,所有主機可以分佈在不同的位置,服務器一個在紐約,一個在深圳。最多應用的是FULL-NAT。

其中的專業術語

1. DS:Director Server。指的是前端負載均衡器。
2. RS:Real Server。後端真實的工作服務器。
3. VIP:向外部直接面向用戶請求,作爲用戶請求的目標的IP地址。
4. DIP:Director Server IP,主要用於和內部主機通訊的IP地址。
5. RIP:Real Server IP,後端服務器的IP地址。
6. CIP:Client IP,訪問客戶端的IP地址。

 

    1.NAT模式

nat模式

客戶發出請求,發送請求給鏈接調度器的VIP,調度器將請求報文中的目標Ip地址改爲RIP。這樣服務器RealServer將請求的內容發給調度器,調度器再將報文中的源IP地址改爲VIP。

(1)當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
(2)PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(3) IPVS比對數據包請求的服務是否爲集羣服務,若是,修改數據包的目標IP地址爲後端服務器IP,然後將數據包發至POSTROUTING鏈。 此時報文的源IP爲CIP,目標IP爲RIP
(4) POSTROUTING鏈通過選路,將數據包發送給Real Server
(5) Real Server比對發現目標爲自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP爲RIP,目標IP爲CIP
(6) Director Server在響應客戶端前,此時會將源IP地址修改爲自己的VIP地址,然後響應給客戶端。 此時報文的源IP爲VIP,目標IP爲CIP

    

 Nat模型的特點

1.很好配置,原理簡單易懂

2.由於調度器的工作量太大,很容易成爲整個集羣系統的瓶頸。

3.RS應該使用私有地址,RS的網關必須指向DIP

4.支持端口映射

 

   2.DR模式

   整個DR模式都是停留在第二層的數據鏈路層。直接修改MAC。實現報文的轉發。

                           

                                                                                                  dr模式

(1) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
(2) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(3) IPVS比對數據包請求的服務是否爲集羣服務,若是,將請求報文中的源MAC地址修改爲DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然後將數據包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址爲DIP的MAC地址,目標MAC地址爲RIP的MAC地址
(4) 由於DS和RS在同一個網絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址爲RIP的MAC地址,那麼此時數據包將會發至Real Server。
(5) RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文通過lo接口傳送給eth0網卡然後向外發出。 此時的源IP地址爲VIP,目標IP爲CIP
(6) 響應報文最終送達至客戶端

LVS-DR的特點

1.在前端路由器做靜態地址路由綁定,將對於VIP的地址僅路由到Director Server

2.arptables:在arp的層次上實現在ARP解析時做防火牆規則,過濾RS響應ARP請求。

修改RS上內核參數(arp_ignore和arp_announce)將RS上的VIP配置在網卡接口的別名上,並限制其不能響應對VIP地址解析請求。

        3.TUN模式

和DR模式差不多,但是比DR多了一個隧道技術以支持realserver不在同一個物理環境中。就是realserver一個在北京,一個工作在上海。

在原有的IP報文外再次封裝多一層IP首部,內部IP首部(源地址爲CIP,目標IIP爲VIP),外層IP首部(源地址爲DIP,目標IP爲RIP

 

         

tun模式

(1) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP 。
(2) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(3) IPVS比對數據包請求的服務是否爲集羣服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP爲爲DIP,目標IP爲RIP。然後發至POSTROUTING鏈。 此時源IP爲DIP,目標IP爲RIP
(4) POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因爲在外層封裝多了一層IP首部,所以可以理解爲此時通過隧道傳輸)。 此時源IP爲DIP,目標IP爲RIP
(5)  RS接收到報文後發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裏面還有一層IP首部,而且目標是自己的lo接口VIP,那麼此時RS開始處理此請求,處理完成之後,通過lo接口送給eth0網卡,然後向外傳遞。 此時的源IP地址爲VIP,目標IP爲CIP
(6) 響應報文最終送達至客戶端

 

    LVS-TUN的特點

1. RIP、VIP、DIP全是公網地址

2.RS的網關不會也不可能指向DIP

3.不支持端口映射
4.RS的系統必須支持隧道

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章