初识LVS(一)——LVS介绍和LVS的NAT工作模式
LVS介紹
集群按照類型劃分可以分為:LB負(fù)載均衡型;HA高可用型;HP高性能型。LVS(linux virtual machine)是一款國人編寫用于LB負(fù)載均衡型被收錄進(jìn)Linux內(nèi)核的工具。LVS由ipvs和ipvsadmin組成,ipvs工作在netfilter框架上,而ipvsadm則是使用者在用戶空間的命令行工具,通過調(diào)用ipvs的API管理集群服務(wù)。LVS支持TCP、UDP、AH, EST, AH_EST, SCTP等諸多協(xié)議,與haproxy(haproxy也可以以mod tcp模式工作在傳輸層)和nginx工作在應(yīng)用層的工具不同,LVS工作在內(nèi)核層,所以可以突破套接字文件65535的最大數(shù)量限制。由于LVS相比以前的iptables dnat負(fù)載均衡功能有了很大的改善,LVS在被收錄進(jìn)內(nèi)核后使得iptables負(fù)載均衡功能不再作為重點(diǎn)進(jìn)行開發(fā)。
準(zhǔn)備知識(shí)
1.netfiletr是一個(gè)工作在內(nèi)核空間的安全框架,在數(shù)據(jù)傳輸必經(jīng)的PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD五條路徑上設(shè)置了檢查規(guī)則
各種守護(hù)進(jìn)程(服務(wù))是工作在用戶空間對(duì)外提供服務(wù),當(dāng)接收到請(qǐng)求的主機(jī)就是用戶訪問的目標(biāo)主機(jī)時(shí),數(shù)據(jù)會(huì)先通過PREROUTING再經(jīng)由INPUT進(jìn)入到用戶空間
當(dāng)守護(hù)進(jìn)程處理完用戶請(qǐng)求后,會(huì)通過OUTPUT和POSTROUTING將響應(yīng)返還給請(qǐng)求者
如果接收到請(qǐng)求的主機(jī)發(fā)現(xiàn)目標(biāo)主機(jī)不是他自身,則會(huì)通過PREOUTING、FORWARD、POSTROUTING將該請(qǐng)求轉(zhuǎn)發(fā)出去
2.LVS和iptables在很大程度上相互間不兼容,所以在使用LVS的時(shí)候請(qǐng)確保iptables服務(wù)處于關(guān)閉狀態(tài)
LVS的NAT模式介紹
LVS在負(fù)載均衡架構(gòu)中充當(dāng)一個(gè)調(diào)度器(director)的角色,所有客戶端訪問的地址指向?yàn)長(zhǎng)VS的公網(wǎng)IP地址,它再將接收到的請(qǐng)求根據(jù)算法分配給后端的服務(wù)器,整個(gè)架構(gòu)為:
假設(shè)用戶端的IP為CIP,LVS公網(wǎng)地址為VIP,內(nèi)網(wǎng)服務(wù)器地址為RIP,LVS通過DIP與RIP進(jìn)行通信,其中DIP和RIP為內(nèi)網(wǎng)地址。用戶請(qǐng)求數(shù)據(jù)流的軌跡為:
當(dāng)用戶發(fā)起一個(gè)請(qǐng)求時(shí),請(qǐng)求從VIP接口流入,此時(shí)數(shù)據(jù)源地址是CIP;目標(biāo)地址是VIP(步驟1),LVS接收到請(qǐng)求后拆掉mac地址封裝后看到目標(biāo)IP地址就是自己,按照正常流程會(huì)通過INPUT轉(zhuǎn)入用戶空間(步驟2),但此時(shí)工作在INPUT鏈上的LVS會(huì)強(qiáng)行將數(shù)據(jù)轉(zhuǎn)到POSTROUTING上(步驟3),并根據(jù)LVS的算法選擇后端具體的服務(wù)器,以選擇服務(wù)器1為例,通過DNAT后轉(zhuǎn)發(fā)給服務(wù)器1(步驟4),此時(shí)源地址CIP,目標(biāo)地址變成了RIP1。
服務(wù)器回復(fù)用戶數(shù)據(jù)流的軌跡為:
當(dāng)服務(wù)器1響應(yīng)用戶的請(qǐng)求時(shí),數(shù)據(jù)報(bào)文中源地址為RIP1;目標(biāo)地址為CIP(步驟1),服務(wù)器1根據(jù)自身掩碼和CIP地址做與運(yùn)算后得知CIP與自己不在同一網(wǎng)段,于是將請(qǐng)求轉(zhuǎn)交給網(wǎng)關(guān)處理,所以服務(wù)器1的網(wǎng)關(guān)要指向DIP。LVS負(fù)載均衡器接收到請(qǐng)求后發(fā)現(xiàn)目標(biāo)地址并不是自己,于是經(jīng)過FORWARD鏈進(jìn)行轉(zhuǎn)發(fā),此時(shí)要求LVS負(fù)載均衡器開啟核心轉(zhuǎn)發(fā)功能,再經(jīng)過SNAT轉(zhuǎn)換后源地址改為VIP目標(biāo)地址為CIP(步驟2),交還客戶端。
總結(jié)
LVS-NAT模式下數(shù)據(jù)流路徑:
請(qǐng)求時(shí)數(shù)據(jù)流的路徑:PREROUTING-->INPUT-->POSTRONTING
響應(yīng)時(shí)數(shù)據(jù)流的路徑:PREROUTING-->FORWARD-->POSTROUTING
LVS-NAT特點(diǎn):
1.請(qǐng)求和響應(yīng)報(bào)文都要經(jīng)由director轉(zhuǎn)發(fā);有些負(fù)載的場(chǎng)景中(如視頻網(wǎng)站)director可能會(huì)成為系統(tǒng)瓶頸
2.由于請(qǐng)求和響應(yīng)報(bào)文都需要經(jīng)過directory,所以支持端口映射
3.RS應(yīng)該和DIP應(yīng)該使用私網(wǎng)地址,且RS的網(wǎng)關(guān)要指向DIP
4.RS可以使用任意OS
5.LVS在NAT模式,做單邊地址轉(zhuǎn)換,收請(qǐng)求時(shí)做DNAT目標(biāo)地址轉(zhuǎn)換,響應(yīng)請(qǐng)求時(shí)做SNAT源地址轉(zhuǎn)換
6.director需要開啟核心轉(zhuǎn)發(fā)功能
操作步驟
網(wǎng)絡(luò)拓?fù)?/strong>
網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:
LVS負(fù)載均衡器和web服務(wù)器系統(tǒng)版本均為CentOS6.8,LVS負(fù)載均衡器有2張網(wǎng)卡,安裝ipvsadm作為director,web服務(wù)器安裝httpd提供頁面服務(wù),此處便于演示效果讓2臺(tái)web服務(wù)器頁面不一致,安裝步驟省卻。
LVS NAT模式配置步驟
1.使用sysctl命令開啟director的核心轉(zhuǎn)發(fā)功能
或者在/etc/sysctl.conf配置文件中修改
2.確認(rèn)核心轉(zhuǎn)發(fā)功能起開啟
3.指定LVS的director服務(wù)器,并選擇調(diào)度模式;指定realserver服務(wù)器并設(shè)置數(shù)據(jù)轉(zhuǎn)發(fā)類型,如果想做端口映射RIP后面可以跟轉(zhuǎn)發(fā)的端口號(hào)
4.查看設(shè)置是否生效
5.保存ipvsadm當(dāng)前配置,指定一個(gè)保存文件,便于清理后從該文件恢復(fù)配置
6.確認(rèn)web服務(wù)器的網(wǎng)關(guān)指向DIP
7.在客戶端使用瀏覽器訪問172.16.20.10后多刷新幾次,驗(yàn)證效果,至此操作完成
本文轉(zhuǎn)自 qiao645 51CTO博客,原文鏈接:http://blog.51cto.com/arkling/1958779
總結(jié)
以上是生活随笔為你收集整理的初识LVS(一)——LVS介绍和LVS的NAT工作模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate5-唯一查询和聚合查询
- 下一篇: win 7 DHCP获取不到ip的解决办