描述LVS的工作原理

一、LVS結構

  LVS由前端的負載均衡器(Load Balancer,LB)和后端的真實服務器(Real Server,RS)群組成。RS間可通過局域網或廣域網連接。LVS的這種結構對用戶是透明的,用戶只能看見一臺作為LB的虛擬服務器(Virtual Server),而看不到提供服務的RS群。當用戶的請求發往虛擬服務器,LB根據設定的包轉發策略和負載均衡調度算法將用戶請求轉發給RS。RS再將用戶請求結果返回給用戶。
  

二、LVS內核

LVS內核.png

1.當客戶端的請求到達負載均衡器的內核空間時,首先會到達prerouting鏈。

2.當內核發現請求數據包的目的地址是本機時,將數據包送往input鏈。

3.LVS由用戶空間的ipvsadm和內核空間的ipvs組成,ipvsadm用來定義規則,ipvs利用ipvsadm定義的規則工作,ipvs工作在input鏈上,當數據包到達input鏈時,首先會被ipvs檢查,如果數據包里面的目的地址及端口沒有在規則里面,那么這條數據包將被放行至用戶空間。

4.如果數據包里面的目的地址及端口在規則里面,那么這條數據報文將被修改目的地址為事先定義好的后端服務器,并送往postrouting鏈。

5.最后經由postrouting鏈發往后端服務器。

三、LVS工作模式

1、NAT模式

LV-NAT.png

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP(客戶端IP),后面統稱為CIP),目標地址為VIP(負載均衡器前端地址,后面統稱為VIP)。

②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將客戶端請求報文的目標地址改為了后端服務器的RIP地址并將報文根據算法發送出去。

③.報文送到Real Server后,由于報文的目標地址是自己,所以會響應該請求,并將響應報文返還給LVS。

④.然后lvs將此報文的源地址修改為本機并發送給客戶端。 

在NAT模式中,RIP和DIP必須在同一個VLAN,且應該使用私有地址,Real Server的網關必須指向LVS,否則報文無法送達客戶端。

優點:集群中的物理服務器可以使用任何支持TCP/IP操作系統,只有負載均衡器需要一個合法的IP地址。

缺點:擴展性有限。當服務器節點(普通PC服務器)增長過多時,負載均衡器Director 將成為整個系統的瓶頸,因為所有的請求包和應答包的流向都經過負載均衡器。當服務器節點過多時,大量的數據包都交匯在負載均衡器那,速度就會變慢!

2、DR模式,直接路由模式

LVS-DR.png

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址為VIP。

②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將客戶端請求報文的源MAC地址改為自己DIP的MAC地址,目標MAC改為了RIP的MAC地址,并將此包發送給RS。

③.RS發現請求報文中的目的MAC是自己,就會將次報文接收下來,處理完請求報文后,將響應報文通過lo接口送給eth0網卡直接發送給客戶端。

注意:需要設置lo接口的VIP不能響應本地網絡內的arp請求(通過內核參數開關或arptables),lo接口配置別名為VIP。要求負載均衡器的網卡DIP必須與物理網卡在同一個物理網絡(同一個交換機)上。RS服務器一般都全部是linux,也可以使用其他OS。

3、TUN模式,ip隧道模式

LVS-TUN.png

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址為VIP。

②.負載均衡器收到報文后,發現請求的是在規則里面存在的地址,那么它將在客戶端請求報文的首部再封裝一層IP報文,將源地址改為DIP,目標地址改為RIP,并將此包發送給RS。

③.RS收到請求報文后,會首先拆開第一層封裝,然后發現里面還有一層IP首部的目標地址是自己lo接口上的VIP,所以會處理次請求報文,并將響應報文通過lo接口送給eth0網卡直接發送給客戶端。注意:需要設置lo接口的VIP不能在公網上出現。

VS必須是Linux,RS可以是任意支持隧道功能的OS。

4、FULLNAT模式

LV-FULLNAT.png

①.客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址為VIP。

②.負載均衡器收到報文后,同時修改報文的源IP和目標IP。源IP改為DIP,目標IP改為RIP。

③.RS收到請求報文后,發現源IP是DIP,目標IP是自己,會響應該請求,并將響應報文返還給DIP。 

請求和響應報文都經過Director,支持端口映射。VS必須是linux,RS可以是任意OS。

原創文章,作者:N22-深圳-曉志,如若轉載,請注明出處:http://www.www58058.com/40719

(0)
N22-深圳-曉志N22-深圳-曉志
上一篇 2016-08-29 09:00
下一篇 2016-08-29 09:01

相關推薦

  • JVM性能調優監控工具jps、jstack、jmap、jhat、jstat、hprof使用詳解

    摘要: JDK本身提供了很多方便的JVM性能調優監控工具,除了集成式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起拋磚引玉之用,讓大家能開始對JVM性能調優的常用工具有所了解。     現實企業級Java開發中,有時候我們會碰到下面這些問題: Out…

    2017-08-17
  • 文件查找作業

    1、查找/var目錄下屬主為root,且屬組為mail的所有文件 [root@wzc ~]# find /var/ -user root -a -group mail /var/spool/mail /var/spool/mail/root 2、查找/var目錄下不屬于root、…

    Linux干貨 2016-08-15
  • 集中練習6-bash腳本

    集中練習6-bash腳本

    Linux干貨 2017-12-05
  • 第六周作業

    請詳細總結vim的使用 模式轉換 編輯模式:默認模式     編輯模式–>輸入模式         i:insert,在光標所在處插入         …

    Linux干貨 2017-02-15
  • Linux基礎知識

    命令的語法通用格式: # COMMAND OPTIONS ARGUMENTS COMMAND:  發起一命令:請求內核將某個二進制程序運行為一個進程; 程序 –> 進程 靜態 –> 動態(有生命周期) 命令本身是一個可執行的程序文件:二進制格式的文件,有可能會調用共享庫文件; 多數系統程序文件都存放在:/bin,…

    Linux干貨 2016-10-29
  • Linux文件查找及壓縮

    Linux文件查找(locate & find) locate     查詢系統上預建的文件索引數據庫(速度快,但更新不實時)     /var/lib/mlocate/mlocate.db     依賴于事先構建的索引 &nbsp…

    Linux干貨 2016-08-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-30 12:38

    圖文并茂,原理解析的很明了,加油

欧美性久久久久