天天看點

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

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設定:

[root@lvs network-scripts]# pwd

/etc/sysconfig/network-scripts

[root@lvs 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).不同網絡:

[root@lvs network-scripts]#ifconfig eth0:0 172.16.31.54/16 up

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

[root@lvs network-scripts]#ifconfig eth0:0 172.16.31.54 netmask 255.255.255.255 broadcast 172.16.31.54 up

配置路由:

[root@lvs network-scripts]# route add -host 172.16.31.54 dev eth0:0

2.Real Server設定:

RS1的網卡的ip配置:

[root@node1 network-scripts]# pwd

[root@node1 network-scripts]# cat ifcfg-eth0

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

IPADDR=192.168.0.31

需要指定網關:

[root@node1 network-scripts]#route add default gw 192.168.0.254

3.在RS上配置arptables:

[root@node1 network-scripts]#echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

[root@node1 network-scripts]#echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

[root@node1 network-scripts]#echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore

[root@node1 network-scripts]#echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore

在RS上設定VIP位址:

[root@node1 network-scripts]#ifconfig lo:0 172.16.31.54 netmask 255.255.255.255 broadcast 172.16.31.54 up

在RS上添加路由:

[root@node1 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服務

#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上檢視一下連接配接狀态:

[root@lvs ~]# ipvsadm -A -t 172.16.31.54:80 -s rr

[root@lvs ~]# ipvsadm -a -t 172.16.31.54:80 -r 192.168.0.31 -g

[root@lvs ~]# ipvsadm -a -t 172.16.31.54:80 -r 192.168.0.131 -g

[root@lvs ~]# ipvsadm -L -n

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

本文轉自 dengaosky 51CTO部落格,原文連結:http://blog.51cto.com/dengaosky/1964534,如需轉載請自行聯系原作者

繼續閱讀