1. 程式人生 > >LVS-DR負載均衡模型的RIP和VIP在不同網絡的實現

LVS-DR負載均衡模型的RIP和VIP在不同網絡的實現

lvs ipvsadm lvs-dr



LVS-DR模型架構圖解:

(172.16.0.1/16,192.168.0.254/24,192.168.1.254/24)

Router

LVS Server DIP:192.168.0.30/24 VIP:172.16.31.54/18

客戶端IP:192.168.1.31/24 SW WEB1:Real Server1 DIP:192.168.0.31/24 VIP:172.16.31.54/18

WEB2:Real Server2 DIP:192.168.0.131/24 VIP:172.16.31.54/18

客戶端和三臺服務器分別連接SW,SW連接Router


一.實驗環境介紹

路由器:存在多個網絡 172.16.0.1,192.168.0.254,192.168.1.254

交換機:連接不同網絡的主機

客戶端:Windos XP;客戶端IP地址為:192.168.1.31/24

LVS:Director 負載均衡服務器,其DIP和VIP在不同網段;

RS:Real Server;後端web服務器;其RIP和VIP在不同網段;

二.地址規劃

VIP使用172.16.0.0/16網絡

RIP使用192.168.0.0/24網絡

1.Real Server的RIP的規劃:

RS1:192.168.0.31/24

RS2:192.168.0.131/24

2.Director的LVS Server的地址規劃:

DIP:192.168.0.130/24

VIP:172.16.31.54/16

3.客戶端IP規劃:

172.16.31.31/16或者192.168.1.31/24

RS響應客戶端請求報文,需要將網關指向192.168.0.254/24,由192.168.0.254轉發其響應報文到172.16.31.0/16或者192.168.1.0/24這個網絡中來;

更真實的設計:將客戶端的IP地址設置成192.168.1.31/24來實現


三.DR模型實現負載均衡的工作原理

上面說了NAT模型的實現方式,那麽NAT模型有個缺陷,因為進出的每個數據包都要經過Director Server,當集群系統負載過大的時候Director Server將會成為整個集群系統的瓶頸,那麽DR模型就避免了這樣的情況發生,DR模型在只有請求的時候才會經過Director Server, 回應的數據包由Real Server 直接響應用戶不需要經過Director Server,其實三種模型中最常用的也就是DR模型了,下面來說DR模型具體是怎麽實現負載均衡的,根據上圖,

1.首先客戶端用戶用CIP請求VIP;

2.根據上圖可以看到,不管是Director Server還是Real Server上都需要配置VIP,那麽當用戶請求到達我們的集群網絡的前端路由器的時候,請求數據包的源地址為CIP目標地址為VIP,此時路由器會發廣播問誰是VIP,那麽我們集群中所有的節點都配置有VIP,此時誰先響應路由器那麽路由器就會將用戶請求發給誰,這樣一來我們的集群系統是不是沒有意義了,那我們可以在網關路由器上配置靜態路由指定VIP就是Director Server,或者使用一種機制不讓Real Server 接收來自網絡中的ARP地址解析請求,這樣一來用戶的請求數據包都會經過Director Servre;

3.當Director Server收到用戶的請求後根據此前設定好的調度算法結果來確定將請求負載到某臺Real Server上去,假如說此時根據調度算法的結果,會將請求負載到Real Server 1上面去,此時Director Server 會將數據幀中的目標MAC地址修改為Real Server1的MAC地址,然後再將數據幀發送出去;

4.當Real Server1 收到一個源地址為CIP目標地址為VIP的數據包時,RealServer1發現目標地址為VIP,而VIP是自己,於是接受數據包並給予處理,當Real Server1處理完請求後,會將一個源地址為VIP目標地址為CIP的數據包發出去,此時的響應請求就不會再經過Director Server了,而是直接響應給用戶;

四.架構實現

1.LVS Server配置

DIP設置:

[[email protected] network-scripts]# pwd

/etc/sysconfig/network-scripts

[[email protected] network-scripts]# cat ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static"

HWADDR="08:00:27:FF:73:49"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

IPADDR=192.168.0.130

NETMASK=255.255.255.0

GATEWAY=172.16.0.1


VIP設置:

(1).不同網絡:

[[email protected] network-scripts]#ifconfig eth0:0 172.16.31.54/16 up

(2).同一網絡的只廣播給自己;本實驗不需要設置廣播

[[email protected] network-scripts]#ifconfig eth0:0 172.16.31.54 netmask 255.255.255.255 broadcast 172.16.31.54 up

配置路由:

[[email protected] network-scripts]# route add -host 172.16.31.54 dev eth0:0

2.Real Server設置:

RS1的網卡的ip配置:


[[email protected] network-scripts]# pwd

/etc/sysconfig/network-scripts

[[email protected] network-scripts]# cat ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static"

HWADDR="08:00:27:41:D4:C9"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

IPADDR=192.168.0.31

NETMASK=255.255.255.0

GATEWAY=172.16.0.1

需要指定網關:

[[email protected] network-scripts]#route add default gw 192.168.0.254

3.在RS上配置arptables:

[[email protected] network-scripts]#echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

[[email protected] network-scripts]#echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

[[email protected] network-scripts]#echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore

[[email protected] network-scripts]#echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

在RS上設置VIP地址:

[[email protected] network-scripts]#ifconfig lo:0 172.16.31.54 netmask 255.255.255.255 broadcast 172.16.31.54 up

在RS上添加路由:

[[email protected] network-scripts]#route add-host 172.16.31.54 dev lo:0

4.啟動web服務;此處安裝了LAMP架構+wordpress,可以參考我前面寫的文章,這裏就不重復了。

#service httpd start

#curl http://192.168.0.31

#curl http://172.16.100.8

5.RS2的配置:跟RS1一致的哦!

設置RIP地址:

#ifconfig eth0 192.168.0.131/24 up

#route add default gw 192.168.0.254

配置arptables:

#echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

#echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

#echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore

#echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

設置VIP地址:

#ifconfig lo:0 172.16.31.54 netmask 255.255.255.255 broadcast 172.16.31.54 up

添加路由:

#route add -host 172.16.31.54 dev lo:0

#啟動web服務

#service httpd start

#curl http://192.168.0.131

#curl http://172.16.31.54

6.LVS Server上定義集群服務:

#ipvsadm -A -t 172.16.31.54:80 -s rr

#ipvsadm –a -t 172.16.31.54:80 -r 192.168.0.31 -g

#ipvsadm –a -t 172.16.31.54:80 -r 192.168.0.131 –g

設置完成後訪問網頁測試:

http://www.stu31.com/wp/


我們在LVS上查看一下連接狀態:

[[email protected] ~]# ipvsadm -A -t 172.16.31.54:80 -s rr

[[email protected] ~]# ipvsadm -a -t 172.16.31.54:80 -r 192.168.0.31 -g

[[email protected] ~]# ipvsadm -a -t 172.16.31.54:80 -r 192.168.0.131 -g

[[email protected] ~]# ipvsadm -L -n

至此:LVS-DR模式的負載均衡實驗完成!!!


本文出自 “眼眸刻著你的微笑” 博客,請務必保留此出處http://dengaosky.blog.51cto.com/9215128/1964534

LVS-DR負載均衡模型的RIP和VIP在不同網絡的實現