一、LVS/NAT原理
1. 當(dāng)用戶請求到達(dá)Director Server,此時(shí)請求的數(shù)據(jù)報(bào)文會先到內(nèi)核空間的PREROUTING鏈。 此時(shí)報(bào)文的源IP為CIP,目標(biāo)IP為VIP
2. PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標(biāo)IP是本機(jī),將數(shù)據(jù)包送至INPUT鏈
3.IPVS比對數(shù)據(jù)包請求的服務(wù)是否為集群服務(wù),若是,修改數(shù)據(jù)包的目標(biāo)IP地址為后端服務(wù)器IP,然后將數(shù)據(jù)包發(fā)至POSTROUTING鏈。 此時(shí)報(bào)文的源IP為CIP,目標(biāo)IP為RIP
4. POSTROUTING鏈通過選路,將數(shù)據(jù)包發(fā)送給Real Server 5. Real Server比對發(fā)現(xiàn)目標(biāo)為自己的IP,開始構(gòu)建響應(yīng)報(bào)文發(fā)回給Director Server。 此時(shí)報(bào)文的源IP為RIP,目標(biāo)IP為CIP 6. Director Server在響應(yīng)客戶端前,此時(shí)會將源IP地址修改為自己的VIP地址,然后響應(yīng)給客戶端。 此時(shí)報(bào)文的源IP為
Virtual Server via Network Address Translation(VS/NAT)
通過網(wǎng)絡(luò)地址轉(zhuǎn)換,調(diào)度器重寫請求報(bào)文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請求分派給后端的真實(shí)服務(wù)器;真實(shí)服務(wù)器的響應(yīng)報(bào)文通過調(diào)度器時(shí),報(bào)文的源地址被重寫,再返回給客戶,完成整個負(fù)載調(diào)度過程。
二、NAT模式優(yōu)缺點(diǎn)
1、NAT技術(shù)將請求的報(bào)文和響應(yīng)的報(bào)文都需要通過LB進(jìn)行地址改寫,因此網(wǎng)站訪問量比較大的時(shí)候LB負(fù)載均衡調(diào)度器有比較大的瓶頸,一般要求最多之能10-20臺節(jié)點(diǎn)
2、只需要在LB上配置一個公網(wǎng)IP地址就可以了。
3、每臺內(nèi)部的節(jié)點(diǎn)服務(wù)器的網(wǎng)關(guān)地址必須是調(diào)度器LB的內(nèi)網(wǎng)地址。
4、NAT模式支持對IP地址和端口進(jìn)行轉(zhuǎn)換。即用戶請求的端口和真實(shí)服務(wù)器的端口可以不一致。
三、Lvs-NAT模式流程
NAT模型:地址轉(zhuǎn)換類型,主要是做地址轉(zhuǎn)換,類似于iptables的DNAT類型,它通過多目標(biāo)地址轉(zhuǎn)換,來實(shí)現(xiàn)負(fù)載均衡, 一個Director最多負(fù)載提供10個Real Server主機(jī)
1、client發(fā)送request到LVS的VIP上,VIP選擇一個Real-server,并記錄連接信息到hash表中,然后修改client 的request的目的IP地址為Real-server的地址,將請求發(fā)給Real-server;
2、 Real-server收到request包后,發(fā)現(xiàn)目的IP是自己的IP,于是處理請求,然后發(fā)送reply給LVS;
3、LVS收到reply包后,修改reply包的的源地址為VIP,發(fā)送給client;
4、從client來的屬于本次連接的包,查hash表,然后發(fā)給對應(yīng)的Real-server。
5、 當(dāng)client發(fā)送完畢,此次連接結(jié)束或者連接超時(shí),那么LVS自動從hash表中刪除此條記錄。
四、LVS-NAT模式下的負(fù)載均衡
Load Balance 雙網(wǎng)卡:
eth0:172.25.56.1(對外)
eth4:192.168.56.1(對內(nèi))
Virtual IP: 172.25.56.1
gateway: 192.168.56.1
server2(RS): 192.168.56.2
server3(RS): 192.168.56.3
1、在server1中:
1)配置網(wǎng)絡(luò)
ip link set up eth1 #激活eth4網(wǎng)卡
ip addr add 192.168.56.1/24 dev eth4 #添加網(wǎng)絡(luò)
ip addr #查看網(wǎng)絡(luò)
2)配置yum倉庫
vim /etc/yum.repos.d/rhel-source.repo
添加:
[LoadBalancer]
name=LoadBalancer
baseurl=https://172.25.56.250/rhel6.5/LoadBalancer
gpgcheck=0
3)打開內(nèi)部路由功能
sysctl -a | grep ip_forward
sysctl -w net.ipv4.ip_forward=1
4)安裝ipvsadm
yum install ipvsadm -y
/etc/init.d/ipvsadm start #開啟服務(wù)
ipvsadm -C #清空策略
ipvsadm -A -t 172.25.56.1:80 -s rr
ipvsadm -a -t 172.25.56.1:80 -r 192.168.56.2:80 -m #給vip添加rip,使用NAT模式
ipvsadm -a -t 172.25.56.1:80 -r 192.168.56.3:80 -m
/etc/init.d/ipvsadm save #保存策略
ipvsadm -ln #查看策略
2、在server2中:
1)配置網(wǎng)關(guān)
route add default gw 192.168.56.1 注:NAT工作路徑源路經(jīng)返回,只需要指定網(wǎng)關(guān)即可
route -n #查看網(wǎng)關(guān)
2)安裝apache
yum install httpd -y
vim /var/www/html/index.html
server2
/etc/init.d/httpd start
3、在server3中:
1)配置網(wǎng)關(guān)
route add default gw 192.168.56.1 注:NAT工作路徑源路經(jīng)返回,只需要指定網(wǎng)關(guān)即可
route -n #查看網(wǎng)關(guān)
2)安裝apache
yum install httpd -y
vim /var/www/html/index.html
server3
/etc/init.d/httpd start
五、測試
注:物理機(jī)ip網(wǎng)段必須與eth0在同一網(wǎng)段,且不能于RS在同一網(wǎng)段,否則會不經(jīng)過網(wǎng)關(guān)直接訪問RS
在物理機(jī)中執(zhí)行 for i in {1..10};do curl 172.25.56.1;done ,出現(xiàn)輪詢即配置生效