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