跟VS/TUN方法相同,VS/DR利用大多數Internet服務的非對稱特色,負載調度器中只負責調度請求,而服務器直接將響應返回給客戶,能夠極大地提升整個集羣系統的吞吐量。VS/DR的體系結構如圖所示:調度器和服務器組都必須在物理上有一個網卡經過不分斷的局域網相連,如經過高速的交換機或者HUB相連。VIP地址爲調 度器和服務器組共享,調度器配置的VIP地址是對外可見的,用於接收虛擬服務的請求報文;全部的服務器把VIP地址配置在各自的Non-ARP網絡設備 上,它對外面是不可見的,只是用於處理目標地址爲VIP的網絡請求。vim
DR基本架構實現瀏覽器
環境準備:bash
設備 |
軟件環境 |
網絡環境 |
Director_server(dirdr) |
CentOS+IPVS |
rip eth0_192.168.1.121 |
vip eth0:0_192.168.1.200 |
||
real_server_a(rsa) |
CentOS |
rip eth0_192.168.1.118 |
vip lo:0_192.168.1.200 |
||
real_server_b(rsb) |
CentOS |
rip eth0_192.168.1.119 |
vip lo:0_192.168.1.200 |
操做方案:服務器
# 在dir上配置 [root@dir ~]# vim /usr/local/sbin/lvs_dr.sh #! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/sbin/ipvsadm vip=192.168.1.200 rs1=192.168.1.118 rs2=192.168.1.119 ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev eth0:0 $ipv -C $ipv -A -t $vip:80 -s rr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 [root@dir ~]# chmod a+x /usr/local/sbin/lvs_dr.sh [root@dir ~]# /bin/bash /usr/local/sbin/lvs_dr.sh [root@dir ~]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.200:80 rr -> 192.168.1.118:80 Route 1 0 0 -> 192.168.1.119:80 Route 1 0 0 [root@dir ~]# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:0C:29:55:3E:24 inet addr:192.168.1.121 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe55:3e24/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:700 errors:0 dropped:0 overruns:0 frame:0 TX packets:474 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:68287 (66.6 KiB) TX bytes:76635 (74.8 KiB) Interrupt:18 Base address:0x2000 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:55:3E:24 inet addr:192.168.1.200 Bcast:192.168.1.200 Mask:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:18 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) # 在rsa與rsb上配置 [root@rsa ~]# vim /usr/local/sbin/lvs_dr_rs.sh #! /bin/bash vip=192.168.1.200 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce [root@rsa ~]# chmod a+x /usr/local/sbin/lvs_dr_rs.sh [root@rsa ~]# /bin/bash /usr/local/sbin/lvs_dr_rs.sh [root@rsa ~]# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:0C:29:56:5C:C5 inet addr:192.168.1.118 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe56:5cc5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:549 errors:0 dropped:0 overruns:0 frame:0 TX packets:424 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:55100 (53.8 KiB) TX bytes:61251 (59.8 KiB) Interrupt:18 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:160 (160.0 b) TX bytes:160 (160.0 b) lo:0 Link encap:Local Loopback inet addr:192.168.1.200 Mask:255.255.255.255 UP LOOPBACK RUNNING MTU:65536 Metric:1
瀏覽器測試:網絡
在Linux客戶端測試效果架構
[root@client ~]# curl 192.168.1.200 This is test page,this is A. [root@client ~]# curl 192.168.1.200 This is test page,this is B. [root@client ~]# curl 192.168.1.200 This is test page,this is A. [root@client ~]# curl 192.168.1.200 This is test page,this is B. [root@client ~]# curl 192.168.1.200 This is test page,this is A. [root@client ~]# curl 192.168.1.200 This is test page,this is B.