LVS_NAT实现负载均衡
簡介:?
? ? ? ? 基于NAT機制實現。當用戶請求到達director之后,director將請求報文的目標地址(即VIP)改成選定的realserver地址,同時將報文的目標端口也改成選定的realserver的相應端口,最后將報文請求發送到指定的realserver;在服務器端得到數據后,realserver將數據返給director,而director將報文的源地址和源端口改成VIP和相應端口,然后把數據發送給用戶,完成整個負載調度過程。??
Client->VS(兩個網卡,一個內網,一個交換機與RS互通,DNAT目標地址轉換)->RS(SNAT源地址轉換)->VS->Client
特點:
1. LVS-DR模型的特性
特點:保證前端路由將目標地址為VIP報文統統發給負載均衡器,而不是真實服務器
真實服務器可以使用私有地址,也可以是公網地址,如果使用公網地址,此時可以通過互聯網對真實服務器IP進行直接訪問
真實服務器跟負載均衡器必須在同一個局域網中
所有的請求報文經由負載均衡器,但響應報文必須不能進過負載均衡器
不支持地址轉換,也不支持端口映射
真實服務器可以是大多數常見的操作系統
真實服務器的網關絕不允許指向負載均衡IP(因為我們不允許他經過director)
真實服務器上的lo接口配置VIP的IP地址
缺陷:真實服務器和負載均衡器必須在同一機房中
?
2.LVS-NAT模型的特性
真實服務器應該使用私有地址,且網關必須指向負載均衡IP
負載均衡IP和真實服務器IP必須在同一個網段內
請求和響應報文都需要經過負載均衡器,高負載場景中,負載均衡器容易成為性能瓶頸
支持端口映射
真實服務器可以使用任意操作系統
缺陷:對負載均衡器壓力會比較大,請求和響應都需經過負載均衡器
?
3.LVS-Tun模型特性
真實服務器IP、VIP、負載均衡器IP全是公網地址
真實服務器的網關不會也不可能指向負載均衡器IP
所有的請求報文經由負載均衡器,但響應報文必須不能進過負載均衡器
不支持端口映射
真實服務器的系統必須支持隧道
?
LVS_NAT實驗環境:
rhel6.5
test1(VS): 172.25.1.11 vip: 172.25.254.100
test2(RS): 172.25.1.12 網關:172.25.1.11
test3(RS): 172.25.1.13 網關:172.25.1.11
VS:
給test1添加網卡并添加vip:172.25.254.100
[root@test1 ~]# cd /etc/sysconfig/network-scripts/
[root@test1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@test1 network-scripts]# vim ifcfg-eth1??????? //當臨時添加ip時需要執行ip link set up eth1來激活eth1
[root@test1 network-scripts]# /etc/init.d/network restart
[root@test1 ~]# yum install -y ipvsadm
[root@test1 ~]# /etc/init.d/iptables stop
[root@test1 ~]# ipvsadm -C
[root@test1 ~]# ipvsadm -A -t 172.25.254.100:80 -s wrr??????? //wrr加權輪叫調度算法
[root@test1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.1.12 -m -w 1 ?
[root@test1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.1.13 -m -w 1 ???? //? -m表示nat模式,-w設置權重
[root@test1 ~]# ipvsadm -ln
???
[root@test1 ~]#???vim /etc/sysctl.conf???? //永久設置,打開ip轉發功能;若臨時開啟,用sysctl -w net.ipv4.ip_forward=1
sysctl -a |grep ip_forward????????? //查看是否為1
RS:
[root@test2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0????????? //添加網關,指向調度器
GATEWAY=172.25.1.11
//臨時添加用route add default gw 172.25.1.11
[root@test2 ~]# cat /var/www/html/index.html
[root@test2 ~]# /etc/init.d/httpd start
test3:?????? 進行相同的步驟添加網關172.25.1.11
[root@test3 ~]# cat /var/www/html/index.html
[root@test3 ~]# /etc/init.d/httpd start
此時進行客戶端測試:
實現了輪詢,即負載均衡。
但若其中一個RS出現故障,則會出現以下問題:
[root@test2 ~]# /etc/init.d/httpd stop
此時:
總結
以上是生活随笔為你收集整理的LVS_NAT实现负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: haproxy实现高可用及负载均衡
- 下一篇: redis主从复制、高可用和集群