1. 程式人生 > >初識LVS(一)——LVS介紹和LVS的NAT工作模式

初識LVS(一)——LVS介紹和LVS的NAT工作模式

lvs;nat

LVS介紹

集群按照類型劃分可以分為:LB負載均衡型;HA高可用型;HP高性能型。LVS(linux virtual machine)是一款國人編寫用於LB負載均衡型被收錄進Linux內核的工具。LVS由ipvs和ipvsadmin組成,ipvs工作在netfilter框架上,而ipvsadm則是使用者在用戶空間的命令行工具,通過調用ipvs的API管理集群服務。LVS支持TCP、UDP、AH, EST, AH_EST, SCTP等諸多協議,與haproxy(haproxy也可以以mod tcp模式工作在傳輸層)和nginx工作在應用層的工具不同,LVS工作在內核層,所以可以突破套接字文件65535的最大數量限制。由於LVS相比以前的iptables dnat負載均衡功能有了很大的改善,LVS在被收錄進內核後使得iptables負載均衡功能不再作為重點進行開發。

準備知識

1.netfiletr是一個工作在內核空間的安全框架,在數據傳輸必經的PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD五條路徑上設置了檢查規則

技術分享

各種守護進程(服務)是工作在用戶空間對外提供服務,當接收到請求的主機就是用戶訪問的目標主機時,數據會先通過PREROUTING再經由INPUT進入到用戶空間

技術分享

當守護進程處理完用戶請求後,會通過OUTPUT和POSTROUTING將響應返還給請求者

技術分享

如果接收到請求的主機發現目標主機不是他自身,則會通過PREOUTING、FORWARD、POSTROUTING將該請求轉發出去

技術分享

2.LVS和iptables在很大程度上相互間不兼容,所以在使用LVS的時候請確保iptables服務處於關閉狀態

LVS的NAT模式介紹

LVS在負載均衡架構中充當一個調度器(director)的角色,所有客戶端訪問的地址指向為LVS的公網IP地址,它再將接收到的請求根據算法分配給後端的服務器,整個架構為:

技術分享

假設用戶端的IP為CIP,LVS公網地址為VIP,內網服務器地址為RIP,LVS通過DIP與RIP進行通信,其中DIP和RIP為內網地址。用戶請求數據流的軌跡為:

技術分享

當用戶發起一個請求時,請求從VIP接口流入,此時數據源地址是CIP;目標地址是VIP(步驟1),LVS接收到請求後拆掉mac地址封裝後看到目標IP地址就是自己,按照正常流程會通過INPUT轉入用戶空間(步驟2),但此時工作在INPUT鏈上的LVS會強行將數據轉到POSTROUTING上(步驟3),並根據LVS的算法選擇後端具體的服務器,以選擇服務器1為例,通過DNAT後轉發給服務器1(步驟4),此時源地址CIP,目標地址變成了RIP1。

服務器回復用戶數據流的軌跡為:

技術分享

當服務器1響應用戶的請求時,數據報文中源地址為RIP1;目標地址為CIP(步驟1),服務器1根據自身掩碼和CIP地址做與運算後得知CIP與自己不在同一網段,於是將請求轉交給網關處理,所以服務器1的網關要指向DIP。LVS負載均衡器接收到請求後發現目標地址並不是自己,於是經過FORWARD鏈進行轉發,此時要求LVS負載均衡器開啟核心轉發功能,再經過SNAT轉換後源地址改為VIP目標地址為CIP(步驟2),交還客戶端。

總結

LVS-NAT模式下數據流路徑:

請求時數據流的路徑:PREROUTING-->INPUT-->POSTRONTING

響應時數據流的路徑:PREROUTING-->FORWARD-->POSTROUTING

LVS-NAT特點:

1.請求和響應報文都要經由director轉發;有些負載的場景中(如視頻網站)director可能會成為系統瓶頸

2.由於請求和響應報文都需要經過directory,所以支持端口映射

3.RS應該和DIP應該使用私網地址,且RS的網關要指向DIP

4.RS可以使用任意OS

5.LVS在NAT模式,做單邊地址轉換,收請求時做DNAT目標地址轉換,響應請求時做SNAT源地址轉換

6.director需要開啟核心轉發功能

操作步驟

網絡拓撲

網絡結構如下圖所示:

技術分享

LVS負載均衡器和web服務器系統版本均為CentOS6.8,LVS負載均衡器有2張網卡,安裝ipvsadm作為director,web服務器安裝httpd提供頁面服務,此處便於演示效果讓2臺web服務器頁面不一致,安裝步驟省卻。

LVS NAT模式配置步驟

1.使用sysctl命令開啟director的核心轉發功能

技術分享

或者在/etc/sysctl.conf配置文件中修改

技術分享

2.確認核心轉發功能起開啟

技術分享

3.指定LVS的director服務器,並選擇調度模式;指定realserver服務器並設置數據轉發類型,如果想做端口映射RIP後面可以跟轉發的端口號

技術分享

4.查看設置是否生效

技術分享

5.保存ipvsadm當前配置,指定一個保存文件,便於清理後從該文件恢復配置

技術分享

6.確認web服務器的網關指向DIP

技術分享

7.在客戶端使用瀏覽器訪問172.16.20.10後多刷新幾次,驗證效果,至此操作完成

技術分享



本文出自 “兔樣兔森破” 博客,請務必保留此出處http://arkling.blog.51cto.com/2844506/1958779

初識LVS(一)——LVS介紹和LVS的NAT工作模式