注:承接上一次博客:

   由于用户发送请求和返回数据都是通过一台Director来做负载均衡的调度,节点可以根据访问量的多少,增加或减少节点即可,但在NAT 方式中,对于客户端的请求数据包Director 要修改数据包的目标地址,使请求数据可以正产到达真实机,而真实机返回数据包到达Director时,Director要做的就是修改目标地址为原本请求的客户端,也就是说所有的包必须由Direcotr来修改源地址和目标地址,所以Director  却成为了影响系统Web Server 性能的瓶颈,因此我们可以采用 DR方式,用户发送请求过来后由Director 进行调度,而返回信息时直接通过外网地址的网关返回,不在经过Director。

  

一、实验前的准备工作

(一)清除上次实验的配置

[root@Director ~]# echo "" >/etc/sysconfig/ipvsadm

[root@Director ~]# service ipvsadm restart

  

(二)网络拓扑规划: 

   注意:做DR方式必须所有的IP地址都是公网的IP,这里为了方面就用 192.168.4.0/255.255.255.0  网段模拟

 

DGW:192.168.4.254 

VIP:192.168.4.200     

DIP:192.168.4.253       

RIP:192.168.4.11           (关闭arp ,默认网关为DGW 192.168.4.254 )

RIP:192.168.4.22           (关闭arp ,默认网关为DGW 192.168.4.254 )

  

二、Director  的配置

(一)绑定虚拟IP地址

[root@Director ~]# cd/etc/sysconfig/network-scripts/

[root@Director network-scripts]# cp ifcfg-eth0{,:0}

[root@Director network-scripts]# vim ifcfg-eth0:0

DEVICE=eth0:0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.4.200

NETMASK=255.255.255.0

 

[root@Director ~]# service network restart

(二)  同上打开ip_forward

 [root@Director~]# vim /etc/sysctl.conf 

 net.ipv4.ip_forward= 1

[root@Director ~]# sysctl  -p 

 

三、Real Server 的配置

Real Server 1 

(一)设置IP地址

(二)设置默认网关为DGW 

(三)关闭arp  分别在两台web服务器上修改内核参数(当有对VIP地址做ARP请求时,WEB服务器不回应该请求)           //在后边添加

[root@Server1 ~]# vim /etc/sysctl.conf  

#LVS DR ARP=OFF 

net.ipv4.conf.lo.arp_ignore = 1            

net.ipv4.conf.lo.arp_announce = 2 

net.ipv4.conf.eth0.arp_ignore = 1 

net.ipv4.conf.eth0.arp_announce = 2 

[root@Server1 ~]#sysctl  -p 

  

(四)绑定VIP 到lo本地回环上(注意是绑定在lo上,子网掩码为四个255 )

 [root@Director~]# cd /etc/sysconfig/network-scripts/

[root@Director network-scripts]# cp ifcfg-eth0{,:0}

[root@Director network-scripts]# vim ifcfg-eth0:0

DEVICE=lo:0

IPADDR=192.168.4.200

NETMASK=255.255.255.255

NETWORK=127.0.0.0

BROADCAST=192.168.4.200

ONBOOT=yes

NAME=loopback

 

[root@Director ~]# service network restart

 

Real Server 2 (设置同上)

  此处通过scp拷贝实现绑定VIP 到lo本地回环上,但在Server2上要重新启动网卡服务

 [root@svrnetwork-scripts]# scp ./ifcfg-lo:0 \

> 192.168.4.22:/etc/sysconfig/network-scripts/

(设置完毕后,测看是否成功) 

[root@Server2 ~]# ifconfig  

eth0     Link encap:Ethernet  HWaddr00:0C:29:C0:87:BC 

         inet addr:192.168.4.22 Bcast:192.168.4.255 Mask:255.255.255.0

         inet6 addr: fe80::20c:29ff:fec0:87bc/64 Scope:Link

          UPBROADCAST RUNNING MULTICAST MTU:1500  Metric:1

          RXpackets:8466 errors:0 dropped:0 overruns:0 frame:0

          TXpackets:3877 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RXbytes:623345 (608.7 KiB)  TX bytes:598603(584.5 KiB)

......

lo:0     Link encap:Local Loopback 

         inet addr:192.168.4.200 Mask:255.255.255.255

          UPLOOPBACK RUNNING  MTU:16436  Metric:1

  

[root@Server2 ~]# route -n

Kernel IP routing table

Destination    Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.4.0    0.0.0.0         255.255.255.0   U    0      0        0 eth0

169.254.0.0    0.0.0.0         255.255.0.0     U    1002   0        0 eth0

0.0.0.0        192.168.4.254   0.0.0.0         UG   0      0        0 eth0

 

四、Director  上的部署和测试   设置防火墙规则(PREROUTING)路由选择之前处理

[root@director ~]# iptables -t mangle  -A PREROUTING -d 192.168.4.200 -p tcp --dport 80 -j MARK  --set-mark 1

[root@director ~]# iptables  -t mangle -A PREROUTING  -d 192.168.4.200 -ptcp --dport 443 -j MARK --set-mark 1          //https

[root@director ~]# service iptables save

[root@Director ~]# service iptables restart

(加上端口亲缘性的绑定,解决网上购物等网站的应用)

 

[root@director ~]# ipvsadm -A -f 1 -s wrr -p 3600

[root@director ~]# ipvsadm -a -f 1 -r 192.168.4.11-w 10  -g 

[root@director ~]# ipvsadm -a -f 1 -r 192.168.4.22-w 20  -g 

[root@director ~]# service ipvsadm save

[root@director ~]# service ipvsadm restart

   注:-f 1 指说明是经过防火墙的标记过的类型;

       -g 表示直接路由

   由于我们使用的是静态的网页,而且很简单,测试的结果不是很明显,在这里就不做对比了

[root@localhost ~]# elinks --dump http://192.168.4.200

                          Server1

[root@localhost ~]# elinks --dump http://192.168.4.200

                          Server2

[root@localhost ~]# ab -n 1000 -c 200http://192.168.4.200 

[root@localhost ~]# watch  -n 1 ipvsadm -L -n --stats 

   说明:单纯的LVS 集群只是解决了负载均衡的问题,但假若其中某台真实机down了,或者分发器down了都会造成系统的不可用性,所有要加入HA的功能,高可用性集群,在以后的实验中会做到.